[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20110321214320.GA9546@kroah.com>
Date: Mon, 21 Mar 2011 14:43:20 -0700
From: Greg KH <greg@...ah.com>
To: Kamalesh Babulal <kamalesh@...ux.vnet.ibm.com>
Cc: mananth@...ibm.com, benh@...nel.crashing.org, stable@...nel.org,
anton@...ba.org, linux-kernel@...r.kernel.org
Subject: Re: [stable] [2/3] powerpc/kdump: Fix race in kdump shutdown
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@...ling.org>
> Signed-off-by: Benjamin Herrenschmidt <benh@...nel.crashing.org>
> Signed-off-by: Kamalesh Babulal <kamalesh@...ux.vnet.ibm.com>
> cc: Anton Blanchard <anton@...ba.org>
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@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists