aboutsummaryrefslogtreecommitdiff
path: root/sys/amd64
diff options
context:
space:
mode:
authorDavid Greenman <dg@FreeBSD.org>1994-02-10 03:03:44 +0000
committerDavid Greenman <dg@FreeBSD.org>1994-02-10 03:03:44 +0000
commit43ef94a93a9199820620fffb93140be4bdb50f7b (patch)
treeba37a3128d5edad8b470b47ee9b29209d0f83b45 /sys/amd64
parentd4ef5cfd2eec83b91ba8d6f25d40a40c89477114 (diff)
Patch from John Dyson:
a pv chain was being traversed while interrupts were fully enabled in pmap_remove_all ... this is bogus, and has been fixed in pmap.c. (sorry for adding the splimp)
Notes
svn path=/head/; revision=1139
Diffstat (limited to 'sys/amd64')
-rw-r--r--sys/amd64/amd64/pmap.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c
index c06f668bae0c..ccc8956cc6e3 100644
--- a/sys/amd64/amd64/pmap.c
+++ b/sys/amd64/amd64/pmap.c
@@ -35,7 +35,7 @@
* SUCH DAMAGE.
*
* from: @(#)pmap.c 7.7 (Berkeley) 5/12/91
- * $Id: pmap.c,v 1.16 1994/01/31 23:47:27 davidg Exp $
+ * $Id: pmap.c,v 1.17 1994/02/08 03:07:58 davidg Exp $
*/
/*
@@ -990,8 +990,8 @@ pmap_remove_all(pa)
pv = pa_to_pvh(pa);
m = PHYS_TO_VM_PAGE(pa);
+ s = splimp();
while (pv->pv_pmap != NULL) {
- s = splhigh();
pmap = pv->pv_pmap;
ptp = get_pt_entry(pmap);
va = i386_btop(pv->pv_va);
@@ -1017,8 +1017,8 @@ pmap_remove_all(pa)
pv->pv_pmap = NULL;
}
- splx(s);
}
+ splx(s);
tlbflush();
}