powerpc: only call start-cpu when a CPU is stopped
PATCH 2/2 powerpc: only call start-cpu when a CPU is stopped
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 <[email protected]>
Cc <[email protected]>
Signed-off-by Michael Neuling <[email protected]>
---
arch/powerpc/platforms/pseries/smp.c | 6 ++++++ 1 file changed, 6 insertions(+)
arch/powerpc/platforms/pseries/smp.c +6 -0
@@ -103,6 +103,12 @@ static inline int __devinit smp_startup_return 1 ; 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 ;