Commit 230309d0 authored by Tom Murphy's avatar Tom Murphy Committed by Will Deacon
Browse files

iommu: Add iommu_dma_free_cpu_cached_iovas()



Add a iommu_dma_free_cpu_cached_iovas function to allow drivers which
use the dma-iommu ops to free cached cpu iovas.

Signed-off-by: default avatarTom Murphy <murphyt7@tcd.ie>
Signed-off-by: default avatarLu Baolu <baolu.lu@linux.intel.com>
Tested-by: default avatarLogan Gunthorpe <logang@deltatee.com>
Link: https://lore.kernel.org/r/20201124082057.2614359-3-baolu.lu@linux.intel.com


Signed-off-by: default avatarWill Deacon <will@kernel.org>
parent 2a2b8eaa
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -49,6 +49,15 @@ struct iommu_dma_cookie {
	struct iommu_domain		*fq_domain;
};

void iommu_dma_free_cpu_cached_iovas(unsigned int cpu,
		struct iommu_domain *domain)
{
	struct iommu_dma_cookie *cookie = domain->iova_cookie;
	struct iova_domain *iovad = &cookie->iovad;

	free_cpu_cached_iovas(cpu, iovad);
}

static void iommu_dma_entry_dtor(unsigned long data)
{
	struct page *freelist = (struct page *)data;
+8 −0
Original line number Diff line number Diff line
@@ -37,6 +37,9 @@ void iommu_dma_compose_msi_msg(struct msi_desc *desc,

void iommu_dma_get_resv_regions(struct device *dev, struct list_head *list);

void iommu_dma_free_cpu_cached_iovas(unsigned int cpu,
		struct iommu_domain *domain);

#else /* CONFIG_IOMMU_DMA */

struct iommu_domain;
@@ -78,5 +81,10 @@ static inline void iommu_dma_get_resv_regions(struct device *dev, struct list_he
{
}

static inline void iommu_dma_free_cpu_cached_iovas(unsigned int cpu,
		struct iommu_domain *domain)
{
}

#endif	/* CONFIG_IOMMU_DMA */
#endif	/* __DMA_IOMMU_H */