diff options
author | alc <alc@FreeBSD.org> | 2004-12-23 20:16:11 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2004-12-23 20:16:11 +0000 |
commit | a618275b13403f9bf275545c254a6ad694a98ac7 (patch) | |
tree | 69d2684272055b8e783776f57abaa83628519595 /sys/ia64 | |
parent | 8aad93579025896f709dbf6fcddb19ff74b73640 (diff) | |
download | FreeBSD-src-a618275b13403f9bf275545c254a6ad694a98ac7.zip FreeBSD-src-a618275b13403f9bf275545c254a6ad694a98ac7.tar.gz |
Modify pmap_enter_quick() so that it expects the page queues to be locked
on entry and it assumes the responsibility for releasing the page queues
lock if it must sleep.
Remove a bogus comment from pmap_enter_quick().
Using the first change, modify vm_map_pmap_enter() so that the page queues
lock is acquired and released once, rather than each time that a page
is mapped.
Diffstat (limited to 'sys/ia64')
-rw-r--r-- | sys/ia64/ia64/pmap.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/sys/ia64/ia64/pmap.c b/sys/ia64/ia64/pmap.c index a2feed7..f488846 100644 --- a/sys/ia64/ia64/pmap.c +++ b/sys/ia64/ia64/pmap.c @@ -1612,7 +1612,6 @@ validate: * 2. Not wired. * 3. Read access. * 4. No page table pages. - * 5. Tlbflush is deferred to calling procedure. * 6. Page IS managed. * but is *MUCH* faster than pmap_enter... */ @@ -1624,7 +1623,8 @@ pmap_enter_quick(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_page_t mpte) pmap_t oldpmap; boolean_t managed; - vm_page_lock_queues(); + mtx_assert(&vm_page_queue_mtx, MA_OWNED); + VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); PMAP_LOCK(pmap); oldpmap = pmap_install(pmap); @@ -1666,7 +1666,6 @@ pmap_enter_quick(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_page_t mpte) pmap_set_pte(pte, va, VM_PAGE_TO_PHYS(m), FALSE, managed); reinstall: - vm_page_unlock_queues(); pmap_install(oldpmap); PMAP_UNLOCK(pmap); return (NULL); |