aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64/kernel/smpboot.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/ia64/kernel/smpboot.c')
-rw-r--r--arch/ia64/kernel/smpboot.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/arch/ia64/kernel/smpboot.c b/arch/ia64/kernel/smpboot.c
index bcea81e432fd..1dcbb85fc4ee 100644
--- a/arch/ia64/kernel/smpboot.c
+++ b/arch/ia64/kernel/smpboot.c
@@ -401,6 +401,7 @@ smp_callin (void)
401 spin_lock(&vector_lock); 401 spin_lock(&vector_lock);
402 /* Setup the per cpu irq handling data structures */ 402 /* Setup the per cpu irq handling data structures */
403 __setup_vector_irq(cpuid); 403 __setup_vector_irq(cpuid);
404 notify_cpu_starting(cpuid);
404 cpu_set(cpuid, cpu_online_map); 405 cpu_set(cpuid, cpu_online_map);
405 per_cpu(cpu_state, cpuid) = CPU_ONLINE; 406 per_cpu(cpu_state, cpuid) = CPU_ONLINE;
406 spin_unlock(&vector_lock); 407 spin_unlock(&vector_lock);
@@ -741,16 +742,14 @@ int __cpu_disable(void)
741 return -EBUSY; 742 return -EBUSY;
742 } 743 }
743 744
744 cpu_clear(cpu, cpu_online_map);
745
746 if (migrate_platform_irqs(cpu)) { 745 if (migrate_platform_irqs(cpu)) {
747 cpu_set(cpu, cpu_online_map); 746 cpu_set(cpu, cpu_online_map);
748 return (-EBUSY); 747 return (-EBUSY);
749 } 748 }
750 749
751 remove_siblinginfo(cpu); 750 remove_siblinginfo(cpu);
752 cpu_clear(cpu, cpu_online_map);
753 fixup_irqs(); 751 fixup_irqs();
752 cpu_clear(cpu, cpu_online_map);
754 local_flush_tlb_all(); 753 local_flush_tlb_all();
755 cpu_clear(cpu, cpu_callin_map); 754 cpu_clear(cpu, cpu_callin_map);
756 return 0; 755 return 0;