|
@@ -4681,3 +4681,18 @@ static void quirk_intel_no_flr(struct pci_dev *dev)
|
|
|
}
|
|
|
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x1502, quirk_intel_no_flr);
|
|
|
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x1503, quirk_intel_no_flr);
|
|
|
+
|
|
|
+#ifdef CONFIG_PCI_ATS
|
|
|
+/*
|
|
|
+ * Some devices have a broken ATS implementation causing IOMMU stalls.
|
|
|
+ * Don't use ATS for those devices.
|
|
|
+ */
|
|
|
+static void quirk_no_ats(struct pci_dev *pdev)
|
|
|
+{
|
|
|
+ dev_info(&pdev->dev, "disabling ATS (broken on this device)\n");
|
|
|
+ pdev->ats_cap = 0;
|
|
|
+}
|
|
|
+
|
|
|
+/* AMD Stoney platform GPU */
|
|
|
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, 0x98e4, quirk_no_ats);
|
|
|
+#endif /* CONFIG_PCI_ATS */
|