Merge branch 'pci/virtualization' into next
authorBjorn Helgaas <bhelgaas@google.com>
Thu, 7 Sep 2017 18:24:41 +0000 (13:24 -0500)
committerBjorn Helgaas <bhelgaas@google.com>
Thu, 7 Sep 2017 18:24:41 +0000 (13:24 -0500)
* pci/virtualization:
  PCI: Disable VF decoding before pcibios_sriov_disable() updates resources
  PCI: Add ACS quirk for APM X-Gene devices
  PCI: Mark AMD Stoney GPU ATS as broken

Conflicts:
drivers/pci/quirks.c

1  2 
drivers/pci/quirks.c

@@@ -4665,18 -4696,17 +4679,33 @@@ static void quirk_intel_no_flr(struct p
  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);
  
 +static void quirk_no_ext_tags(struct pci_dev *pdev)
 +{
 +      struct pci_host_bridge *bridge = pci_find_host_bridge(pdev->bus);
 +
 +      if (!bridge)
 +              return;
 +
 +      bridge->no_ext_tags = 1;
 +      dev_info(&pdev->dev, "disabling Extended Tags (this device can't handle them)\n");
 +
 +      pci_walk_bus(bridge->bus, pci_configure_extended_tags, NULL);
 +}
 +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, 0x0140, quirk_no_ext_tags);
 +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, 0x0142, quirk_no_ext_tags);
 +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, 0x0144, quirk_no_ext_tags);
++
+ #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 */