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
This commit is contained in:
Matthew Dillon 2001-12-31 20:02:46 +00:00
parent fc75194c3c
commit b00dcfdf74
2 changed files with 20 additions and 6 deletions

View File

@ -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
}
/*

View File

@ -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
}
/*