Commit-ID: ff3bb72cc6af05828504b964ff1d1bd193524b63 Gitweb: http://git.kernel.org/tip/ff3bb72cc6af05828504b964ff1d1bd193524b63 Author: Jan Kiszka <jan.kiszka@xxxxxx> AuthorDate: Sat, 18 Apr 2009 10:33:14 +0200 Committer: Ingo Molnar <mingo@xxxxxxx> CommitDate: Sat, 18 Apr 2009 22:07:02 +0200 x86, hpet: fix "IO-APIC + timer doesn't work!" Jeff Mahoney wrote: > I saw this while booting 2.6.30-rc1, -rc2, and today's git, on one of > my development nodes. This output is with apic=debug. With noapic, > it still hung. Both outputs follow. > > git bisect leads to commit 8d6f0c8214928f7c5083dd54ecb69c5d615b516e, > but I'm not seeing anything obvious there. Backing just that change > out doesn't fix it. > > enabled ExtINT on CPU#0 > ESR value before enabling vector: 0x00000004 after: 0x00000000 > ENABLING IO-APIC IRQs > ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=0 pin2=0 > ..MP-BIOS bug: 8254 timer not connected to IO-APIC > ...trying to set up timer (IRQ0) through the 8259A ... > ..... (found apic 0 pin 0) ... > ....... failed. > ...trying to set up timer as Virtual Wire IRQ... > ..... failed. > ...trying to set up timer as ExtINT IRQ... > ..... failed :(. > Kernel panic - not syncing: IO-APIC + timer doesn't work! Boot with apic=debug and send a report. Then try booting with the 'noapic' option. Hmmmmm. That somehow reminds me of what I thought I had to fix in the HPET emulation of QEMU just recently [1] - because of 2.6.30-rc's behavior. Lets try a quirk: write 'delta' a second time. [1] http://permalink.gmane.org/gmane.comp.emulators.qemu/41570 [ Impact: fix rare boot panic ] Tested-by: Jeff Mahoney <jeffm@xxxxxxxx> Signed-off-by: Ingo Molnar <mingo@xxxxxxx> --- arch/x86/kernel/hpet.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c index 648b3a2..523d72b 100644 --- a/arch/x86/kernel/hpet.c +++ b/arch/x86/kernel/hpet.c @@ -324,6 +324,7 @@ static void hpet_set_mode(enum clock_event_mode mode, HPET_TN_SETVAL | HPET_TN_32BIT; hpet_writel(cfg, HPET_Tn_CFG(timer)); hpet_writel((unsigned long) delta, HPET_Tn_CMP(timer)); + hpet_writel((unsigned long) delta, HPET_Tn_CMP(timer)); hpet_start_counter(); hpet_print_config(); break; -- To unsubscribe from this list: send the line "unsubscribe linux-tip-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html