On Mon, 7 Jul 2008, Rafael J. Wysocki wrote: > @@ -1714,12 +1721,14 @@ static inline void __init check_timer(vo > apic2 = apic1; > } > > - replace_pin_at_irq(0, 0, 0, apic1, pin1); > - apic1 = 0; > - pin1 = 0; > - setup_timer_IRQ0_pin(apic1, pin1, cfg->vector); > + if (disable_irq0_through_ioapic) { > + clear_IO_APIC_pin(apic1, pin1); > + } else { > + replace_pin_at_irq(0, 0, 0, apic1, pin1); > + apic1 = 0; > + pin1 = 0; > + setup_timer_IRQ0_pin(apic1, pin1, cfg->vector); > > - if (pin1 != -1) { > /* > * Ok, does IRQ0 through the IOAPIC work? > */ This is completely broken -- you cannot blindly assume IRQ0 is wired to the pin #0 of the I/O APIC #0. You have to respect routing information provided by the system. Ingo, from the sequence above, I gather this code is currently in the tree: - replace_pin_at_irq(0, 0, 0, apic1, pin1); - apic1 = 0; - pin1 = 0; Please revert the change which introduced it. While I recall posting a patch which added code like this, I clearly stated it was solely for diagnostics of Rafael's system and not to apply to any tree. Maciej -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html