mirror of https://gitee.com/openkylin/linux.git
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: b1516a1465
("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>
This commit is contained in:
parent
16f73eb02d
commit
9b44b0b09d
|
@ -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 */
|
||||
|
|
Loading…
Reference in New Issue