On Tue, Jan 04, 2011 at 06:25:12PM +0900, Toru Nishimura wrote: > Matt Thomas modified UVM colour matching scheme; > > >Modified Files: > > src/sys/uvm: uvm_extern.h uvm_fault.c uvm_km.c uvm_page.c > > > >Log Message: > >Add better color matching selecting free pages. KM pages will now allocated > >so that VA and PA have the same color. On a page fault, choose a physical > >page that has the same color as the virtual address. > > This change is a big forward-reap to have VIPT-safe NetBSD VM for R4000 and > modern ARM. Combined with matched KVA selection against UVA, found in > vm_machdep.c::vmapbuf(), there remains little ocasion where VM chooses > mistakenly wrong colour combination to bind VPN and PFN. > > The entire effect is to eliminate the necessity of VIPT fixup efforts in > port-specific > pmap.c and ends up with improving the cache effeciency in large degree. This > is _the intent_behind VIPT design. So far OS virtual memory strategy paid > little > attention to make VIPT cache work correctly.
It'd be nice if we can really eliminate VIPT fixup *code* in pmaps. And I *think* this is possible if we don't remap pages using pmap_kenter_pa().