[patch] PCI: disable MSI on more ATI NorthBridges

Shane Huang
2007-10-18T09:16:12Z

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

More ATI North Bridges like RS780 can't do MSI like its predecessors
in linux. Disable MSIs on them.

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 have to attach the patch as
an attachment. Please check it.

Thanks
Best Regards
Shane

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

diff -ruN linux-2.6.23_orig/drivers/pci/quirks.c linux-2.6.23/drivers/pci/quirks.c
--- linux-2.6.23_orig/drivers/pci/quirks.c 2007-10-10 04:31:38.000000000 +0800
+++ linux-2.6.23/drivers/pci/quirks.c 2007-10-18 16:51:30.000000000 +0800
@@ -1662,8 +1662,18 @@
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_RD580, quirk_disable_all_msi);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RD790, quirk_disable_all_msi);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RX790, 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_ATI, PCI_DEVICE_ID_ATI_RS690_ALT, quirk_disable_all_msi);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS740, quirk_disable_all_msi);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS740_ALT, quirk_disable_all_msi);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS780, quirk_disable_all_msi);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS780_ALT, quirk_disable_all_msi);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RD890S, quirk_disable_all_msi);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RD890, quirk_disable_all_msi);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RD870S, quirk_disable_all_msi);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RX880, 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 linux-2.6.23_orig/include/linux/pci_ids.h linux-2.6.23/include/linux/pci_ids.h
--- linux-2.6.23_orig/include/linux/pci_ids.h 2007-10-10 04:31:38.000000000 +0800
+++ linux-2.6.23/include/linux/pci_ids.h 2007-10-18 16:41:57.000000000 +0800
@@ -361,8 +361,18 @@
#define PCI_DEVICE_ID_ATI_RS400_200 0x5a33
#define PCI_DEVICE_ID_ATI_RS480 0x5950
#define PCI_DEVICE_ID_ATI_RD580 0x5952
+#define PCI_DEVICE_ID_ATI_RD790 0x5956
#define PCI_DEVICE_ID_ATI_RX790 0x5957
#define PCI_DEVICE_ID_ATI_RS690 0x7910
+#define PCI_DEVICE_ID_ATI_RS690_ALT 0x7911
+#define PCI_DEVICE_ID_ATI_RS740 0x7960
+#define PCI_DEVICE_ID_ATI_RS740_ALT 0x7961
+#define PCI_DEVICE_ID_ATI_RS780 0x9600
+#define PCI_DEVICE_ID_ATI_RS780_ALT 0x9601
+#define PCI_DEVICE_ID_ATI_RD890S 0x5a10
+#define PCI_DEVICE_ID_ATI_RD890 0x5a11
+#define PCI_DEVICE_ID_ATI_RD870S 0x5a12
+#define PCI_DEVICE_ID_ATI_RX880 0x5a13
/* ATI IXP Chipset */
#define PCI_DEVICE_ID_ATI_IXP200_IDE 0x4349
#define PCI_DEVICE_ID_ATI_IXP200_SMBUS 0x4353