Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9d27e39d authored by Felix Kuehling's avatar Felix Kuehling Committed by Bjorn Helgaas
Browse files

PCI: Fix enabling of PASID on RC integrated endpoints

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.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=201079


Fixes: 7ce3f912 ("PCI: Enable PASID only if entire path supports End-End TLP prefixes")
Signed-off-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
parent bfc45606
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -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);