Message ID | 1536607662-11690-1-git-send-email-Felix.Kuehling@amd.com (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
Series | [for-rc] PCI: Fix enabling of PASID on RC integrated endpoints | expand |
On Mon, Sep 10, 2018 at 03:27:42PM -0400, Felix Kuehling wrote: > Set the eetlp_prefix_path on PCIE_EXP_TYPE_RC_END devices to allow PASID > to be enabled on them. This fixes IOMMUv2 initialization on AMD Carrizo > APUs. > > Fixes: 7ce3f912ae ("PCI: Enable PASID only if entire path supports End-End TLP prefixes") > Link: https://bugzilla.kernel.org/show_bug.cgi?id=201079 > Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> Applied to for-linus for v4.19, thanks! > --- > drivers/pci/probe.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c > index ec78400..201f9e5 100644 > --- a/drivers/pci/probe.c > +++ b/drivers/pci/probe.c > @@ -2074,6 +2074,7 @@ static void pci_configure_eetlp_prefix(struct pci_dev *dev) > { > #ifdef CONFIG_PCI_PASID > struct pci_dev *bridge; > + int pcie_type; > u32 cap; > > if (!pci_is_pcie(dev)) > @@ -2083,7 +2084,9 @@ static void pci_configure_eetlp_prefix(struct pci_dev *dev) > if (!(cap & PCI_EXP_DEVCAP2_EE_PREFIX)) > return; > > - if (pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT) > + pcie_type = pci_pcie_type(dev); > + if (pcie_type == PCI_EXP_TYPE_ROOT_PORT || > + pcie_type == PCI_EXP_TYPE_RC_END) > dev->eetlp_prefix_path = 1; > else { > bridge = pci_upstream_bridge(dev); > -- > 2.7.4 >
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index ec78400..201f9e5 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -2074,6 +2074,7 @@ static void pci_configure_eetlp_prefix(struct pci_dev *dev) { #ifdef CONFIG_PCI_PASID struct pci_dev *bridge; + int pcie_type; u32 cap; if (!pci_is_pcie(dev)) @@ -2083,7 +2084,9 @@ static void pci_configure_eetlp_prefix(struct pci_dev *dev) if (!(cap & PCI_EXP_DEVCAP2_EE_PREFIX)) return; - if (pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT) + pcie_type = pci_pcie_type(dev); + if (pcie_type == PCI_EXP_TYPE_ROOT_PORT || + pcie_type == PCI_EXP_TYPE_RC_END) dev->eetlp_prefix_path = 1; else { bridge = pci_upstream_bridge(dev);
Set the eetlp_prefix_path on PCIE_EXP_TYPE_RC_END devices to allow PASID to be enabled on them. This fixes IOMMUv2 initialization on AMD Carrizo APUs. Fixes: 7ce3f912ae ("PCI: Enable PASID only if entire path supports End-End TLP prefixes") Link: https://bugzilla.kernel.org/show_bug.cgi?id=201079 Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> --- drivers/pci/probe.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)