diff options
Diffstat (limited to 'arch/ia64/kernel/smpboot.c')
-rw-r--r-- | arch/ia64/kernel/smpboot.c | 5 |
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; |