diff options
author | Robin Murphy <robin.murphy@arm.com> | 2017-09-21 11:20:58 +0100 |
---|---|---|
committer | Joerg Roedel <jroedel@suse.de> | 2017-09-22 12:05:43 +0200 |
commit | c0d05cde2a685cd6486390c62be684ce456d84d6 (patch) | |
tree | 7a263cadfa771e7eddec79248fecff899a3e34d4 /drivers/iommu | |
parent | 986a5f70173626eea9863fee6d6e029f0f2bc361 (diff) | |
download | linux-stable-c0d05cde2a685cd6486390c62be684ce456d84d6.tar.gz linux-stable-c0d05cde2a685cd6486390c62be684ce456d84d6.tar.bz2 linux-stable-c0d05cde2a685cd6486390c62be684ce456d84d6.zip |
iommu/of: Remove PCI host bridge node check
of_pci_iommu_init() tries to be clever and stop its alias walk at the
device represented by master_np, in case of weird PCI topologies where
the bridge to the IOMMU and the rest of the system is not at the root.
It turns out this is a bit short-sighted, since there are plenty of
other callers of pci_for_each_dma_alias() which would also need the same
behaviour in that situation, and the only platform so far with such a
topology (Cavium ThunderX2) already solves it more generally via a PCI
quirk. As this check is effectively redundant, and returning a boolean
value as an int is a bit broken anyway, let's just get rid of it.
Reported-by: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
Fixes: d87beb749281 ("iommu/of: Handle PCI aliases properly")
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Tested-by: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Diffstat (limited to 'drivers/iommu')
-rw-r--r-- | drivers/iommu/of_iommu.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/drivers/iommu/of_iommu.c b/drivers/iommu/of_iommu.c index e60e3dba85a0..50947ebb6d17 100644 --- a/drivers/iommu/of_iommu.c +++ b/drivers/iommu/of_iommu.c @@ -157,10 +157,7 @@ static int of_pci_iommu_init(struct pci_dev *pdev, u16 alias, void *data) err = of_iommu_xlate(info->dev, &iommu_spec); of_node_put(iommu_spec.np); - if (err) - return err; - - return info->np == pdev->bus->dev.of_node; + return err; } const struct iommu_ops *of_iommu_configure(struct device *dev, |