Commit 3529375e authored by Jason Gunthorpe's avatar Jason Gunthorpe Committed by Joerg Roedel
Browse files

iommu: Convert simple drivers with DOMAIN_DMA to domain_alloc_paging()



These drivers are all trivially converted since the function is only
called if the domain type is going to be
IOMMU_DOMAIN_UNMANAGED/DMA.

Tested-by: default avatarHeiko Stuebner <heiko@sntech.de>
Tested-by: default avatarSteven Price <steven.price@arm.com>
Tested-by: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
Tested-by: default avatarNicolin Chen <nicolinc@nvidia.com>
Reviewed-by: default avatarLu Baolu <baolu.lu@linux.intel.com>
Reviewed-by: default avatarJerry Snitselaar <jsnitsel@redhat.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
Tested-by: Yong Wu <yong.wu@mediatek.com>  #For mtk_iommu.c
Link: https://lore.kernel.org/r/23-v8-81230027b2fa+9d-iommu_all_defdom_jgg@nvidia.com


Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
parent 4601cd2d
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -332,12 +332,10 @@ static int qcom_iommu_init_domain(struct iommu_domain *domain,
	return ret;
}

static struct iommu_domain *qcom_iommu_domain_alloc(unsigned type)
static struct iommu_domain *qcom_iommu_domain_alloc_paging(struct device *dev)
{
	struct qcom_iommu_domain *qcom_domain;

	if (type != IOMMU_DOMAIN_UNMANAGED && type != IOMMU_DOMAIN_DMA)
		return NULL;
	/*
	 * Allocate the domain and initialise some of its data structures.
	 * We can't really do anything meaningful until we've added a
@@ -605,7 +603,7 @@ static int qcom_iommu_of_xlate(struct device *dev, struct of_phandle_args *args)
static const struct iommu_ops qcom_iommu_ops = {
	.identity_domain = &qcom_iommu_identity_domain,
	.capable	= qcom_iommu_capable,
	.domain_alloc	= qcom_iommu_domain_alloc,
	.domain_alloc_paging = qcom_iommu_domain_alloc_paging,
	.probe_device	= qcom_iommu_probe_device,
	.device_group	= generic_device_group,
	.of_xlate	= qcom_iommu_of_xlate,
+2 −5
Original line number Diff line number Diff line
@@ -887,7 +887,7 @@ static inline void exynos_iommu_set_pte(sysmmu_pte_t *ent, sysmmu_pte_t val)
				   DMA_TO_DEVICE);
}

static struct iommu_domain *exynos_iommu_domain_alloc(unsigned type)
static struct iommu_domain *exynos_iommu_domain_alloc_paging(struct device *dev)
{
	struct exynos_iommu_domain *domain;
	dma_addr_t handle;
@@ -896,9 +896,6 @@ static struct iommu_domain *exynos_iommu_domain_alloc(unsigned type)
	/* Check if correct PTE offsets are initialized */
	BUG_ON(PG_ENT_SHIFT < 0 || !dma_dev);

	if (type != IOMMU_DOMAIN_DMA && type != IOMMU_DOMAIN_UNMANAGED)
		return NULL;

	domain = kzalloc(sizeof(*domain), GFP_KERNEL);
	if (!domain)
		return NULL;
@@ -1472,7 +1469,7 @@ static int exynos_iommu_of_xlate(struct device *dev,

static const struct iommu_ops exynos_iommu_ops = {
	.identity_domain = &exynos_identity_domain,
	.domain_alloc = exynos_iommu_domain_alloc,
	.domain_alloc_paging = exynos_iommu_domain_alloc_paging,
	.device_group = generic_device_group,
	.probe_device = exynos_iommu_probe_device,
	.release_device = exynos_iommu_release_device,
+2 −5
Original line number Diff line number Diff line
@@ -563,13 +563,10 @@ static irqreturn_t ipmmu_irq(int irq, void *dev)
 * IOMMU Operations
 */

static struct iommu_domain *ipmmu_domain_alloc(unsigned type)
static struct iommu_domain *ipmmu_domain_alloc_paging(struct device *dev)
{
	struct ipmmu_vmsa_domain *domain;

	if (type != IOMMU_DOMAIN_UNMANAGED && type != IOMMU_DOMAIN_DMA)
		return NULL;

	domain = kzalloc(sizeof(*domain), GFP_KERNEL);
	if (!domain)
		return NULL;
@@ -892,7 +889,7 @@ static struct iommu_group *ipmmu_find_group(struct device *dev)

static const struct iommu_ops ipmmu_ops = {
	.identity_domain = &ipmmu_iommu_identity_domain,
	.domain_alloc = ipmmu_domain_alloc,
	.domain_alloc_paging = ipmmu_domain_alloc_paging,
	.probe_device = ipmmu_probe_device,
	.release_device = ipmmu_release_device,
	.probe_finalize = ipmmu_probe_finalize,
+2 −5
Original line number Diff line number Diff line
@@ -689,13 +689,10 @@ static int mtk_iommu_domain_finalise(struct mtk_iommu_domain *dom,
	return 0;
}

static struct iommu_domain *mtk_iommu_domain_alloc(unsigned type)
static struct iommu_domain *mtk_iommu_domain_alloc_paging(struct device *dev)
{
	struct mtk_iommu_domain *dom;

	if (type != IOMMU_DOMAIN_DMA && type != IOMMU_DOMAIN_UNMANAGED)
		return NULL;

	dom = kzalloc(sizeof(*dom), GFP_KERNEL);
	if (!dom)
		return NULL;
@@ -1019,7 +1016,7 @@ static void mtk_iommu_get_resv_regions(struct device *dev,

static const struct iommu_ops mtk_iommu_ops = {
	.identity_domain = &mtk_iommu_identity_domain,
	.domain_alloc	= mtk_iommu_domain_alloc,
	.domain_alloc_paging = mtk_iommu_domain_alloc_paging,
	.probe_device	= mtk_iommu_probe_device,
	.release_device	= mtk_iommu_release_device,
	.device_group	= mtk_iommu_device_group,
+2 −5
Original line number Diff line number Diff line
@@ -1043,13 +1043,10 @@ static int rk_iommu_attach_device(struct iommu_domain *domain,
	return ret;
}

static struct iommu_domain *rk_iommu_domain_alloc(unsigned type)
static struct iommu_domain *rk_iommu_domain_alloc_paging(struct device *dev)
{
	struct rk_iommu_domain *rk_domain;

	if (type != IOMMU_DOMAIN_UNMANAGED && type != IOMMU_DOMAIN_DMA)
		return NULL;

	if (!dma_dev)
		return NULL;

@@ -1172,7 +1169,7 @@ static int rk_iommu_of_xlate(struct device *dev,

static const struct iommu_ops rk_iommu_ops = {
	.identity_domain = &rk_identity_domain,
	.domain_alloc = rk_iommu_domain_alloc,
	.domain_alloc_paging = rk_iommu_domain_alloc_paging,
	.probe_device = rk_iommu_probe_device,
	.release_device = rk_iommu_release_device,
	.device_group = rk_iommu_device_group,
Loading