aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/drivers/pci
diff options
context:
space:
mode:
authorBjorn Helgaas <bhelgaas@google.com>2022-03-22 17:16:21 -0500
committerBjorn Helgaas <bhelgaas@google.com>2022-03-22 17:16:21 -0500
commita6e0eba677f8e9b58f8062205566a911c15e1f4f (patch)
tree14e079858fd47c2fee89661767f613bffd71d674 /drivers/pci
parentMerge branch 'pci/misc' (diff)
parentPCI: Avoid broken MSI on SB600 USB devices (diff)
downloadwireguard-linux-a6e0eba677f8e9b58f8062205566a911c15e1f4f.tar.xz
wireguard-linux-a6e0eba677f8e9b58f8062205566a911c15e1f4f.zip
Merge branch 'pci/msi'
- Avoid broken MSI on SB600 USB devices (Bjorn Helgaas) * pci/msi: PCI: Avoid broken MSI on SB600 USB devices
Diffstat (limited to 'drivers/pci')
-rw-r--r--drivers/pci/quirks.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index d2dd6a6cda60..5f46fed01e6c 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -1811,6 +1811,18 @@ static void quirk_alder_ioapic(struct pci_dev *pdev)
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_EESSC, quirk_alder_ioapic);
#endif
+static void quirk_no_msi(struct pci_dev *dev)
+{
+ pci_info(dev, "avoiding MSI to work around a hardware defect\n");
+ dev->no_msi = 1;
+}
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4386, quirk_no_msi);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4387, quirk_no_msi);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4388, quirk_no_msi);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x4389, quirk_no_msi);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x438a, quirk_no_msi);
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x438b, quirk_no_msi);
+
static void quirk_pcie_mch(struct pci_dev *pdev)
{
pdev->no_msi = 1;