summaryrefslogtreecommitdiff
path: root/arch/powerpc/kernel/smp.c
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2005-11-10 06:26:12 +0300
committerPaul Mackerras <paulus@samba.org>2005-11-10 06:26:12 +0300
commit094fe2e712f38f49bf79ef93306c61b1b993b07b (patch)
tree8a01db1e3bdde65982eba66b1336c24aee329bdc /arch/powerpc/kernel/smp.c
parent0a5cab42a1317326d87b0d074df50705a0c3fa77 (diff)
downloadlinux-094fe2e712f38f49bf79ef93306c61b1b993b07b.tar.xz
powerpc: Fixes for 32-bit powermac SMP
A couple of bugs crept in with the merge of smp.c... Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/kernel/smp.c')
-rw-r--r--arch/powerpc/kernel/smp.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c
index 7fd530898bd1..2ffdc863bff3 100644
--- a/arch/powerpc/kernel/smp.c
+++ b/arch/powerpc/kernel/smp.c
@@ -369,11 +369,11 @@ int generic_cpu_disable(void)
if (cpu == boot_cpuid)
return -EBUSY;
+ cpu_clear(cpu, cpu_online_map);
#ifdef CONFIG_PPC64
_systemcfg->processorCount--;
-#endif
- cpu_clear(cpu, cpu_online_map);
fixup_irqs(cpu_online_map);
+#endif
return 0;
}
@@ -391,9 +391,11 @@ int generic_cpu_enable(unsigned int cpu)
while (!cpu_online(cpu))
cpu_relax();
+#ifdef CONFIG_PPC64
fixup_irqs(cpu_online_map);
/* counter the irq disable in fixup_irqs */
local_irq_enable();
+#endif
return 0;
}
@@ -422,7 +424,9 @@ void generic_mach_cpu_die(void)
while (__get_cpu_var(cpu_state) != CPU_UP_PREPARE)
cpu_relax();
+#ifdef CONFIG_PPC64
flush_tlb_pending();
+#endif
cpu_set(cpu, cpu_online_map);
local_irq_enable();
}