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:
parent
fc75194c3c
commit
b00dcfdf74
@ -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
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
x
Reference in New Issue
Block a user