Commit 97d0260b authored by Bjorn Helgaas's avatar Bjorn Helgaas

Merge branch 'pci/acs'

- Enable Translation Blocking for external devices (Rajat Jain)

* pci/acs:
  PCI/ACS: Enable Translation Blocking for external devices
parents 9123e3a7 76fc8e85
...@@ -876,6 +876,10 @@ static void pci_std_enable_acs(struct pci_dev *dev) ...@@ -876,6 +876,10 @@ static void pci_std_enable_acs(struct pci_dev *dev)
/* Upstream Forwarding */ /* Upstream Forwarding */
ctrl |= (cap & PCI_ACS_UF); ctrl |= (cap & PCI_ACS_UF);
/* Enable Translation Blocking for external devices */
if (dev->external_facing || dev->untrusted)
ctrl |= (cap & PCI_ACS_TB);
pci_write_config_word(dev, pos + PCI_ACS_CTRL, ctrl); pci_write_config_word(dev, pos + PCI_ACS_CTRL, ctrl);
} }
......
...@@ -4949,6 +4949,13 @@ static void pci_quirk_enable_intel_rp_mpc_acs(struct pci_dev *dev) ...@@ -4949,6 +4949,13 @@ static void pci_quirk_enable_intel_rp_mpc_acs(struct pci_dev *dev)
} }
} }
/*
* Currently this quirk does the equivalent of
* PCI_ACS_SV | PCI_ACS_RR | PCI_ACS_CR | PCI_ACS_UF
*
* TODO: This quirk also needs to do equivalent of PCI_ACS_TB,
* if dev->external_facing || dev->untrusted
*/
static int pci_quirk_enable_intel_pch_acs(struct pci_dev *dev) static int pci_quirk_enable_intel_pch_acs(struct pci_dev *dev)
{ {
if (!pci_quirk_intel_pch_acs_match(dev)) if (!pci_quirk_intel_pch_acs_match(dev))
...@@ -4988,6 +4995,9 @@ static int pci_quirk_enable_intel_spt_pch_acs(struct pci_dev *dev) ...@@ -4988,6 +4995,9 @@ static int pci_quirk_enable_intel_spt_pch_acs(struct pci_dev *dev)
ctrl |= (cap & PCI_ACS_CR); ctrl |= (cap & PCI_ACS_CR);
ctrl |= (cap & PCI_ACS_UF); ctrl |= (cap & PCI_ACS_UF);
if (dev->external_facing || dev->untrusted)
ctrl |= (cap & PCI_ACS_TB);
pci_write_config_dword(dev, pos + INTEL_SPT_ACS_CTRL, ctrl); pci_write_config_dword(dev, pos + INTEL_SPT_ACS_CTRL, ctrl);
pci_info(dev, "Intel SPT PCH root port ACS workaround enabled\n"); pci_info(dev, "Intel SPT PCH root port ACS workaround enabled\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment