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

From: Rafael J. Wysocki
Date: Mon Jul 07 2008 - 16:15:51 EST


On Monday, 7 of July 2008, Maciej W. Rozycki wrote:
> 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.

Shouldn't the setup_timer_IRQ0_pin(apic1, pin1, cfg->vector) be removed as
well?

Rafael
--
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/