diff options
author | neel <neel@FreeBSD.org> | 2013-07-03 23:38:37 +0000 |
---|---|---|
committer | neel <neel@FreeBSD.org> | 2013-07-03 23:38:37 +0000 |
commit | 44e6cbd7c84212bafefbeafe5c66cc38af64b7b6 (patch) | |
tree | f45f82cdee4ac7e1e76b03e6957a15061e811a7c /sys/vm | |
parent | 4ccb1bebc540925729b559907e85c9f428042c3c (diff) | |
download | FreeBSD-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
Diffstat (limited to 'sys/vm')
-rw-r--r-- | sys/vm/vm_page.c | 1 | ||||
-rw-r--r-- | sys/vm/vm_phys.c | 1 |
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); |