diff options
author | Paul Mackerras <paulus@samba.org> | 2005-11-09 22:26:12 -0500 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2005-11-09 22:26:12 -0500 |
commit | 094fe2e712f38f49bf79ef93306c61b1b993b07b (patch) | |
tree | 8a01db1e3bdde65982eba66b1336c24aee329bdc /arch/powerpc/kernel/smp.c | |
parent | 0a5cab42a1317326d87b0d074df50705a0c3fa77 (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.c | 8 |
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 | } |