diff options
-rw-r--r-- | arch/x86/kernel/apic/x2apic_uv_x.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c index af5d103bb53..d199dc34f54 100644 --- a/arch/x86/kernel/apic/x2apic_uv_x.c +++ b/arch/x86/kernel/apic/x2apic_uv_x.c | |||
@@ -475,7 +475,7 @@ static void uv_heartbeat(unsigned long ignored) | |||
475 | 475 | ||
476 | static void __cpuinit uv_heartbeat_enable(int cpu) | 476 | static void __cpuinit uv_heartbeat_enable(int cpu) |
477 | { | 477 | { |
478 | if (!uv_cpu_hub_info(cpu)->scir.enabled) { | 478 | while (!uv_cpu_hub_info(cpu)->scir.enabled) { |
479 | struct timer_list *timer = &uv_cpu_hub_info(cpu)->scir.timer; | 479 | struct timer_list *timer = &uv_cpu_hub_info(cpu)->scir.timer; |
480 | 480 | ||
481 | uv_set_cpu_scir_bits(cpu, SCIR_CPU_HEARTBEAT|SCIR_CPU_ACTIVITY); | 481 | uv_set_cpu_scir_bits(cpu, SCIR_CPU_HEARTBEAT|SCIR_CPU_ACTIVITY); |
@@ -483,11 +483,10 @@ static void __cpuinit uv_heartbeat_enable(int cpu) | |||
483 | timer->expires = jiffies + SCIR_CPU_HB_INTERVAL; | 483 | timer->expires = jiffies + SCIR_CPU_HB_INTERVAL; |
484 | add_timer_on(timer, cpu); | 484 | add_timer_on(timer, cpu); |
485 | uv_cpu_hub_info(cpu)->scir.enabled = 1; | 485 | uv_cpu_hub_info(cpu)->scir.enabled = 1; |
486 | } | ||
487 | 486 | ||
488 | /* check boot cpu */ | 487 | /* also ensure that boot cpu is enabled */ |
489 | if (!uv_cpu_hub_info(0)->scir.enabled) | 488 | cpu = 0; |
490 | uv_heartbeat_enable(0); | 489 | } |
491 | } | 490 | } |
492 | 491 | ||
493 | #ifdef CONFIG_HOTPLUG_CPU | 492 | #ifdef CONFIG_HOTPLUG_CPU |