summaryrefslogtreecommitdiffstats
path: root/sys/alpha
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2004-12-23 20:16:11 +0000
committeralc <alc@FreeBSD.org>2004-12-23 20:16:11 +0000
commita618275b13403f9bf275545c254a6ad694a98ac7 (patch)
tree69d2684272055b8e783776f57abaa83628519595 /sys/alpha
parent8aad93579025896f709dbf6fcddb19ff74b73640 (diff)
downloadFreeBSD-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/alpha')
-rw-r--r--sys/alpha/alpha/pmap.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/sys/alpha/alpha/pmap.c b/sys/alpha/alpha/pmap.c
index 41a5558..47044a8 100644
--- a/sys/alpha/alpha/pmap.c
+++ b/sys/alpha/alpha/pmap.c
@@ -1799,7 +1799,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...
*/
@@ -1810,7 +1809,8 @@ pmap_enter_quick(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_page_t mpte)
register pt_entry_t *pte;
int managed;
- vm_page_lock_queues();
+ mtx_assert(&vm_page_queue_mtx, MA_OWNED);
+ VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
PMAP_LOCK(pmap);
/*
@@ -1905,7 +1905,6 @@ pmap_enter_quick(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_page_t mpte)
*pte = pmap_phys_to_pte(VM_PAGE_TO_PHYS(m)) | PG_V | PG_KRE | PG_URE | managed;
out:
alpha_pal_imb(); /* XXX overkill? */
- vm_page_unlock_queues();
PMAP_UNLOCK(pmap);
return mpte;
}
OpenPOWER on IntegriCloud