summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorjake <jake@FreeBSD.org>2002-12-20 21:47:21 +0000
committerjake <jake@FreeBSD.org>2002-12-20 21:47:21 +0000
commitd522abfb6d47ee167a0c53c0083f506210ae0a0c (patch)
tree8498c1ff0faacc11dc3dc0f8636f3e4828ed9030 /sys
parent31d637dca52ba263b8039cc76549389044885fbc (diff)
downloadFreeBSD-src-d522abfb6d47ee167a0c53c0083f506210ae0a0c.zip
FreeBSD-src-d522abfb6d47ee167a0c53c0083f506210ae0a0c.tar.gz
Add page queue locking around functions that call vm_page_flag_set. This
fixes a failed assertion early in boot on sparc64. Reported by: Roderick van Domburg <r.s.a.vandomburg@student.utwente.nl>
Diffstat (limited to 'sys')
-rw-r--r--sys/sparc64/sparc64/pmap.c2
-rw-r--r--sys/sparc64/sparc64/tsb.c2
2 files changed, 4 insertions, 0 deletions
diff --git a/sys/sparc64/sparc64/pmap.c b/sys/sparc64/sparc64/pmap.c
index a05c787..c441806 100644
--- a/sys/sparc64/sparc64/pmap.c
+++ b/sys/sparc64/sparc64/pmap.c
@@ -1502,7 +1502,9 @@ pmap_enter(pmap_t pm, vm_offset_t va, vm_page_t m, vm_prot_t prot,
if (tp != NULL) {
CTR0(KTR_PMAP, "pmap_enter: replace");
PMAP_STATS_INC(pmap_enter_nreplace);
+ vm_page_lock_queues();
pmap_remove_tte(pm, NULL, tp, va);
+ vm_page_unlock_queues();
tlb_page_demap(pm, va);
} else {
CTR0(KTR_PMAP, "pmap_enter: new");
diff --git a/sys/sparc64/sparc64/tsb.c b/sys/sparc64/sparc64/tsb.c
index 68ba11d..a2293cd 100644
--- a/sys/sparc64/sparc64/tsb.c
+++ b/sys/sparc64/sparc64/tsb.c
@@ -167,7 +167,9 @@ tsb_tte_enter(pmap_t pm, vm_page_t m, vm_offset_t va, u_long sz, u_long data)
if ((tp->tte_data & TD_V) != 0) {
TSB_STATS_INC(tsb_nrepl);
ova = TTE_GET_VA(tp);
+ vm_page_lock_queues();
pmap_remove_tte(pm, NULL, tp, ova);
+ vm_page_unlock_queues();
tlb_page_demap(pm, ova);
}
OpenPOWER on IntegriCloud