aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Miller <davem@davemloft.net>2007-10-25 04:15:53 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2007-11-05 16:35:16 -0500
commit1d84b5424efbcce69a1c955ba181147d23d43a14 (patch)
tree543e1a8180eca6ecb89aee30105f4abb07b876e6
parent2cc31879f8cfa0efc74fe7e58ab4e01ef5908730 (diff)
PCI: Add MSI quirk for ServerWorks HT1000 PCIX bridge.
This is the fix for the following problem: https://bugzilla.redhat.com/show_bug.cgi?id=227657 The bnx2 device 5706 complains about MSI not working behind a ServerWorks HT1000 PCIX bridge. An earlier commit to fix the problem: e3008dedff4bdc96a5f67224cd3d8d12237082a0: "PCI: disable MSI by default on systems with Serverworks HT1000 chips" was not entirely correct, and has been reverted. MSI does not work on the PCIX bus because the BIOS did not set the HT_MSI_FLAGS_ENABLE bit in the HyperTransport MSI capability on the bridge. We use the existing quirk_msi_ht_cap() to detect the problem and disable MSI in all buses behind it. Signed-off-by: Michael Chan <mchan@broadcom.com> Cc: Anantha Subramanyam <ananth@broadcom.com> Cc: Naren Sankar <nsankar@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net> Acked-by: Jeff Garzik <jgarzik@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/pci/quirks.c3
-rw-r--r--include/linux/pci_ids.h1
2 files changed, 4 insertions, 0 deletions
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index f5999f569cc8..f975f7fccb1d 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -1677,6 +1677,9 @@ static void __devinit quirk_msi_ht_cap(struct pci_dev *dev)
1677} 1677}
1678DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_HT2000_PCIE, 1678DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_HT2000_PCIE,
1679 quirk_msi_ht_cap); 1679 quirk_msi_ht_cap);
1680DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SERVERWORKS,
1681 PCI_DEVICE_ID_SERVERWORKS_HT1000_PXB,
1682 quirk_msi_ht_cap);
1680 1683
1681/* The nVidia CK804 chipset may have 2 HT MSI mappings. 1684/* The nVidia CK804 chipset may have 2 HT MSI mappings.
1682 * MSI are supported if the MSI capability set in any of these mappings. 1685 * MSI are supported if the MSI capability set in any of these mappings.
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index ab6edec13f68..7a347dcad06e 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -1436,6 +1436,7 @@
1436#define PCI_DEVICE_ID_SERVERWORKS_HE 0x0008 1436#define PCI_DEVICE_ID_SERVERWORKS_HE 0x0008
1437#define PCI_DEVICE_ID_SERVERWORKS_LE 0x0009 1437#define PCI_DEVICE_ID_SERVERWORKS_LE 0x0009
1438#define PCI_DEVICE_ID_SERVERWORKS_GCNB_LE 0x0017 1438#define PCI_DEVICE_ID_SERVERWORKS_GCNB_LE 0x0017
1439#define PCI_DEVICE_ID_SERVERWORKS_HT1000_PXB 0x0036
1439#define PCI_DEVICE_ID_SERVERWORKS_EPB 0x0103 1440#define PCI_DEVICE_ID_SERVERWORKS_EPB 0x0103
1440#define PCI_DEVICE_ID_SERVERWORKS_HT2000_PCIE 0x0132 1441#define PCI_DEVICE_ID_SERVERWORKS_HT2000_PCIE 0x0132
1441#define PCI_DEVICE_ID_SERVERWORKS_OSB4 0x0200 1442#define PCI_DEVICE_ID_SERVERWORKS_OSB4 0x0200