On Sat, Mar 19, 2011 at 11:44:33PM +0530, Kamalesh Babulal wrote: > powerpc/kdump: Fix race in kdump shutdown > > Commit: 60adec6226bbcf061d4c2d10944fced209d1847d upstream > > When we are crashing, the crashing/primary CPU IPIs the secondaries to > turn off IRQs, go into real mode and wait in kexec_wait. While this > is happening, the primary tears down all the MMU maps. Unfortunately > the primary doesn't check to make sure the secondaries have entered > real mode before doing this. > > On PHYP machines, the secondaries can take a long time shutting down > the IRQ controller as RTAS calls are need. These RTAS calls need to > be serialised which resilts in the secondaries contending in > lock_rtas() and hence taking a long time to shut down. > > We've hit this on large POWER7 machines, where some secondaries are > still waiting in lock_rtas(), when the primary tears down the HPTEs. > > This patch makes sure all secondaries are in real mode before the > primary tears down the MMU. It uses the new kexec_state entry in the > paca. It times out if the secondaries don't reach real mode after > 10sec. > > Signed-off-by: Michael Neuling <[email protected]> > Signed-off-by: Benjamin Herrenschmidt <[email protected]> > Signed-off-by: Kamalesh Babulal <[email protected]> > cc: Anton Blanchard <[email protected]>
Please don't indent these, I have to unindent them for every patch I apply from you, which is a pain. > --- > arch/powerpc/kernel/crash.c | 28 ++++++++++++++++++++++++++++ > 1 files changed, 28 insertions(+), 0 deletions(-) > > diff --git a/arch/powerpc/kernel/crash.c b/arch/powerpc/kernel/crash.c > index b779818..706b622 100644 > --- a/arch/powerpc/kernel/crash.c > +++ b/arch/powerpc/kernel/crash.c > @@ -153,6 +153,7 @@ static void crash_kexec_prepare_cpus(int cpu) > while (cpus_weight(cpus_in_crash) < ncpus) > cpu_relax(); > } > + > /* > * Make sure all CPUs are entered via soft-reset if the kdump is > * invoked using soft-reset. That chunk is not in the upstream commit. Please be more careful. greg k-h _______________________________________________ stable mailing list [email protected] http://linux.kernel.org/mailman/listinfo/stable
