diff options
-rw-r--r-- | arch/arm/kernel/smp.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index d88ff0230e8..697e9a8cbdd 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c | |||
@@ -301,17 +301,7 @@ asmlinkage void __cpuinit secondary_start_kernel(void) | |||
301 | */ | 301 | */ |
302 | platform_secondary_init(cpu); | 302 | platform_secondary_init(cpu); |
303 | 303 | ||
304 | /* | ||
305 | * Enable local interrupts. | ||
306 | */ | ||
307 | notify_cpu_starting(cpu); | 304 | notify_cpu_starting(cpu); |
308 | local_irq_enable(); | ||
309 | local_fiq_enable(); | ||
310 | |||
311 | /* | ||
312 | * Setup the percpu timer for this CPU. | ||
313 | */ | ||
314 | percpu_timer_setup(); | ||
315 | 305 | ||
316 | calibrate_delay(); | 306 | calibrate_delay(); |
317 | 307 | ||
@@ -323,10 +313,23 @@ asmlinkage void __cpuinit secondary_start_kernel(void) | |||
323 | * before we continue. | 313 | * before we continue. |
324 | */ | 314 | */ |
325 | set_cpu_online(cpu, true); | 315 | set_cpu_online(cpu, true); |
316 | |||
317 | /* | ||
318 | * Setup the percpu timer for this CPU. | ||
319 | */ | ||
320 | percpu_timer_setup(); | ||
321 | |||
326 | while (!cpu_active(cpu)) | 322 | while (!cpu_active(cpu)) |
327 | cpu_relax(); | 323 | cpu_relax(); |
328 | 324 | ||
329 | /* | 325 | /* |
326 | * cpu_active bit is set, so it's safe to enalbe interrupts | ||
327 | * now. | ||
328 | */ | ||
329 | local_irq_enable(); | ||
330 | local_fiq_enable(); | ||
331 | |||
332 | /* | ||
330 | * OK, it's off to the idle thread for us | 333 | * OK, it's off to the idle thread for us |
331 | */ | 334 | */ |
332 | cpu_idle(); | 335 | cpu_idle(); |