aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/smp.c
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2005-11-09 22:26:12 -0500
committerPaul Mackerras <paulus@samba.org>2005-11-09 22:26:12 -0500
commit094fe2e712f38f49bf79ef93306c61b1b993b07b (patch)
tree8a01db1e3bdde65982eba66b1336c24aee329bdc /arch/powerpc/kernel/smp.c
parent0a5cab42a1317326d87b0d074df50705a0c3fa77 (diff)
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)
369 if (cpu == boot_cpuid) 369 if (cpu == boot_cpuid)
370 return -EBUSY; 370 return -EBUSY;
371 371
372 cpu_clear(cpu, cpu_online_map);
372#ifdef CONFIG_PPC64 373#ifdef CONFIG_PPC64
373 _systemcfg->processorCount--; 374 _systemcfg->processorCount--;
374#endif
375 cpu_clear(cpu, cpu_online_map);
376 fixup_irqs(cpu_online_map); 375 fixup_irqs(cpu_online_map);
376#endif
377 return 0; 377 return 0;
378} 378}
379 379
@@ -391,9 +391,11 @@ int generic_cpu_enable(unsigned int cpu)
391 while (!cpu_online(cpu)) 391 while (!cpu_online(cpu))
392 cpu_relax(); 392 cpu_relax();
393 393
394#ifdef CONFIG_PPC64
394 fixup_irqs(cpu_online_map); 395 fixup_irqs(cpu_online_map);
395 /* counter the irq disable in fixup_irqs */ 396 /* counter the irq disable in fixup_irqs */
396 local_irq_enable(); 397 local_irq_enable();
398#endif
397 return 0; 399 return 0;
398} 400}
399 401
@@ -422,7 +424,9 @@ void generic_mach_cpu_die(void)
422 while (__get_cpu_var(cpu_state) != CPU_UP_PREPARE) 424 while (__get_cpu_var(cpu_state) != CPU_UP_PREPARE)
423 cpu_relax(); 425 cpu_relax();
424 426
427#ifdef CONFIG_PPC64
425 flush_tlb_pending(); 428 flush_tlb_pending();
429#endif
426 cpu_set(cpu, cpu_online_map); 430 cpu_set(cpu, cpu_online_map);
427 local_irq_enable(); 431 local_irq_enable();
428} 432}