Messages in this thread Patches in this message | | | Subject | [PATCH] VIA IRQ quirk fixup only in XT_PIC mode take 1 was [PATCH] Add SATA device to VIA IRQ quirk fixup list | From | Sergio Monteiro Basto <> | Date | Fri, 28 Jul 2006 02:55:01 +0100 |
| |
Hi , Ok here is my first try against 2.6.17, I like the solution , but I have time to test it, because I have to build the kernel again, I test if compiles. Just though that I should send this patch soon as possible. Any feed-back is welcome ! Thanks,
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> Cc: "Scott J. Harmon" <harmon@ksu.edu> Cc: Andrew Morton <akpm@osdl.org> Cc: Chris Wedgwood <cw@f00f.org> Cc: Greg KH <greg@kroah.com> Signed-off-by: Sergio Monteiro Basto <sergio@sergiomb.no-ip.org> ---
quirks.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-)
--- linux-2.6.17.orig/drivers/pci/quirks.c 2006-06-18 02:49:35.000000000 +0100 +++ linux-2.6.17/drivers/pci/quirks.c 2006-07-28 02:20:00.000000000 +0100 @@ -642,22 +653,18 @@ static void quirk_via_irq(struct pci_dev { u8 irq, new_irq; - new_irq = dev->irq & 0xf; - pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq); - if (new_irq != irq) { - printk(KERN_INFO "PCI: VIA IRQ fixup for %s, from %d to %d\n", - pci_name(dev), irq, new_irq); - udelay(15); /* unknown if delay really needed */ - pci_write_config_byte(dev, PCI_INTERRUPT_LINE, new_irq); - } -} -DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_0, quirk_via_irq); -DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_1, quirk_via_irq); -DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_2, quirk_via_irq); -DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_3, quirk_via_irq); -DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, quirk_via_irq); -DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_4, quirk_via_irq); -DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_5, quirk_via_irq); + if (!smp_found_config && !cpu_has_apic) { + new_irq = dev->irq & 0xf; + pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq); + if (new_irq != irq) { + printk(KERN_INFO "PCI: VIA IRQ fixup for %s, from %d to %d\n", + pci_name(dev), irq, new_irq); + udelay(15); /* unknown if delay really needed */ + pci_write_config_byte(dev, PCI_INTERRUPT_LINE, new_irq); + } + } +} +DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_ANY_ID, quirk_via_irq); /* * VIA VT82C598 has its device ID settable and many BIOSes
--- linux-2.6.17.orig/drivers/pci/quirks.c 2006-06-18 02:49:35.000000000 +0100 +++ linux-2.6.17/drivers/pci/quirks.c 2006-07-28 02:20:00.000000000 +0100 @@ -642,22 +653,18 @@ static void quirk_via_irq(struct pci_dev { u8 irq, new_irq; - new_irq = dev->irq & 0xf; - pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq); - if (new_irq != irq) { - printk(KERN_INFO "PCI: VIA IRQ fixup for %s, from %d to %d\n", - pci_name(dev), irq, new_irq); - udelay(15); /* unknown if delay really needed */ - pci_write_config_byte(dev, PCI_INTERRUPT_LINE, new_irq); - } -} -DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_0, quirk_via_irq); -DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_1, quirk_via_irq); -DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_2, quirk_via_irq); -DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_3, quirk_via_irq); -DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, quirk_via_irq); -DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_4, quirk_via_irq); -DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_5, quirk_via_irq); + if (!smp_found_config && !cpu_has_apic) { + new_irq = dev->irq & 0xf; + pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq); + if (new_irq != irq) { + printk(KERN_INFO "PCI: VIA IRQ fixup for %s, from %d to %d\n", + pci_name(dev), irq, new_irq); + udelay(15); /* unknown if delay really needed */ + pci_write_config_byte(dev, PCI_INTERRUPT_LINE, new_irq); + } + } +} +DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_ANY_ID, quirk_via_irq); /* * VIA VT82C598 has its device ID settable and many BIOSes[unhandled content-type:application/x-pkcs7-signature] | |