summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorneel <neel@FreeBSD.org>2013-07-03 23:38:37 +0000
committerneel <neel@FreeBSD.org>2013-07-03 23:38:37 +0000
commit44e6cbd7c84212bafefbeafe5c66cc38af64b7b6 (patch)
treef45f82cdee4ac7e1e76b03e6957a15061e811a7c
parent4ccb1bebc540925729b559907e85c9f428042c3c (diff)
downloadFreeBSD-src-44e6cbd7c84212bafefbeafe5c66cc38af64b7b6.zip
FreeBSD-src-44e6cbd7c84212bafefbeafe5c66cc38af64b7b6.tar.gz
vm_phys_fictitious_reg_range() was losing the 'memattr' because it would be
reset by pmap_page_init() right after being initialized in vm_page_initfake(). The statement above is with reference to the amd64 implementation of pmap_page_init(). Fix this by calling 'pmap_page_init()' in 'vm_page_initfake()' before changing the 'memattr'. Reviewed by: kib MFC after: 2 weeks
-rw-r--r--sys/vm/vm_page.c1
-rw-r--r--sys/vm/vm_phys.c1
2 files changed, 1 insertions, 1 deletions
diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c
index 65ca2e3..a47209f 100644
--- a/sys/vm/vm_page.c
+++ b/sys/vm/vm_page.c
@@ -645,6 +645,7 @@ vm_page_initfake(vm_page_t m, vm_paddr_t paddr, vm_memattr_t memattr)
/* Fictitious pages don't use "order" or "pool". */
m->oflags = VPO_BUSY | VPO_UNMANAGED;
m->wire_count = 1;
+ pmap_page_init(m);
memattr:
pmap_page_set_memattr(m, memattr);
}
diff --git a/sys/vm/vm_phys.c b/sys/vm/vm_phys.c
index b871d79..66f3b0c 100644
--- a/sys/vm/vm_phys.c
+++ b/sys/vm/vm_phys.c
@@ -559,7 +559,6 @@ vm_phys_fictitious_reg_range(vm_paddr_t start, vm_paddr_t end,
}
for (i = 0; i < page_count; i++) {
vm_page_initfake(&fp[i], start + PAGE_SIZE * i, memattr);
- pmap_page_init(&fp[i]);
fp[i].oflags &= ~(VPO_BUSY | VPO_UNMANAGED);
}
mtx_lock(&vm_phys_fictitious_reg_mtx);
OpenPOWER on IntegriCloud