diff options
author | kib <kib@FreeBSD.org> | 2011-09-28 15:01:20 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2011-09-28 15:01:20 +0000 |
commit | 126da2118c9bfc035a3e776b170c20cb91a8b810 (patch) | |
tree | d8b64695a5f33c4d23f0ebc7e1beb8818858fe5c /sys/sparc64 | |
parent | e84b0ecd819abddadeed97fa141468b674261293 (diff) | |
download | FreeBSD-src-126da2118c9bfc035a3e776b170c20cb91a8b810.zip FreeBSD-src-126da2118c9bfc035a3e776b170c20cb91a8b810.tar.gz |
Remove locking of the vm page queues from several pmaps, which only
protected the dirty mask updates. The dirty mask updates are handled
by atomics after the r225840.
Submitted by: alc
Tested by: flo (sparc64)
MFC after: 2 weeks
Diffstat (limited to 'sys/sparc64')
-rw-r--r-- | sys/sparc64/sparc64/pmap.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/sys/sparc64/sparc64/pmap.c b/sys/sparc64/sparc64/pmap.c index e34bd20..555676f 100644 --- a/sys/sparc64/sparc64/pmap.c +++ b/sys/sparc64/sparc64/pmap.c @@ -1423,6 +1423,7 @@ pmap_protect_tte(struct pmap *pm, struct pmap *pm2, struct tte *tp, u_long data; vm_page_t m; + PMAP_LOCK_ASSERT(pm, MA_OWNED); data = atomic_clear_long(&tp->tte_data, TD_SW | TD_W); if ((data & (TD_PV | TD_W)) == (TD_PV | TD_W)) { m = PHYS_TO_VM_PAGE(TD_PA(data)); @@ -1451,7 +1452,6 @@ pmap_protect(pmap_t pm, vm_offset_t sva, vm_offset_t eva, vm_prot_t prot) if (prot & VM_PROT_WRITE) return; - vm_page_lock_queues(); PMAP_LOCK(pm); if (eva - sva > PMAP_TSB_THRESH) { tsb_foreach(pm, NULL, sva, eva, pmap_protect_tte); @@ -1463,7 +1463,6 @@ pmap_protect(pmap_t pm, vm_offset_t sva, vm_offset_t eva, vm_prot_t prot) tlb_range_demap(pm, sva, eva - 1); } PMAP_UNLOCK(pm); - vm_page_unlock_queues(); } /* |