summaryrefslogtreecommitdiffstats
path: root/sys/sparc64
diff options
context:
space:
mode:
authorjake <jake@FreeBSD.org>2003-06-15 21:06:49 +0000
committerjake <jake@FreeBSD.org>2003-06-15 21:06:49 +0000
commitd84237dcb71f2ea38af079116184daf4c746ebcb (patch)
tree10f67e6bb897d2fb83bcde30591ba223f0385931 /sys/sparc64
parentd2fe2bf67217b7979d6035ba7514250433f5f4f4 (diff)
downloadFreeBSD-src-d84237dcb71f2ea38af079116184daf4c746ebcb.zip
FreeBSD-src-d84237dcb71f2ea38af079116184daf4c746ebcb.tar.gz
The page queue lock is already held in pmap_remove, change acquire/release
to assertion of ownership. Serves me right for not booting a witness kernel.
Diffstat (limited to 'sys/sparc64')
-rw-r--r--sys/sparc64/sparc64/pmap.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/sparc64/sparc64/pmap.c b/sys/sparc64/sparc64/pmap.c
index a23a7a1..28e33fc 100644
--- a/sys/sparc64/sparc64/pmap.c
+++ b/sys/sparc64/sparc64/pmap.c
@@ -1053,10 +1053,10 @@ pmap_remove_tte(struct pmap *pm, struct pmap *pm2, struct tte *tp,
vm_page_t m;
u_long data;
+ mtx_assert(&vm_page_queue_mtx, MA_OWNED);
data = atomic_readandclear_long(&tp->tte_data);
if ((data & TD_FAKE) == 0) {
m = PHYS_TO_VM_PAGE(TD_PA(data));
- vm_page_lock_queues();
TAILQ_REMOVE(&m->md.tte_list, tp, tte_link);
if ((data & TD_WIRED) != 0)
pm->pm_stats.wired_count--;
@@ -1070,7 +1070,6 @@ pmap_remove_tte(struct pmap *pm, struct pmap *pm2, struct tte *tp,
pm->pm_stats.resident_count--;
}
pmap_cache_remove(m, va);
- vm_page_unlock_queues();
}
TTE_ZERO(tp);
if (PMAP_REMOVE_DONE(pm))
@@ -1087,6 +1086,7 @@ pmap_remove(pmap_t pm, vm_offset_t start, vm_offset_t end)
struct tte *tp;
vm_offset_t va;
+ mtx_assert(&vm_page_queue_mtx, MA_OWNED);
CTR3(KTR_PMAP, "pmap_remove: ctx=%#lx start=%#lx end=%#lx",
pm->pm_context[PCPU_GET(cpuid)], start, end);
if (PMAP_REMOVE_DONE(pm))
OpenPOWER on IntegriCloud