summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Viro <viro@parcelfarce.linux.theplanet.co.uk>2004-06-22 20:55:18 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2004-06-22 20:55:18 -0700
commit28908331d2b9cb76da6cb87242e264387ce49682 (patch)
treed08902378bcf9e8ea2423d34f92e0f88d07a9cf7
parentf4897eb32ff3d6629e53f67e30d88bb8736b7148 (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.c2
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;
}