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 d88ff0230e82..697e9a8cbdd8 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(); |
