summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNoam Camus <noamc@ezchip.com>2015-11-07 09:16:19 +0200
committerVineet Gupta <vgupta@synopsys.com>2016-05-09 09:32:32 +0530
commit71f9cf8fdd72e5f5c3a60f632bd1534fc7996b81 (patch)
treea9fccde6d736968655a0db372aa4df2f9e5ba22c
parent2a1021fce85cb9867f3655c58a9c826a3612fae9 (diff)
downloadop-kernel-dev-71f9cf8fdd72e5f5c3a60f632bd1534fc7996b81.zip
op-kernel-dev-71f9cf8fdd72e5f5c3a60f632bd1534fc7996b81.tar.gz
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 6b18134..f183cc6 100644
--- a/arch/arc/kernel/smp.c
+++ b/arch/arc/kernel/smp.c
@@ -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);
OpenPOWER on IntegriCloud