On Mon, Aug 12, 2024 at 03:10:34PM GMT, Lu Baolu wrote: > Commit <17de3f5fdd35> ("iommu: Retire bus ops") removes iommu ops from > the bus structure. The iommu subsystem no longer relies on bus for > operations. So iommu_domain_alloc() interface is no longer relevant. > > Normally, iommu_paging_domain_alloc() could be a replacement for > iommu_domain_alloc() if the caller has the right device for IOMMU API > use. Unfortunately, this is not the case for this driver. > > Iterate the devices on the platform bus and find a suitable device > whose device DMA is translated by an IOMMU. Then use this device to > allocate an iommu domain. The iommu subsystem prevents domains > allocated by one iommu driver from being attached to devices managed > by any different iommu driver. > > Signed-off-by: Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx> > Link: https://lore.kernel.org/r/20240610085555.88197-20-baolu.lu@xxxxxxxxxxxxxxx > --- > drivers/gpu/drm/tegra/drm.c | 34 +++++++++++++++++++++++++--------- > 1 file changed, 25 insertions(+), 9 deletions(-) Actually I think we can just do something like this: --- >8 --- diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c index d9f0728c3afd..d35e411d536b 100644 --- a/drivers/gpu/drm/tegra/drm.c +++ b/drivers/gpu/drm/tegra/drm.c @@ -1150,7 +1150,7 @@ static int host1x_drm_probe(struct host1x_device *dev) } if (host1x_drm_wants_iommu(dev) && iommu_present(&platform_bus_type)) { - tegra->domain = iommu_domain_alloc(&platform_bus_type); + tegra->domain = iommu_paging_domain_alloc(dev->dev.parent); if (!tegra->domain) { err = -ENOMEM; goto free; --- >8 --- That refers to the physical device that the host1x_device virtual device was instantiated from and is a common parent to all physical devices that are part of the virtual device. Thierry
Attachment:
signature.asc
Description: PGP signature