]> www.infradead.org Git - users/hch/misc.git/commitdiff
drm/msm: don't return NULL from msm_iommu_new()
authorDmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Wed, 3 Sep 2025 10:51:51 +0000 (13:51 +0300)
committerRob Clark <robin.clark@oss.qualcomm.com>
Mon, 8 Sep 2025 14:24:58 +0000 (07:24 -0700)
As we've dropped no-IOMMU support, there is no reason to specially
handle the no-IOMMU case inside msm_iommu_new(). Make it return -ENODEV
if there is no IOMMU (instead of returning NULL) and simplify all
calling sites accordingly.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Patchwork: https://patchwork.freedesktop.org/patch/672561/
Signed-off-by: Rob Clark <robin.clark@oss.qualcomm.com>
drivers/gpu/drm/msm/adreno/a6xx_gmu.c
drivers/gpu/drm/msm/adreno/adreno_gpu.c
drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c
drivers/gpu/drm/msm/msm_iommu.c
drivers/gpu/drm/msm/msm_kms.c

index 28e6705c6da682c7b41c748e375dda59a6551898..92958c73a5ee605a45314ebbcf2136754fe2fae7 100644 (file)
@@ -1318,8 +1318,6 @@ static int a6xx_gmu_memory_probe(struct drm_device *drm, struct a6xx_gmu *gmu)
        struct msm_mmu *mmu;
 
        mmu = msm_iommu_new(gmu->dev, 0);
-       if (!mmu)
-               return -ENODEV;
        if (IS_ERR(mmu))
                return PTR_ERR(mmu);
 
index 8c6336b007dc0798ed514705d78d1078401f1d84..afaa3cfefd357dc0230994c8b5830a14c6d7a352 100644 (file)
@@ -202,9 +202,7 @@ adreno_iommu_create_vm(struct msm_gpu *gpu,
        u64 start, size;
 
        mmu = msm_iommu_gpu_new(&pdev->dev, gpu, quirks);
-       if (!mmu)
-               return ERR_PTR(-ENODEV);
-       else if (IS_ERR_OR_NULL(mmu))
+       if (IS_ERR(mmu))
                return ERR_CAST(mmu);
 
        geometry = msm_iommu_get_geometry(mmu);
index 4d1ea9b2619170335ab4d2a2ee46f31e785b2c02..66bfa96965be275270751cba770521cfde2a7004 100644 (file)
@@ -458,14 +458,16 @@ static int mdp4_kms_init(struct drm_device *dev)
        mdp4_disable(mdp4_kms);
        mdelay(16);
 
+       if (!device_iommu_mapped(&pdev->dev)) {
+               DRM_DEV_INFO(dev->dev, "no IOMMU, bailing out\n");
+               ret = -ENODEV;
+               goto fail;
+       }
+
        mmu = msm_iommu_new(&pdev->dev, 0);
        if (IS_ERR(mmu)) {
                ret = PTR_ERR(mmu);
                goto fail;
-       } else if (!mmu) {
-               DRM_DEV_INFO(dev->dev, "no IOMMU, bailing out\n");
-               ret = -ENODEV;
-               goto fail;
        } else {
                vm  = msm_gem_vm_create(dev, mmu, "mdp4",
                                        0x1000, 0x100000000 - 0x1000,
index 89cdda73711ae10cb5e25627541e2d662355a279..0e18619f96cb3f9c6457742af9180f184cdc1510 100644 (file)
@@ -721,7 +721,7 @@ struct msm_mmu *msm_iommu_new(struct device *dev, unsigned long quirks)
        int ret;
 
        if (!device_iommu_mapped(dev))
-               return NULL;
+               return ERR_PTR(-ENODEV);
 
        domain = iommu_paging_domain_alloc(dev);
        if (IS_ERR(domain))
@@ -756,7 +756,7 @@ struct msm_mmu *msm_iommu_disp_new(struct device *dev, unsigned long quirks)
        struct msm_mmu *mmu;
 
        mmu = msm_iommu_new(dev, quirks);
-       if (IS_ERR_OR_NULL(mmu))
+       if (IS_ERR(mmu))
                return mmu;
 
        iommu = to_msm_iommu(mmu);
@@ -772,7 +772,7 @@ struct msm_mmu *msm_iommu_gpu_new(struct device *dev, struct msm_gpu *gpu, unsig
        struct msm_mmu *mmu;
 
        mmu = msm_iommu_new(dev, quirks);
-       if (IS_ERR_OR_NULL(mmu))
+       if (IS_ERR(mmu))
                return mmu;
 
        iommu = to_msm_iommu(mmu);
index 4c4dcb095c4df97de42d0673aa2842010a249dca..725367157d90e45854cb8a22ea25a3fa3bb218be 100644 (file)
@@ -193,17 +193,17 @@ struct drm_gpuvm *msm_kms_init_vm(struct drm_device *dev)
         */
        if (device_iommu_mapped(mdp_dev))
                iommu_dev = mdp_dev;
-       else
+       else if (device_iommu_mapped(mdss_dev))
                iommu_dev = mdss_dev;
-       mmu = msm_iommu_disp_new(iommu_dev, 0);
-       if (IS_ERR(mmu))
-               return ERR_CAST(mmu);
-
-       if (!mmu) {
+       else {
                drm_info(dev, "no IOMMU, bailing out\n");
                return ERR_PTR(-ENODEV);
        }
 
+       mmu = msm_iommu_disp_new(iommu_dev, 0);
+       if (IS_ERR(mmu))
+               return ERR_CAST(mmu);
+
        vm = msm_gem_vm_create(dev, mmu, "mdp_kms",
                               0x1000, 0x100000000 - 0x1000, true);
        if (IS_ERR(vm)) {