On Mon, Jul 6, 2020 at 9:45 AM Bjorn Helgaas <helgaas@xxxxxxxxxx> wrote: > > On Mon, Jun 29, 2020 at 09:49:39PM -0700, Rajat Jain wrote: > > When enabling ACS, enable translation blocking for external facing ports > > and untrusted devices. > > > > Signed-off-by: Rajat Jain <rajatja@xxxxxxxxxx> > > --- > > v2: Commit log change > > > > drivers/pci/pci.c | 4 ++++ > > drivers/pci/quirks.c | 11 +++++++++++ > > 2 files changed, 15 insertions(+) > > > > diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c > > index d2ff987585855..79853b52658a2 100644 > > --- a/drivers/pci/pci.c > > +++ b/drivers/pci/pci.c > > @@ -3330,6 +3330,10 @@ static void pci_std_enable_acs(struct pci_dev *dev) > > /* Upstream Forwarding */ > > ctrl |= (cap & PCI_ACS_UF); > > > > + if (dev->external_facing || dev->untrusted) > > + /* Translation Blocking */ > > + ctrl |= (cap & PCI_ACS_TB); > > + > > pci_write_config_word(dev, pos + PCI_ACS_CTRL, ctrl); > > } > > > > diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c > > index b341628e47527..6294adeac4049 100644 > > --- a/drivers/pci/quirks.c > > +++ b/drivers/pci/quirks.c > > @@ -4934,6 +4934,13 @@ static void pci_quirk_enable_intel_rp_mpc_acs(struct pci_dev *dev) > > } > > } > > > > +/* > > + * Currently this quirk does the equivalent of > > + * PCI_ACS_RR | PCI_ACS_CR | PCI_ACS_UF | PCI_ACS_SV > > + * > > + * Currently missing, it also needs to do equivalent of PCI_ACS_TB, > > + * if dev->external_facing || dev->untrusted > > I don't understand this comment. Is this a "TODO"? Is there > something more that needs to be done here? Yes. I'll mark it as a TODO to make it more clear. > > After a patch is applied, a comment should describe the code as it is. > > > + */ > > static int pci_quirk_enable_intel_pch_acs(struct pci_dev *dev) > > { > > if (!pci_quirk_intel_pch_acs_match(dev)) > > @@ -4973,6 +4980,10 @@ 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) > > + /* Translation Blocking */ > > + 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"); > > -- > > 2.27.0.212.ge8ba1cc988-goog > >