|
From: Rene B. <re...@we...> - 2001-09-27 19:56:39
|
Alan Buxey wrote: >> np =3D __get_free_pages(GFP_ATOMIC, 1); > > > why the 1 instead of 0 ? To get 2 pages. Sure, this is not realy necessary, but the allocated=20 size should not be cause of this cache problem. >> cache_push((u_long)virt_to_phys(np), 8192); >> cache_clear((u_long)virt_to_phys(np), 8192); >> kernel_set_cachemode((np), 8192, IOMAP_NOCACHE_SER); > > > how about a bzero(np,sizeof(*np)); > > or, before the kernel_set_cachemode call, place > cache_push() and cache_clear() commands? I have allready tried this, no success. I also have played with some=20 other cache invalidation code. That all doesn`t help. Also I have=20 modified kernel_set_cachemode() (i.e manipulating TLB`s and=20 cache-flushing), no success. By the way I think that kernel_set_cachemode() does not working right,=20 because the while() loop that set the cache modes for a page is only=20 called once, but I have allocated 2 pages. Maybe some other drivers have=20 trouble with that. > > good luck! Thanks! Ciao, Ren=E8 |