From: Matthew W. <wi...@fc...> - 2002-04-17 17:01:19
|
On Tue, Apr 16, 2002 at 05:58:55PM +0200, Daniel Phillips wrote: > On Friday 12 April 2002 14:40, Matthew Wilcox wrote: > > FYI, parisc64 is likely to retain the ->virtual field in order to turn > > flush_dcache_page into a no-op. But nobody's written that code yet :-) > > Hi Matthew, > > The flush_dcache_page part is a little cryptic, could you please elaborate? Certainly. PA-RISC 2.0 has a 96-bit virtual address space. The top bits are determined by space registers, and the bottom bits by the general register you're using. While this is a virtually indexed cache, it is possible to get read-write coherency by using an /equivalent alias/. Aliases which are separated by a multiple of 4MB in this 96-bit virtual address space are guaranteed to be coherent. We already force user-space shared mmaps to be equivalent aliases, but rely on the kernel calling flush_dcache_page after it has written to a non-equivalent alias. Now, if the kernel only writes to an equivalent alias, the processor guarantees coherency and flush_dcache_page can be a no-op. So my proposed scheme is to use kmap/kunmap to return an address for a page which will be equivalent. The plan is to take up a 256TB chunk of the kernel's virtual address space to allow 256GB of memory to be mapped. We'll use the ->virtual member to indicate what address to return. -- It's always legal to use Linux (TM) systems http://www.gnu.org/philosophy/why-free.html |