mirror of
https://git.FreeBSD.org/src.git
synced 2025-02-06 18:29:47 +00:00
Fix an SMP-only TLB invalidation bug. Specifically, disable
a TLB invalidation optimization that won't work given the limitations of our current SMP support. This patch should be applied to -stable ASAP. Thanks to John Capo <jc@irbs.com>, Steve Kargl <sgk@troutmask.apl.washington.edu>, and Chuck Robey <chuckr@mat.net> for testing.
This commit is contained in:
parent
2f33b2c03e
commit
901671c028
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=44470
@ -39,7 +39,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)pmap.c 7.7 (Berkeley) 5/12/91
|
||||
* $Id: pmap.c,v 1.222 1999/01/28 01:59:50 dillon Exp $
|
||||
* $Id: pmap.c,v 1.223 1999/02/19 14:25:33 luoqi Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -1991,11 +1991,15 @@ pmap_remove_all(pa)
|
||||
if (pmap_track_modified(pv->pv_va))
|
||||
vm_page_dirty(ppv->pv_vm_page);
|
||||
}
|
||||
#ifdef SMP
|
||||
update_needed = 1;
|
||||
#else
|
||||
if (!update_needed &&
|
||||
((!curproc || (vmspace_pmap(curproc->p_vmspace) == pv->pv_pmap)) ||
|
||||
(pv->pv_pmap == kernel_pmap))) {
|
||||
update_needed = 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
TAILQ_REMOVE(&pv->pv_pmap->pm_pvlist, pv, pv_plist);
|
||||
TAILQ_REMOVE(&ppv->pv_list, pv, pv_list);
|
||||
|
@ -39,7 +39,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)pmap.c 7.7 (Berkeley) 5/12/91
|
||||
* $Id: pmap.c,v 1.222 1999/01/28 01:59:50 dillon Exp $
|
||||
* $Id: pmap.c,v 1.223 1999/02/19 14:25:33 luoqi Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -1991,11 +1991,15 @@ pmap_remove_all(pa)
|
||||
if (pmap_track_modified(pv->pv_va))
|
||||
vm_page_dirty(ppv->pv_vm_page);
|
||||
}
|
||||
#ifdef SMP
|
||||
update_needed = 1;
|
||||
#else
|
||||
if (!update_needed &&
|
||||
((!curproc || (vmspace_pmap(curproc->p_vmspace) == pv->pv_pmap)) ||
|
||||
(pv->pv_pmap == kernel_pmap))) {
|
||||
update_needed = 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
TAILQ_REMOVE(&pv->pv_pmap->pm_pvlist, pv, pv_plist);
|
||||
TAILQ_REMOVE(&ppv->pv_list, pv, pv_list);
|
||||
|
Loading…
x
Reference in New Issue
Block a user