rpms/kernel/FC-4 linux-2.6.11-via-irq-quirk.patch, NONE, 1.1 kernel-2.6.spec, 1.1366, 1.1367

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Mon May 30 21:17:41 UTC 2005


Author: davej

Update of /cvs/dist/rpms/kernel/FC-4
In directory cvs.devel.redhat.com:/tmp/cvs-serv29509

Modified Files:
	kernel-2.6.spec 
Added Files:
	linux-2.6.11-via-irq-quirk.patch 
Log Message:
Fix up VIA IRQ quirk


linux-2.6.11-via-irq-quirk.patch:
 arch/i386/pci/irq.c    |    5 -----
 drivers/acpi/pci_irq.c |    4 ----
 drivers/pci/quirks.c   |   40 ++++++++++++++++++++++++----------------
 include/linux/acpi.h   |    6 ++++--
 4 files changed, 28 insertions(+), 27 deletions(-)

--- NEW FILE linux-2.6.11-via-irq-quirk.patch ---

tree 4c1b48179d7f18b3e037a473d8e04708b619ac5c
parent 2efe86b809d97debaaf9fcc13b041aedf15bd3d2
author Len Brown <lenb at toshiba.hsd1.ma.comcast.net> Fri, 27 May 2005 12:21:50 -0400
committer Linus Torvalds <torvalds at ppc970.osdl.org> Fri, 27 May 2005 22:15:04 -0700

[PATCH] VIA IRQ quirk

Delete quirk_via_bridge(), restore quirk_via_irqpic() -- but now
improved to be invoked upon device ENABLE, and now only for VIA devices
-- not all devices behind VIA bridges.

Signed-off-by: Bjorn Helgaas <bjorn.helgaas at hp.com>
Signed-off-by: Len Brown <len.brown at intel.com>
Signed-off-by: Andrew Morton <akpm at osdl.org>
Signed-off-by: Linus Torvalds <torvalds at osdl.org>

 arch/i386/pci/irq.c    |    5 -----
 drivers/acpi/pci_irq.c |    4 ----
 drivers/pci/quirks.c   |   40 ++++++++++++++++++++++++----------------
 include/linux/acpi.h   |    5 ++++-
 4 files changed, 28 insertions(+), 26 deletions(-)

Index: arch/i386/pci/irq.c
===================================================================
--- 87e039397918f4c5b0a21d798589a8ce517bfa2d/arch/i386/pci/irq.c  (mode:100644 sha1:d6598da4b67bbc6fc1dde2ad121c692471813175)
+++ 4c1b48179d7f18b3e037a473d8e04708b619ac5c/arch/i386/pci/irq.c  (mode:100644 sha1:da21b1d07c15529e954a21ab8b48a0c48bd0df6b)
@@ -1029,7 +1029,6 @@ void pcibios_penalize_isa_irq(int irq)
 static int pirq_enable_irq(struct pci_dev *dev)
 {
 	u8 pin;
-	extern int via_interrupt_line_quirk;
 	struct pci_dev *temp_dev;
 
 	pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &pin);
@@ -1084,10 +1083,6 @@ static int pirq_enable_irq(struct pci_de
 		printk(KERN_WARNING "PCI: No IRQ known for interrupt pin %c of device %s.%s\n",
 		       'A' + pin, pci_name(dev), msg);
 	}
-	/* VIA bridges use interrupt line for apic/pci steering across
-	   the V-Link */
-	else if (via_interrupt_line_quirk)
-		pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq & 15);
 	return 0;
 }
 
Index: drivers/acpi/pci_irq.c
===================================================================
--- 87e039397918f4c5b0a21d798589a8ce517bfa2d/drivers/acpi/pci_irq.c  (mode:100644 sha1:12b0eea634073399d5f219e460dbf88acde98b34)
+++ 4c1b48179d7f18b3e037a473d8e04708b619ac5c/drivers/acpi/pci_irq.c  (mode:100644 sha1:8093f2e003215156d376c9a8c086e8d9dfaf9d30)
@@ -391,7 +391,6 @@ acpi_pci_irq_enable (
 	u8			pin = 0;
 	int			edge_level = ACPI_LEVEL_SENSITIVE;
 	int			active_high_low = ACPI_ACTIVE_LOW;
-	extern int		via_interrupt_line_quirk;
 	char			*link = NULL;
 
 	ACPI_FUNCTION_TRACE("acpi_pci_irq_enable");
@@ -444,9 +443,6 @@ acpi_pci_irq_enable (
 		}
  	}
 
