summaryrefslogtreecommitdiffstats
path: root/drivers/iommu/iommu.c
diff options
context:
space:
mode:
authorThierry Reding <treding@nvidia.com>2020-05-11 18:10:00 +0200
committerJoerg Roedel <jroedel@suse.de>2020-05-13 10:42:14 +0200
commitf38338cf0691b5fae5f9a46d188eef92ab9e6296 (patch)
tree21f2182ba6772f94c427e4fd228ed5485fc220b5 /drivers/iommu/iommu.c
parentcfcccbe8879f79bc9f8a162bcb482c74b8768094 (diff)
downloadlinux-stable-f38338cf0691b5fae5f9a46d188eef92ab9e6296.tar.gz
linux-stable-f38338cf0691b5fae5f9a46d188eef92ab9e6296.tar.bz2
linux-stable-f38338cf0691b5fae5f9a46d188eef92ab9e6296.zip
iommu: Do not probe devices on IOMMU-less busses
The host1x bus implemented on Tegra SoCs is primarily an abstraction to create logical device from multiple platform devices. Since the devices in such a setup are typically hierarchical, DMA setup still needs to be done so that DMA masks can be properly inherited, but we don't actually want to attach the host1x logical devices to any IOMMU. The platform devices that make up the logical device are responsible for memory bus transactions, so it is them that will need to be attached to the IOMMU. Add a check to __iommu_probe_device() that aborts IOMMU setup early for busses that don't have the IOMMU operations pointer set since they will cause a crash otherwise. Signed-off-by: Thierry Reding <treding@nvidia.com> Link: https://lore.kernel.org/r/20200511161000.3853342-1-thierry.reding@gmail.com Signed-off-by: Joerg Roedel <jroedel@suse.de>
Diffstat (limited to 'drivers/iommu/iommu.c')
-rw-r--r--drivers/iommu/iommu.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
index a9e5618cde80..9d1d917e1050 100644
--- a/drivers/iommu/iommu.c
+++ b/drivers/iommu/iommu.c
@@ -195,6 +195,9 @@ static int __iommu_probe_device(struct device *dev, struct list_head *group_list
struct iommu_group *group;
int ret;
+ if (!ops)
+ return -ENODEV;
+
if (!dev_iommu_get(dev))
return -ENOMEM;