]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
iommu/qcom: Remove iommu_ops pgsize_bitmap
authorJason Gunthorpe <jgg@nvidia.com>
Mon, 9 Jun 2025 20:41:30 +0000 (17:41 -0300)
committerJoerg Roedel <joerg.roedel@amd.com>
Fri, 27 Jun 2025 06:56:00 +0000 (08:56 +0200)
This driver just uses a constant, put it in domain_alloc_paging
and use the domain's value instead of ops during init_domain.

Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Tested-by: Nicolin Chen <nicolinc@nvidia.com>
Link: https://lore.kernel.org/r/6-v2-68a2e1ba507c+1fb-iommu_rm_ops_pgsize_jgg@nvidia.com
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
drivers/iommu/arm/arm-smmu/qcom_iommu.c

index 3907924646a20cf983ad7804a190123c74453376..d599f778e9f47bf12cd87e2916973425a791b4a5 100644 (file)
@@ -229,7 +229,7 @@ static int qcom_iommu_init_domain(struct iommu_domain *domain,
                goto out_unlock;
 
        pgtbl_cfg = (struct io_pgtable_cfg) {
-               .pgsize_bitmap  = qcom_iommu_ops.pgsize_bitmap,
+               .pgsize_bitmap  = domain->pgsize_bitmap,
                .ias            = 32,
                .oas            = 40,
                .tlb            = &qcom_flush_ops,
@@ -246,8 +246,6 @@ static int qcom_iommu_init_domain(struct iommu_domain *domain,
                goto out_clear_iommu;
        }
 
-       /* Update the domain's page sizes to reflect the page table format */
-       domain->pgsize_bitmap = pgtbl_cfg.pgsize_bitmap;
        domain->geometry.aperture_end = (1ULL << pgtbl_cfg.ias) - 1;
        domain->geometry.force_aperture = true;
 
@@ -337,6 +335,7 @@ static struct iommu_domain *qcom_iommu_domain_alloc_paging(struct device *dev)
 
        mutex_init(&qcom_domain->init_mutex);
        spin_lock_init(&qcom_domain->pgtbl_lock);
+       qcom_domain->domain.pgsize_bitmap = SZ_4K | SZ_64K | SZ_1M | SZ_16M;
 
        return &qcom_domain->domain;
 }
@@ -598,7 +597,6 @@ static const struct iommu_ops qcom_iommu_ops = {
        .probe_device   = qcom_iommu_probe_device,
        .device_group   = generic_device_group,
        .of_xlate       = qcom_iommu_of_xlate,
-       .pgsize_bitmap  = SZ_4K | SZ_64K | SZ_1M | SZ_16M,
        .default_domain_ops = &(const struct iommu_domain_ops) {
                .attach_dev     = qcom_iommu_attach_dev,
                .map_pages      = qcom_iommu_map,