aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNoam Camus <noamc@ezchip.com>2015-11-07 02:16:19 -0500
committerVineet Gupta <vgupta@synopsys.com>2016-05-09 00:02:32 -0400
commit71f9cf8fdd72e5f5c3a60f632bd1534fc7996b81 (patch)
treea9fccde6d736968655a0db372aa4df2f9e5ba22c
parent2a1021fce85cb9867f3655c58a9c826a3612fae9 (diff)
ARC: Mark secondary cpu online only after all HW setup is done
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>
-rw-r--r--arch/arc/kernel/smp.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/arch/arc/kernel/smp.c b/arch/arc/kernel/smp.c
index 6b1813456336..f183cc648851 100644
--- a/arch/arc/kernel/smp.c
+++ b/arch/arc/kernel/smp.c
@@ -126,11 +126,6 @@ void start_kernel_secondary(void)
126 current->active_mm = mm; 126 current->active_mm = mm;
127 cpumask_set_cpu(cpu, mm_cpumask(mm)); 127 cpumask_set_cpu(cpu, mm_cpumask(mm));
128 128
129 notify_cpu_starting(cpu);
130 set_cpu_online(cpu, true);
131
132 pr_info("## CPU%u LIVE ##: Executing Code...\n", cpu);
133
134 /* Some SMP H/w setup - for each cpu */ 129 /* Some SMP H/w setup - for each cpu */
135 if (plat_smp_ops.init_per_cpu) 130 if (plat_smp_ops.init_per_cpu)
136 plat_smp_ops.init_per_cpu(cpu); 131 plat_smp_ops.init_per_cpu(cpu);
@@ -138,6 +133,11 @@ void start_kernel_secondary(void)
138 if (machine_desc->init_per_cpu) 133 if (machine_desc->init_per_cpu)
139 machine_desc->init_per_cpu(cpu); 134 machine_desc->init_per_cpu(cpu);
140 135
136 notify_cpu_starting(cpu);
137 set_cpu_online(cpu, true);
138
139 pr_info("## CPU%u LIVE ##: Executing Code...\n", cpu);
140
141 local_irq_enable(); 141 local_irq_enable();
142 preempt_disable(); 142 preempt_disable();
143 cpu_startup_entry(CPUHP_AP_ONLINE_IDLE); 143 cpu_startup_entry(CPUHP_AP_ONLINE_IDLE);