summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2004-01-01 07:08:52 +0000
committeralc <alc@FreeBSD.org>2004-01-01 07:08:52 +0000
commitec97880a76f3e91d63daafc91daf65fb44bf7e81 (patch)
tree997515f2ed028a612b965d259833fb74810de3f8 /sys
parenteb1c647689df17cbf6752dd1df21a8f6beedba6a (diff)
downloadFreeBSD-src-ec97880a76f3e91d63daafc91daf65fb44bf7e81.zip
FreeBSD-src-ec97880a76f3e91d63daafc91daf65fb44bf7e81.tar.gz
- Use pagezero() instead of bzero() in pmap_pinit(). (pagezero() is much
faster.) MFi386: - Don't bother clearing PG_ZERO on the page table page in _pmap_allocpte(); it serves no purpose. - Don't bother clearing and setting PG_BUSY on page table directory pages.
Diffstat (limited to 'sys')
-rw-r--r--sys/amd64/amd64/pmap.c7
1 files changed, 1 insertions, 6 deletions
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c
index 7f113ee..30512e9 100644
--- a/sys/amd64/amd64/pmap.c
+++ b/sys/amd64/amd64/pmap.c
@@ -1079,14 +1079,11 @@ pmap_pinit(pmap)
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);
- vm_page_unlock_queues();
pmap->pm_pml4 = (pml4_entry_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(pml4pg));
if ((pml4pg->flags & PG_ZERO) == 0)
- bzero(pmap->pm_pml4, PAGE_SIZE);
+ pagezero(pmap->pm_pml4);
mtx_lock_spin(&allpmaps_lock);
LIST_INSERT_HEAD(&allpmaps, pmap, pm_list);
@@ -1254,7 +1251,6 @@ _pmap_allocpte(pmap, ptepindex)
}
vm_page_lock_queues();
- vm_page_flag_clear(m, PG_ZERO);
vm_page_wakeup(m);
vm_page_unlock_queues();
@@ -1424,7 +1420,6 @@ pmap_release(pmap_t pmap)
m = PHYS_TO_VM_PAGE(pmap->pm_pml4[PML4PML4I]);
m->wire_count--;
atomic_subtract_int(&cnt.v_wire_count, 1);
- vm_page_busy(m);
vm_page_free(m);
vm_page_unlock_queues();
}
OpenPOWER on IntegriCloud