[PATCH]-2.4.23-rc1 pci-irq.c bad PCI ident of 440GX host bridge

From: Xose Vazquez Perez
Date: Wed Nov 12 2003 - 21:51:55 EST


hi,

someone needs a new glasses ;-)

The code is using PCI_DEVICE_ID_INTEL_82450GX(0x84c5) to identify a 440GX
Host Bridge. And that id is the *Memory Controller* of 450KX/GX chipsets.
WRONG!

The Host Bridge of 440GX chipset is 82443GX. And it got _two_ PCI
ident 0x71a0(AGP enable) and 0x71a2(with AGP disable).

This patch comes from http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=107880
by Phil Oester <bugzilla@xxxxxxxxxxxx>

People with INTEL 440GX boards is going to get troubles without this patch.

-thanks-
--
bug reports to ty.coon@xxxxxxxxxxxx
--- linux/arch/i386/kernel/pci-irq.c 2003-11-10 21:42:05.000000000 +0100
+++ new/arch/i386/kernel/pci-irq.c 2003-11-13 02:33:27.000000000 +0100
@@ -575,7 +575,8 @@
{
/* We must not touch 440GX even if we have tables. 440GX has
different IRQ routing weirdness */
- if(pci_find_device(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82450GX, NULL))
+ if(pci_find_device(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82443GX_0, NULL) ||
+ pci_find_device(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82443GX_2, NULL))
return 0;
switch(device)
{
--- linux/include/linux/pci_ids.h 2003-11-10 21:42:51.000000000 +0100
+++ new/include/linux/pci_ids.h 2003-11-13 02:35:31.000000000 +0100
@@ -1891,6 +1891,9 @@
#define PCI_DEVICE_ID_INTEL_82443MX_1 0x7199
#define PCI_DEVICE_ID_INTEL_82443MX_2 0x719a
#define PCI_DEVICE_ID_INTEL_82443MX_3 0x719b
+#define PCI_DEVICE_ID_INTEL_82443GX_0 0x71a0
+#define PCI_DEVICE_ID_INTEL_82443GX_1 0x71a1
+#define PCI_DEVICE_ID_INTEL_82443GX_2 0x71a2
#define PCI_DEVICE_ID_INTEL_82372FB_0 0x7600
#define PCI_DEVICE_ID_INTEL_82372FB_1 0x7601
#define PCI_DEVICE_ID_INTEL_82372FB_2 0x7602