[patch] PCI: disable the MSI of AMD RS690

Shane Huang
2008-01-24T11:01:38Z

[-- Attachment #1: Type: text/plain, Size: 1917 bytes --]

This patch recover Tejun's commit
4be8f906435a6af241821ab5b94b2b12cb7d57d8
because there is one MSI bug on RS690+SB600 board which will lead to
boot failure. This bug is NOT same as the one in SB700 SATA controller,
quirk_msi_intx_disable_bug does not work to SB600. Disablement the MSI
of RS690 is the workaround.

Signed-off-by: Shane Huang <shane.huang@amd.com>

Since there is some word wrapping problem with my mail client MS outlook
if I copy the patch into the text, so I'll also attach the patch as an
attachment. Please check it.

diff -ruN old/drivers/pci/quirks.c new/drivers/pci/quirks.c
--- old/drivers/pci/quirks.c 2008-01-07 05:45:38.000000000 +0800
+++ new/drivers/pci/quirks.c 2008-01-22 11:02:00.000000000 +0800
@@ -1623,6 +1623,7 @@
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SERVERWORKS,
PCI_DEVICE_ID_SERVERWORKS_GCNB_LE, quirk_disable_all_msi);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS400_200,
quirk_disable_all_msi);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS480,
quirk_disable_all_msi);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS690,
quirk_disable_all_msi);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT3351,
quirk_disable_all_msi);

/* Disable MSI on chipsets that are known to not support it */
diff -ruN old/include/linux/pci_ids.h new/include/linux/pci_ids.h
--- old/include/linux/pci_ids.h 2008-01-07 05:45:38.000000000 +0800
+++ new/include/linux/pci_ids.h 2008-01-22 11:01:55.000000000 +0800
@@ -360,6 +360,7 @@
#define PCI_DEVICE_ID_ATI_RS400_166 0x5a32
#define PCI_DEVICE_ID_ATI_RS400_200 0x5a33
#define PCI_DEVICE_ID_ATI_RS480 0x5950
+#define PCI_DEVICE_ID_ATI_RS690 0x7910
/* ATI IXP Chipset */
#define PCI_DEVICE_ID_ATI_IXP200_IDE 0x4349
#define PCI_DEVICE_ID_ATI_IXP200_SMBUS 0x4353

Thanks
Best Regards
Shane

[-- Attachment #2: disable_RS690_MSI.patch --]
[-- Type: application/octet-stream, Size: 1295 bytes --]

diff -ruN old/drivers/pci/quirks.c new/drivers/pci/quirks.c
--- old/drivers/pci/quirks.c 2008-01-07 05:45:38.000000000 +0800
+++ new/drivers/pci/quirks.c 2008-01-22 11:02:00.000000000 +0800
@@ -1623,6 +1623,7 @@
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_GCNB_LE, quirk_disable_all_msi);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS400_200, quirk_disable_all_msi);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS480, quirk_disable_all_msi);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS690, quirk_disable_all_msi);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT3351, quirk_disable_all_msi);

/* Disable MSI on chipsets that are known to not support it */
diff -ruN old/include/linux/pci_ids.h new/include/linux/pci_ids.h
--- old/include/linux/pci_ids.h 2008-01-07 05:45:38.000000000 +0800
+++ new/include/linux/pci_ids.h 2008-01-22 11:01:55.000000000 +0800
@@ -360,6 +360,7 @@
#define PCI_DEVICE_ID_ATI_RS400_166 0x5a32
#define PCI_DEVICE_ID_ATI_RS400_200 0x5a33
#define PCI_DEVICE_ID_ATI_RS480 0x5950
+#define PCI_DEVICE_ID_ATI_RS690 0x7910
/* ATI IXP Chipset */
#define PCI_DEVICE_ID_ATI_IXP200_IDE 0x4349
#define PCI_DEVICE_ID_ATI_IXP200_SMBUS 0x4353