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 | |
| 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')
| -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 | } |
