aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/smp.c
diff options
context:
space:
mode:
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}