Message ID | 20200511161000.3853342-1-thierry.reding@gmail.com |
---|---|
State | Accepted |
Headers | show |
Series | iommu: Do not probe devices on IOMMU-less busses | expand |
On Mon, May 11, 2020 at 06:10:00PM +0200, Thierry Reding wrote: > From: Thierry Reding <treding@nvidia.com> > > 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> > --- > Note that this is probably also required for the BCMA bus implemented in > drivers/bcma/main.c since no IOMMU operations are ever assigned to that > either. > > drivers/iommu/iommu.c | 3 +++ > 1 file changed, 3 insertions(+) Applied, thanks.
diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c index 9888a3c82b15..4050569188be 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -196,6 +196,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;