Re: [PATCH 2/2] acpi: Disable IRQ 0 through I/O APIC for some HPsystems

From: Maciej W. Rozycki
Date: Mon Jul 07 2008 - 16:01:24 EST


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-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/