summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2011-02-10 18:46:50 +1100
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2011-04-01 15:37:10 +1100
commit4fcb8833af3355065bd8bffcd338eabc6f3a38a0 (patch)
tree7a23046e93e04d47ab2cabfb5727531ba7fd3100 /arch
parentfa3f82c8bb7acbe049ea71f258b3ae0a33d9d40b (diff)
downloadblackbird-op-linux-4fcb8833af3355065bd8bffcd338eabc6f3a38a0.tar.gz
blackbird-op-linux-4fcb8833af3355065bd8bffcd338eabc6f3a38a0.zip
powerpc/smp: Fix generic_mach_cpu_die()
This is used by some "soft" hotplug implementations. I needs to call idle_task_exit() when the CPU is going away, and we remove the now no-longer needed set_cpu_online() and local_irq_enable() which are handled by the return to start_secondary Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/kernel/smp.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c
index 1c9956c43801..3c0fab5e1e16 100644
--- a/arch/powerpc/kernel/smp.c
+++ b/arch/powerpc/kernel/smp.c
@@ -362,14 +362,13 @@ void generic_mach_cpu_die(void)
unsigned int cpu;
local_irq_disable();
+ idle_task_exit();
cpu = smp_processor_id();
printk(KERN_DEBUG "CPU%d offline\n", cpu);
__get_cpu_var(cpu_state) = CPU_DEAD;
smp_wmb();
while (__get_cpu_var(cpu_state) != CPU_UP_PREPARE)
cpu_relax();
- set_cpu_online(cpu, true);
- local_irq_enable();
}
#endif
OpenPOWER on IntegriCloud