aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/kernel/apic/x2apic_uv_x.c9
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
476static void __cpuinit uv_heartbeat_enable(int cpu) 476static 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