aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorAlan Cox <alc@FreeBSD.org>2003-09-26 04:12:41 +0000
committerAlan Cox <alc@FreeBSD.org>2003-09-26 04:12:41 +0000
commitd2a81cdbed61e6255ccfaffc141cfea76d76bd48 (patch)
tree9ab502e9c01c99323a77bfa8f59d1735a4076f2e /sys
parentee9003796a974dee5ff4cc3f70117179550145ff (diff)
Notes
Diffstat (limited to 'sys')
-rw-r--r--sys/amd64/amd64/pmap.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c
index 000e9450911cb..b0e286565b548 100644
--- a/sys/amd64/amd64/pmap.c
+++ b/sys/amd64/amd64/pmap.c
@@ -1012,6 +1012,7 @@ pmap_pinit(pmap)
register struct pmap *pmap;
{
vm_page_t pml4pg;
+ static vm_pindex_t color;
/*
* allocate object for the ptes
@@ -1022,14 +1023,13 @@ pmap_pinit(pmap)
/*
* allocate the page directory page
*/
- VM_OBJECT_LOCK(pmap->pm_pteobj);
- pml4pg = vm_page_grab(pmap->pm_pteobj, NUPDE + NUPDPE + NUPML4E,
- VM_ALLOC_NORMAL | VM_ALLOC_RETRY | VM_ALLOC_WIRED | VM_ALLOC_ZERO);
+ while ((pml4pg = vm_page_alloc(NULL, color++, VM_ALLOC_NOOBJ |
+ VM_ALLOC_NORMAL | VM_ALLOC_WIRED | VM_ALLOC_ZERO)) == NULL)
+ VM_WAIT;
vm_page_lock_queues();
vm_page_flag_clear(pml4pg, PG_BUSY);
pml4pg->valid = VM_PAGE_BITS_ALL;
vm_page_unlock_queues();
- VM_OBJECT_UNLOCK(pmap->pm_pteobj);
pmap->pm_pml4 = (pml4_entry_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(pml4pg));