VIA IRQ quirk fixup only in XT_PIC mode take 1 was [PATCH] Add SATA device to VIA IRQ quirk fixup list
PATCH 1/1 VIA IRQ quirk fixup only in XT_PIC mode take 1 was [PATCH] Add SATA device to VIA IRQ quirk fixup list
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 <[email protected]>
Cc "Scott J. Harmon" <[email protected]>
Cc Andrew Morton <[email protected]>
Cc Chris Wedgwood <[email protected]>
Cc Greg KH <[email protected]>
Signed-off-by Sergio Monteiro Basto <[email protected]>
---
quirks.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-)
drivers/pci/quirks.c +12 -16
@@ -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
drivers/pci/quirks.c +12 -16
@@ -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
Quoted 2 lines · Sergio Monteiro Basto
but I have
time to test it
Sorry, I want to write, "but I haven't time to test it "