Commit 28908331 authored by Alexander Viro's avatar Alexander Viro Committed by Linus Torvalds

[PATCH] bug in V-link handling (arch/i386/pci/irq.c)

	Via southbridges use register 0x3c of the on-board devices (USB and
AC97) to control interrupt routing for those.  In drivers/pci/quirks.c we
set it correctly (dev->irq & 15).  However, in pirq_enable_irq() where the
second half of that stuff lives, we forget to apply the mask.

	That's what causes problems with ioapic on via motherboards in 2.6.
One-liner below ACKed by Alan, verified on via-based boxen here, obviously
doesn't affect non-via ones (we only set interrupt_line_quirk for via
chipsets). 
parent f4897eb3
...@@ -1030,7 +1030,7 @@ int pirq_enable_irq(struct pci_dev *dev) ...@@ -1030,7 +1030,7 @@ int pirq_enable_irq(struct pci_dev *dev)
/* VIA bridges use interrupt line for apic/pci steering across /* VIA bridges use interrupt line for apic/pci steering across
the V-Link */ the V-Link */
else if (interrupt_line_quirk) else if (interrupt_line_quirk)
pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq); pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq & 15);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment