From 40432bac3b537e4cec296ffff5f03ccc6e206725 Mon Sep 17 00:00:00 2001 From: alc Date: Sat, 18 Jul 2009 01:50:05 +0000 Subject: An addendum to r195649, "Add support to the virtual memory system for configuring machine-dependent memory attributes...": Don't set the memory attribute for a "real" page that is allocated to a device object in vm_page_alloc(). It is a pointless act, because the device pager replaces this "real" page with a "fake" page and sets the memory attribute on that "fake" page. Eliminate pointless code from pmap_cache_bits() on amd64. Employ the "Self Snoop" feature supported by some x86 processors to avoid cache flushes in the pmap. Approved by: re (kib) --- sys/vm/vm_page.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'sys/vm') diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c index b9c4ebc..d8d74c0 100644 --- a/sys/vm/vm_page.c +++ b/sys/vm/vm_page.c @@ -1161,7 +1161,9 @@ vm_page_alloc(vm_object_t object, vm_pindex_t pindex, int req) mtx_unlock(&vm_page_queue_free_mtx); if (object != NULL) { - if (object->memattr != VM_MEMATTR_DEFAULT) + /* Ignore device objects; the pager sets "memattr" for them. */ + if (object->memattr != VM_MEMATTR_DEFAULT && + object->type != OBJT_DEVICE) pmap_page_set_memattr(m, object->memattr); vm_page_insert(m, object, pindex); } else -- cgit v1.1