This driver just uses a constant, put it in domain_alloc_paging
and use the domain's value instead of ops during finalise.

Reviewed-by: Kevin Tian <[email protected]>
Signed-off-by: Jason Gunthorpe <[email protected]>
---
 drivers/iommu/mtk_iommu.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/iommu/mtk_iommu.c b/drivers/iommu/mtk_iommu.c
index cb95fecf6016d5..0e0285348d2b8e 100644
--- a/drivers/iommu/mtk_iommu.c
+++ b/drivers/iommu/mtk_iommu.c
@@ -648,7 +648,7 @@ static int mtk_iommu_domain_finalise(struct 
mtk_iommu_domain *dom,
        if (share_dom) {
                dom->iop = share_dom->iop;
                dom->cfg = share_dom->cfg;
-               dom->domain.pgsize_bitmap = share_dom->cfg.pgsize_bitmap;
+               dom->domain.pgsize_bitmap = share_dom->domain.pgsize_bitmap;
                goto update_iova_region;
        }
 
@@ -656,7 +656,7 @@ static int mtk_iommu_domain_finalise(struct 
mtk_iommu_domain *dom,
                .quirks = IO_PGTABLE_QUIRK_ARM_NS |
                        IO_PGTABLE_QUIRK_NO_PERMS |
                        IO_PGTABLE_QUIRK_ARM_MTK_EXT,
-               .pgsize_bitmap = mtk_iommu_ops.pgsize_bitmap,
+               .pgsize_bitmap = dom->domain.pgsize_bitmap,
                .ias = MTK_IOMMU_HAS_FLAG(data->plat_data, IOVA_34_EN) ? 34 : 
32,
                .iommu_dev = data->dev,
        };
@@ -675,9 +675,6 @@ static int mtk_iommu_domain_finalise(struct 
mtk_iommu_domain *dom,
                return -ENOMEM;
        }
 
-       /* Update our support page sizes bitmap */
-       dom->domain.pgsize_bitmap = dom->cfg.pgsize_bitmap;
-
        data->share_dom = dom;
 
 update_iova_region:
@@ -697,6 +694,7 @@ static struct iommu_domain 
*mtk_iommu_domain_alloc_paging(struct device *dev)
        if (!dom)
                return NULL;
        mutex_init(&dom->mutex);
+       dom->domain.pgsize_bitmap = SZ_4K | SZ_64K | SZ_1M | SZ_16M;
 
        return &dom->domain;
 }
@@ -1019,7 +1017,6 @@ static const struct iommu_ops mtk_iommu_ops = {
        .device_group   = mtk_iommu_device_group,
        .of_xlate       = mtk_iommu_of_xlate,
        .get_resv_regions = mtk_iommu_get_resv_regions,
-       .pgsize_bitmap  = SZ_4K | SZ_64K | SZ_1M | SZ_16M,
        .owner          = THIS_MODULE,
        .default_domain_ops = &(const struct iommu_domain_ops) {
                .attach_dev     = mtk_iommu_attach_device,
-- 
2.43.0


Reply via email to