forked from Minki/linux
Merge branch 'pci/acs'
- Enable Translation Blocking for external devices (Rajat Jain) * pci/acs: PCI/ACS: Enable Translation Blocking for external devices
This commit is contained in:
commit
97d0260bf3
@ -876,6 +876,10 @@ static void pci_std_enable_acs(struct pci_dev *dev)
|
||||
/* Upstream Forwarding */
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
{
|
||||
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)
|
||||
ctrl |= (cap & PCI_ACS_CR);
|
||||
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_info(dev, "Intel SPT PCH root port ACS workaround enabled\n");
|
||||
|
Loading…
Reference in New Issue
Block a user