Commit f203891117323dd31c11adcbba60452c933d604e

Authored by Preeti U Murthy
Committed by Benjamin Herrenschmidt
1 parent 42dbfc8649

ppc/powernv: Set the runlatch bits correctly for offline cpus

Up until now we have been setting the runlatch bits for a busy CPU and
clearing it when a CPU enters idle state. The runlatch bit has thus
been consistent with the utilization of a CPU as long as the CPU is online.

However when a CPU is hotplugged out the runlatch bit is not cleared. It
needs to be cleared to indicate an unused CPU. Hence this patch has the
runlatch bit cleared for an offline CPU just before entering an idle state
and sets it immediately after it exits the idle state.

Signed-off-by: Preeti U Murthy <preeti@linux.vnet.ibm.com>
Acked-by: Paul Mackerras <paulus@samba.org>
Reviewed-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>

Showing 1 changed file with 3 additions and 0 deletions Side-by-side Diff

arch/powerpc/platforms/powernv/smp.c
... ... @@ -30,6 +30,7 @@
30 30 #include <asm/cputhreads.h>
31 31 #include <asm/xics.h>
32 32 #include <asm/opal.h>
  33 +#include <asm/runlatch.h>
33 34  
34 35 #include "powernv.h"
35 36  
36 37  
... ... @@ -156,7 +157,9 @@
156 157 */
157 158 mtspr(SPRN_LPCR, mfspr(SPRN_LPCR) & ~(u64)LPCR_PECE1);
158 159 while (!generic_check_cpu_restart(cpu)) {
  160 + ppc64_runlatch_off();
159 161 power7_nap();
  162 + ppc64_runlatch_on();
160 163 if (!generic_check_cpu_restart(cpu)) {
161 164 DBG("CPU%d Unexpected exit while offline !\n", cpu);
162 165 /* We may be getting an IPI, so we re-enable