Merge tag 'iwlwifi-next-for-kalle-2014-12-30' of https://git.kernel.org/pub/scm/linux...
[cascardo/linux.git] / arch / powerpc / kernel / smp.c
index 8b2d2dc..8ec017c 100644 (file)
@@ -700,7 +700,6 @@ void start_secondary(void *unused)
        smp_store_cpu_info(cpu);
        set_dec(tb_ticks_per_jiffy);
        preempt_disable();
-       cpu_callin_map[cpu] = 1;
 
        if (smp_ops->setup_cpu)
                smp_ops->setup_cpu(cpu);
@@ -739,6 +738,14 @@ void start_secondary(void *unused)
        notify_cpu_starting(cpu);
        set_cpu_online(cpu, true);
 
+       /*
+        * CPU must be marked active and online before we signal back to the
+        * master, because the scheduler needs to see the cpu_online and
+        * cpu_active bits set.
+        */
+       smp_wmb();
+       cpu_callin_map[cpu] = 1;
+
        local_irq_enable();
 
        cpu_startup_entry(CPUHP_ONLINE);