-	if (via_interrupt_line_quirk)
-		pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq & 15);
-
 	dev->irq = acpi_register_gsi(irq, edge_level, active_high_low);
 
 	printk(KERN_INFO PREFIX "PCI Interrupt %s[%c] -> ",
Index: drivers/pci/quirks.c
===================================================================
--- 87e039397918f4c5b0a21d798589a8ce517bfa2d/drivers/pci/quirks.c  (mode:100644 sha1:026aa04669a29467559af822be1ad69d06f61ef0)
+++ 4c1b48179d7f18b3e037a473d8e04708b619ac5c/drivers/pci/quirks.c  (mode:100644 sha1:afc9d29acd8aa15521330a99c752ee07ed149c7d)
@@ -18,6 +18,7 @@
 #include <linux/pci.h>
 #include <linux/init.h>
 #include <linux/delay.h>
+#include <linux/acpi.h>
 #include "pci.h"
 
 /* Deal with broken BIOS'es that neglect to enable passive release,
@@ -467,9 +468,6 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AM
  * non-x86 architectures (yes Via exists on PPC among other places),
  * we must mask the PCI_INTERRUPT_LINE value versus 0xf to get
  * interrupts delivered properly.
- *
- * TODO: When we have device-specific interrupt routers,
- * quirk_via_irqpic will go away from quirks.
  */
 
 /*
@@ -494,6 +492,29 @@ static void __devinit quirk_via_acpi(str
 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA,	PCI_DEVICE_ID_VIA_82C586_3,	quirk_via_acpi );
 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA,	PCI_DEVICE_ID_VIA_82C686_4,	quirk_via_acpi );
 
+static void __devinit quirk_via_irqpic(struct pci_dev *dev)
+{
+	u8 irq, new_irq;
+
+#ifdef CONFIG_X86_IO_APIC
+	if (nr_ioapics && !skip_ioapic_setup)
+		return;
+#endif
+#ifdef CONFIG_ACPI
+	if (acpi_irq_model != ACPI_IRQ_MODEL_PIC)
+		return;
+#endif
+	new_irq = dev->irq & 0xf;
+	pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq);
+	if (new_irq != irq) {
+		printk(KERN_INFO "PCI: Via PIC 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_irqpic);
+
 /*
  * PIIX3 USB: We have to disable USB interrupts that are
  * hardwired to PIRQD# and may be shared with an
@@ -683,19 +704,6 @@ static void __init quirk_disable_pxb(str
 }
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL,	PCI_DEVICE_ID_INTEL_82454NX,	quirk_disable_pxb );
 
-/*
- *	VIA northbridges care about PCI_INTERRUPT_LINE
- */
-int via_interrupt_line_quirk;
-
-static void __devinit quirk_via_bridge(struct pci_dev *pdev)
-{
-	if(pdev->devfn == 0) {
-		printk(KERN_INFO "PCI: Via IRQ fixup\n");
-		via_interrupt_line_quirk = 1;
-	}
-}
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA,	PCI_ANY_ID,                     quirk_via_bridge );
 
 /*
  *	Serverworks CSB5 IDE does not fully support native mode
Index: include/linux/acpi.h
===================================================================
--- 87e039397918f4c5b0a21d798589a8ce517bfa2d/include/linux/acpi.h  (mode:100644 sha1:aefe6d051ace16fbcf13fe2c0d86e6fda90729e8)
+++ 4c1b48179d7f18b3e037a473d8e04708b619ac5c/include/linux/acpi.h  (mode:100644 sha1:d5a55bdb9c3cca13bc4c66e01da0b440341f0781)
@@ -25,6 +25,8 @@
 #ifndef _LINUX_ACPI_H
 #define _LINUX_ACPI_H
 
+#ifdef	CONFIG_ACPI
+
 #ifndef _LINUX
 #define _LINUX
 #endif
@@ -533,4 +535,5 @@ static inline int acpi_get_pxm(acpi_hand
 
 extern int pnpacpi_disabled;
 
-#endif /*_LINUX_ACPI_H*/
+#endif	/* CONFIG_ACPI */
+#endif	/*_LINUX_ACPI_H*/
-



Index: kernel-2.6.spec
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/kernel-2.6.spec,v
retrieving revision 1.1366
retrieving revision 1.1367
diff -u -r1.1366 -r1.1367
--- kernel-2.6.spec	30 May 2005 03:50:03 -0000	1.1366
+++ kernel-2.6.spec	30 May 2005 21:17:38 -0000	1.1367
@@ -350,6 +350,7 @@
 Patch1910: linux-2.6.12-ns558-nodev-rmmod.patch
 Patch1920: linux-2.6.12-cpufreq-update.patch
 Patch1930: linux-2.6.12-speedtouch-resync.patch
+Patch1940: linux-2.6.11-via-irq-quirk.patch
 
 Patch2000: linux-2.6.11-vm-taint.patch
 Patch2001: linux-2.6.9-vm-oomkiller-debugging.patch
@@ -804,6 +805,8 @@
 %patch1920 -p1
 # Speedtouch resync if line sync lost
 %patch1930 -p1
+# VIA IRQ quirk
+%patch1940 -p1
 
 #
 # VM related fixes.
@@ -1264,6 +1267,9 @@
 %endif
 
 %changelog
+* Mon May 30 2005 Dave Jones <davej at redhat.com>
+- Fix up VIA IRQ quirk.
+
 * Sun May 29 2005 Dave Jones <davej at redhat.com>
 - Fix slab corruption in firewire (#158424)
 




More information about the fedora-cvs-commits mailing list