diff options
| author | Alexander Viro <viro@parcelfarce.linux.theplanet.co.uk> | 2004-06-22 20:55:18 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-06-22 20:55:18 -0700 |
| commit | 28908331d2b9cb76da6cb87242e264387ce49682 (patch) | |
| tree | d08902378bcf9e8ea2423d34f92e0f88d07a9cf7 | |
| parent | f4897eb32ff3d6629e53f67e30d88bb8736b7148 (diff) | |
[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).
| -rw-r--r-- | arch/i386/pci/irq.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/i386/pci/irq.c b/arch/i386/pci/irq.c index 08314fa39f24..70e12d2e1d8a 100644 --- a/arch/i386/pci/irq.c +++ b/arch/i386/pci/irq.c @@ -1030,7 +1030,7 @@ int pirq_enable_irq(struct pci_dev *dev) /* VIA bridges use interrupt line for apic/pci steering across the V-Link */ 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; } |
