This function can only be called on the default_domain. Trivally pass it
in. In all three existing cases, the default domain was just attached to
the device.
This avoids iommu_setup_dma_ops() calling iommu_get_domain_for_dev() the
that will be used by external callers.
Suggested-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>
---
drivers/iommu/dma-iommu.h | 5 +++--
drivers/iommu/dma-iommu.c | 4 +---
drivers/iommu/iommu.c | 6 +++---
3 files changed, 7 insertions(+), 8 deletions(-)
diff --git a/drivers/iommu/dma-iommu.h b/drivers/iommu/dma-iommu.h
index eca201c1f9639..040d002525632 100644
--- a/drivers/iommu/dma-iommu.h
+++ b/drivers/iommu/dma-iommu.h
@@ -9,7 +9,7 @@
#ifdef CONFIG_IOMMU_DMA
-void iommu_setup_dma_ops(struct device *dev);
+void iommu_setup_dma_ops(struct device *dev, struct iommu_domain *domain);
int iommu_get_dma_cookie(struct iommu_domain *domain);
void iommu_put_dma_cookie(struct iommu_domain *domain);
@@ -26,7 +26,8 @@ extern bool iommu_dma_forcedac;
#else /* CONFIG_IOMMU_DMA */
-static inline void iommu_setup_dma_ops(struct device *dev)
+static inline void iommu_setup_dma_ops(struct device *dev,
+ struct iommu_domain *domain)
{
}
diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c
index 7944a3af4545e..e8ffb50c66dbf 100644
--- a/drivers/iommu/dma-iommu.c
+++ b/drivers/iommu/dma-iommu.c
@@ -2096,10 +2096,8 @@ void dma_iova_destroy(struct device *dev, struct dma_iova_state *state,
}
EXPORT_SYMBOL_GPL(dma_iova_destroy);
-void iommu_setup_dma_ops(struct device *dev)
+void iommu_setup_dma_ops(struct device *dev, struct iommu_domain *domain)
{
- struct iommu_domain *domain = iommu_get_domain_for_dev(dev);
-
if (dev_is_pci(dev))
dev->iommu->pci_32bit_workaround = !iommu_dma_forcedac;
diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
index 170e522b5bda4..1e322f87b1710 100644
--- a/drivers/iommu/iommu.c
+++ b/drivers/iommu/iommu.c
@@ -661,7 +661,7 @@ static int __iommu_probe_device(struct device *dev, struct list_head *group_list
}
if (group->default_domain)
- iommu_setup_dma_ops(dev);
+ iommu_setup_dma_ops(dev, group->default_domain);
mutex_unlock(&group->mutex);
@@ -1949,7 +1949,7 @@ static int bus_iommu_probe(const struct bus_type *bus)
return ret;
}
for_each_group_device(group, gdev)
- iommu_setup_dma_ops(gdev->dev);
+ iommu_setup_dma_ops(gdev->dev, group->default_domain);
mutex_unlock(&group->mutex);
/*
@@ -3155,7 +3155,7 @@ static ssize_t iommu_group_store_type(struct iommu_group *group,
/* Make sure dma_ops is appropriatley set */
for_each_group_device(group, gdev)
- iommu_setup_dma_ops(gdev->dev);
+ iommu_setup_dma_ops(gdev->dev, group->default_domain);
out_unlock:
mutex_unlock(&group->mutex);
--
2.43.0
> From: Tian, Kevin > Sent: Friday, November 14, 2025 5:17 PM > > > From: Nicolin Chen <nicolinc@nvidia.com> > > Sent: Tuesday, November 11, 2025 1:13 PM > > > > This function can only be called on the default_domain. Trivally pass it > > in. In all three existing cases, the default domain was just attached to > > the device. > > > > This avoids iommu_setup_dma_ops() calling iommu_get_domain_for_dev() > > the that will be used by external callers. > > remove 'the' before 'that' Reviewed-by: Kevin Tian<kevin.tian@intel.com>
> From: Nicolin Chen <nicolinc@nvidia.com> > Sent: Tuesday, November 11, 2025 1:13 PM > > This function can only be called on the default_domain. Trivally pass it > in. In all three existing cases, the default domain was just attached to > the device. > > This avoids iommu_setup_dma_ops() calling iommu_get_domain_for_dev() > the that will be used by external callers. remove 'the' before 'that'
On 11/11/25 13:12, Nicolin Chen wrote: > This function can only be called on the default_domain. Trivally pass it > in. In all three existing cases, the default domain was just attached to > the device. > > This avoids iommu_setup_dma_ops() calling iommu_get_domain_for_dev() the > that will be used by external callers. > > Suggested-by: Jason Gunthorpe<jgg@nvidia.com> > Signed-off-by: Nicolin Chen<nicolinc@nvidia.com> > --- > drivers/iommu/dma-iommu.h | 5 +++-- > drivers/iommu/dma-iommu.c | 4 +--- > drivers/iommu/iommu.c | 6 +++--- > 3 files changed, 7 insertions(+), 8 deletions(-) Reviewed-by: Lu Baolu <baolu.lu@linux.intel.com>
© 2016 - 2026 Red Hat, Inc.