ARC: Mark secondary cpu online only after all HW setup is done
authorNoam Camus <noamc@ezchip.com>
Sat, 7 Nov 2015 07:16:19 +0000 (09:16 +0200)
committerVineet Gupta <vgupta@synopsys.com>
Mon, 9 May 2016 04:02:32 +0000 (09:32 +0530)
In SMP setup, master loops for each_present_cpu calling cpu_up().
For ARC it returns as soon as new cpu's status becomes online,
However secondary may still do HW initializing,
machine or platform hook level.

So turn secondary online only after all HW setup is done.
Signed-off-by: Noam Camus <noamc@ezchip.com>
Acked-by: Vineet Gupta <vgupta@synopsys.com>
arch/arc/kernel/smp.c

index 6b1813456336516b120e87063fa3cc839600fd67..f183cc648851e53d0db2736925cdf466d900946a 100644 (file)
@@ -126,11 +126,6 @@ void start_kernel_secondary(void)
        current->active_mm = mm;
        cpumask_set_cpu(cpu, mm_cpumask(mm));
 
-       notify_cpu_starting(cpu);
-       set_cpu_online(cpu, true);
-
-       pr_info("## CPU%u LIVE ##: Executing Code...\n", cpu);
-
        /* Some SMP H/w setup - for each cpu */
        if (plat_smp_ops.init_per_cpu)
                plat_smp_ops.init_per_cpu(cpu);
@@ -138,6 +133,11 @@ void start_kernel_secondary(void)
        if (machine_desc->init_per_cpu)
                machine_desc->init_per_cpu(cpu);
 
+       notify_cpu_starting(cpu);
+       set_cpu_online(cpu, true);
+
+       pr_info("## CPU%u LIVE ##: Executing Code...\n", cpu);
+
        local_irq_enable();
        preempt_disable();
        cpu_startup_entry(CPUHP_AP_ONLINE_IDLE);