mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 03:24:45 +01:00
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: Jason Gunthorpe <jgg@nvidia.com> Reviewed-by: Kevin Tian <kevin.tian@intel.com> Reviewed-by: Lu Baolu <baolu.lu@linux.intel.com> Reviewed-by: Jason Gunthorpe <jgg@nvidia.com> Tested-by: Dheeraj Kumar Srivastava <dheerajkumar.srivastava@amd.com> Signed-off-by: Nicolin Chen <nicolinc@nvidia.com> Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
This commit is contained in:
parent
5d5388b0e1
commit
4a73abb965
3 changed files with 7 additions and 8 deletions
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue