Re: [patch 054/149] powerpc/pseries: Only call start-cpu when a CPU is stopped

Michael Neuling
2010-07-02T00:03:44Z

This is not going to work without:
f8b67691828321f5c85bb853283aa101ae673130

It'll get a build failure.

You seemed to have pulled this one the 33 stable.

Mikey

In message <20100701173211.356448329@clark.site> you wrote:
> 2.6.32-stable review patch. If anyone has any objections, please let us know
.
>
> ------------------
>
> From: Michael Neuling <mikey@neuling.org>
>
> commit aef40e87d866355ffd279ab21021de733242d0d5 upstream.
>
> Currently we always call start-cpu irrespective of if the CPU is
> stopped or not. Unfortunatley on POWER7, firmware seems to not like
> start-cpu being called when a cpu already been started. This was not
> the case on POWER6 and earlier.
>
> This patch checks to see if the CPU is stopped or not via an
> query-cpu-stopped-state call, and only calls start-cpu on CPUs which
> are stopped.
>
> This fixes a bug with kexec on POWER7 on PHYP where only the primary
> thread would make it to the second kernel.
>
> Reported-by: Ankita Garg <ankita@linux.vnet.ibm.com>
> Signed-off-by: Michael Neuling <mikey@neuling.org>
> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
>
> ---
> arch/powerpc/platforms/pseries/smp.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> --- a/arch/powerpc/platforms/pseries/smp.c
> +++ b/arch/powerpc/platforms/pseries/smp.c
> @@ -81,6 +81,12 @@ static inline int __devinit smp_startup_
>
> pcpu = get_hard_smp_processor_id(lcpu);
>
> + /* Check to see if the CPU out of FW already for kexec */
> + if (smp_query_cpu_stopped(pcpu) == QCSS_NOT_STOPPED){
> + cpu_set(lcpu, of_spin_map);
> + return 1;
> + }
> +
> /* Fixup atomic count: it exited inside IRQ handler. */
> task_thread_info(paca[lcpu].__current)->preempt_count = 0;
>
>
>