Re: [05/23] powerpc/pseries: Only call start-cpu when a CPU is stopped

From: Michael Neuling
Date: Thu Jul 01 2010 - 20:02:54 EST


This is not going to work without:
f8b67691828321f5c85bb853283aa101ae673130

It'll get a build failure.

Mikey

In message <20100701172856.882121276@xxxxxxxxxx> you wrote:
> 2.6.27-stable review patch. If anyone has any objections, please let us know
.
>
> ------------------
>
> From: Michael Neuling <mikey@xxxxxxxxxxx>
>
> 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@xxxxxxxxxxxxxxxxxx>
> Signed-off-by: Michael Neuling <mikey@xxxxxxxxxxx>
> Signed-off-by: Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx>
> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxx>
>
> ---
> 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
> @@ -84,6 +84,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;
>
>
>
--
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/