summaryrefslogtreecommitdiffstats
path: root/sys/i386
diff options
context:
space:
mode:
authordillon <dillon@FreeBSD.org>2001-12-31 20:02:46 +0000
committerdillon <dillon@FreeBSD.org>2001-12-31 20:02:46 +0000
commit46fe7974a97df60eb6e1dcb3f63f21a9cf51c0e4 (patch)
treebfc0d38f07c50520fceccb5c49b99fa9eb34abb1 /sys/i386
parent544b7f650b84ebff1e5222615498b9bb03a79b74 (diff)
downloadFreeBSD-src-46fe7974a97df60eb6e1dcb3f63f21a9cf51c0e4.zip
FreeBSD-src-46fe7974a97df60eb6e1dcb3f63f21a9cf51c0e4.tar.gz
You know those 'XXX what about SMP' comments in pmap_kenter()? Well,
they were right. Fix both kenter() and kremove() for SMP by ensuring that the tlb is flushed on other cpu's. This will directly solve random-corruption panic issues in -stable when it is MFC'd. Better to be safe then sorry, we can optimize this later. Original Suspicion by: peter Maybe MFC: immediately on re's permission
Diffstat (limited to 'sys/i386')
-rw-r--r--sys/i386/i386/pmap.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c
index fdbade3..881a2cc 100644
--- a/sys/i386/i386/pmap.c
+++ b/sys/i386/i386/pmap.c
@@ -700,8 +700,11 @@ pmap_kenter(vm_offset_t va, vm_offset_t pa)
pte = vtopte(va);
opte = *pte;
*pte = npte;
- /*if (opte)*/
- invltlb_1pg(va); /* XXX what about SMP? */
+#ifdef SMP
+ invlpg(va);
+#else
+ invltlb_1pg(va);
+#endif
}
/*
@@ -714,7 +717,11 @@ pmap_kremove(vm_offset_t va)
pte = vtopte(va);
*pte = 0;
- invltlb_1pg(va); /* XXX what about SMP? */
+#ifdef SMP
+ invlpg(va);
+#else
+ invltlb_1pg(va);
+#endif
}
/*
OpenPOWER on IntegriCloud