|
@@ -301,17 +301,7 @@ asmlinkage void __cpuinit secondary_start_kernel(void)
|
|
|
*/
|
|
|
platform_secondary_init(cpu);
|
|
|
|
|
|
- /*
|
|
|
- * Enable local interrupts.
|
|
|
- */
|
|
|
notify_cpu_starting(cpu);
|
|
|
- local_irq_enable();
|
|
|
- local_fiq_enable();
|
|
|
-
|
|
|
- /*
|
|
|
- * Setup the percpu timer for this CPU.
|
|
|
- */
|
|
|
- percpu_timer_setup();
|
|
|
|
|
|
calibrate_delay();
|
|
|
|
|
@@ -323,9 +313,22 @@ asmlinkage void __cpuinit secondary_start_kernel(void)
|
|
|
* before we continue.
|
|
|
*/
|
|
|
set_cpu_online(cpu, true);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Setup the percpu timer for this CPU.
|
|
|
+ */
|
|
|
+ percpu_timer_setup();
|
|
|
+
|
|
|
while (!cpu_active(cpu))
|
|
|
cpu_relax();
|
|
|
|
|
|
+ /*
|
|
|
+ * cpu_active bit is set, so it's safe to enalbe interrupts
|
|
|
+ * now.
|
|
|
+ */
|
|
|
+ local_irq_enable();
|
|
|
+ local_fiq_enable();
|
|
|
+
|
|
|
/*
|
|
|
* OK, it's off to the idle thread for us
|
|
|
*/
|