Fix a race in the initialization of HPET, which might result in a 5 minute lockup on boot. Signed-off-by: Jiri Bohac Index: linux-2.6.20-rc5/arch/x86_64/kernel/apic.c =================================================================== --- linux-2.6.20-rc5.orig/arch/x86_64/kernel/apic.c +++ linux-2.6.20-rc5/arch/x86_64/kernel/apic.c @@ -764,10 +767,12 @@ static void setup_APIC_timer(unsigned in /* wait for irq slice */ if (vxtime.hpet_address && hpet_use_timer) { - int trigger = hpet_readl(HPET_T0_CMP); - while (hpet_readl(HPET_COUNTER) >= trigger) - /* do nothing */ ; - while (hpet_readl(HPET_COUNTER) < trigger) + int trigger; + do + trigger = hpet_readl(HPET_T0_CMP); + while (hpet_readl(HPET_COUNTER) >= trigger); + + while (hpet_readl(HPET_COUNTER) < trigger) /* do nothing */ ; } else { int c1, c2; --