diff options
Diffstat (limited to 'pci-mark-amd-stoney-gpu-ats-as-broken.patch')
-rw-r--r-- | pci-mark-amd-stoney-gpu-ats-as-broken.patch | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/pci-mark-amd-stoney-gpu-ats-as-broken.patch b/pci-mark-amd-stoney-gpu-ats-as-broken.patch new file mode 100644 index 000000000..167c40223 --- /dev/null +++ b/pci-mark-amd-stoney-gpu-ats-as-broken.patch @@ -0,0 +1,47 @@ +From 9b44b0b09decfbe388131a345ba780c57240a7a9 Mon Sep 17 00:00:00 2001 +From: Joerg Roedel <jroedel@suse.de> +Date: Tue, 11 Jul 2017 15:48:00 -0500 +Subject: PCI: Mark AMD Stoney GPU ATS as broken + +ATS is broken on this hardware and causes IOMMU stalls and system failure. +Disable ATS on these devices to make them usable again with IOMMU enabled. + +Note that the commit in the Fixes tag is not buggy; it just uncovers the +problem in the hardware by increasing the ATS flush rate. + +Link: https://lists.linuxfoundation.org/pipermail/iommu/2017-March/020836.html +Link: https://bugzilla.redhat.com/show_bug.cgi?id=1409201 +Fixes: b1516a14657a ("iommu/amd: Implement flush queue") +Signed-off-by: Joerg Roedel <jroedel@suse.de> +Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> +Acked-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/pci/quirks.c | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c +index 6967c6b..15ee4e9 100644 +--- a/drivers/pci/quirks.c ++++ b/drivers/pci/quirks.c +@@ -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 */ +-- +cgit v1.1 + |