Files
linux/arch/x86/kernel
john stultz b13e24644c x86, hpet: fix for LS21 + HPET = boot hang
Between 2.6.23 and 2.6.24-rc1 a change was made that broke IBM LS21
systems that had the HPET enabled in the BIOS, resulting in boot hangs
for x86_64.

Specifically commit b8ce335906, which
merges the i386 and x86_64 HPET code.

Prior to this commit, when we setup the HPET timers in x86_64, we did
the following:

	hpet_writel(HPET_TN_ENABLE | HPET_TN_PERIODIC | HPET_TN_SETVAL |
                    HPET_TN_32BIT, HPET_T0_CFG);

However after the i386/x86_64 HPET merge, we do the following:

	cfg = hpet_readl(HPET_Tn_CFG(timer));
	cfg |= HPET_TN_ENABLE | HPET_TN_PERIODIC |
			HPET_TN_SETVAL | HPET_TN_32BIT;
	hpet_writel(cfg, HPET_Tn_CFG(timer));

However on LS21s with HPET enabled in the BIOS, the HPET_T0_CFG register
boots with Level triggered interrupts (HPET_TN_LEVEL) enabled. This
causes the periodic interrupt to be not so periodic, and that results in
the boot time hang I reported earlier in the delay calibration.

My fix: Always disable HPET_TN_LEVEL when setting up periodic mode.

Signed-off-by: John Stultz <johnstul@us.ibm.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-02-13 09:15:46 +01:00
..
2009-01-09 03:39:43 -05:00
2008-10-16 16:53:13 +02:00
2008-12-12 11:08:42 +01:00
2009-02-10 13:13:23 +01:00
2009-01-04 18:19:37 +01:00
2008-12-31 18:07:42 -05:00
2009-01-04 13:23:07 +01:00
2009-01-04 18:19:37 +01:00
2009-01-04 13:23:04 +01:00
2009-01-04 13:23:04 +01:00
2009-01-02 17:46:24 +01:00
2008-07-26 12:00:04 -07:00
2009-01-06 13:34:03 +01:00
2008-12-16 20:36:44 +01:00
2008-10-20 08:52:41 -07:00
2008-07-16 12:15:17 -07:00
2008-07-26 16:31:35 +02:00
2008-07-22 14:35:57 +02:00
2008-10-22 22:55:23 -07:00
2009-01-04 13:23:05 +01:00
2009-01-04 13:23:05 +01:00
2008-07-22 14:35:57 +02:00
2008-10-16 16:53:13 +02:00
2008-07-22 14:35:57 +02:00
2008-10-29 08:02:28 +01:00