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)
This commit is contained in:
David Greenman 1994-02-10 03:03:44 +00:00
parent d4ef5cfd2e
commit 43ef94a93a
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=1139
2 changed files with 6 additions and 6 deletions

View file

@ -35,7 +35,7 @@
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* from: @(#)pmap.c 7.7 (Berkeley) 5/12/91 * 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); pv = pa_to_pvh(pa);
m = PHYS_TO_VM_PAGE(pa); m = PHYS_TO_VM_PAGE(pa);
s = splimp();
while (pv->pv_pmap != NULL) { while (pv->pv_pmap != NULL) {
s = splhigh();
pmap = pv->pv_pmap; pmap = pv->pv_pmap;
ptp = get_pt_entry(pmap); ptp = get_pt_entry(pmap);
va = i386_btop(pv->pv_va); va = i386_btop(pv->pv_va);
@ -1017,8 +1017,8 @@ pmap_remove_all(pa)
pv->pv_pmap = NULL; pv->pv_pmap = NULL;
} }
splx(s);
} }
splx(s);
tlbflush(); tlbflush();
} }

View file

@ -35,7 +35,7 @@
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* from: @(#)pmap.c 7.7 (Berkeley) 5/12/91 * 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); pv = pa_to_pvh(pa);
m = PHYS_TO_VM_PAGE(pa); m = PHYS_TO_VM_PAGE(pa);
s = splimp();
while (pv->pv_pmap != NULL) { while (pv->pv_pmap != NULL) {
s = splhigh();
pmap = pv->pv_pmap; pmap = pv->pv_pmap;
ptp = get_pt_entry(pmap); ptp = get_pt_entry(pmap);
va = i386_btop(pv->pv_va); va = i386_btop(pv->pv_va);
@ -1017,8 +1017,8 @@ pmap_remove_all(pa)
pv->pv_pmap = NULL; pv->pv_pmap = NULL;
} }
splx(s);
} }
splx(s);
tlbflush(); tlbflush();
} }