Re: How to map memory uncached on PPC.
From: Stephen Williams <hidden>
Date: 2005-08-20 15:59:44
Benjamin Herrenschmidt wrote:
On Fri, 2005-08-19 at 08:17 -0700, Stephen Williams wrote:quoted
I did some measurements, at it seems that the vast amount of the time is spent in pci_map_single, which calls only the consistent_sync function, which for FROMDEVICE calls only invalidate_dcache_range. So I'm convinced that invalidating the cache for the output buffer (which is large, in case the image that arrives is large) is taking most of the time. So I want to eliminate it.
A simple experiment you can do is limit the memory used by the kernel (booting with mem=xxxx) and then use mmap of /dev/mem to map the remaining memory like if it was an IO device, uncached. With that, you get a quick hack solution to validate the performance benefit at least.
I did an even simpler experiment: I commented out the pci_map_single, which on a PPC only has the effect of calling invalidate_dcache_range and returning the virt_to_bus of the address. Obviously, the cache is still enabled for the processor, and the image data may get corrupted, but this was a performance test, not a solution. Your "test" is a not implausible solution, although it has for me some administrative problems. -- Steve Williams "The woods are lovely, dark and deep. steve at icarus.com But I have promises to keep, http://www.icarus.com and lines to code before I sleep, http://www.picturel.com And lines to code before I sleep."