Re: [stable] [2/3] powerpc/kdump: Fix race in kdump shutdown

From: Greg KH
Date: Mon Mar 21 2011 - 18:02:17 EST


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 <mikey@xxxxxxxxxxx>
> Signed-off-by: Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx>
> Signed-off-by: Kamalesh Babulal <kamalesh@xxxxxxxxxxxxxxxxxx>
> cc: Anton Blanchard <anton@xxxxxxxxx>

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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/