Commit 4a73abb9 authored by Nicolin Chen's avatar Nicolin Chen Committed by Joerg Roedel
Browse files

iommu: Tidy domain for iommu_setup_dma_ops()



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() that
will be used by external callers.

Suggested-by: default avatarJason Gunthorpe <jgg@nvidia.com>
Reviewed-by: default avatarKevin Tian <kevin.tian@intel.com>
Reviewed-by: default avatarLu Baolu <baolu.lu@linux.intel.com>
Reviewed-by: default avatarJason Gunthorpe <jgg@nvidia.com>
Tested-by: default avatarDheeraj Kumar Srivastava <dheerajkumar.srivastava@amd.com>
Signed-off-by: default avatarNicolin Chen <nicolinc@nvidia.com>
Signed-off-by: default avatarJoerg Roedel <joerg.roedel@amd.com>
parent 5d5388b0
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -2097,10 +2097,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;

+3 −2
Original line number Diff line number Diff line
@@ -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)
{
}

+3 −3
Original line number Diff line number Diff line
@@ -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);