Message ID | 20200911160854.484114-1-luca@z3ntu.xyz |
---|---|
State | Accepted |
Commit | 0a48db562c6264da2ae8013491efd6e8dc780520 |
Headers | show |
Series | drm/msm/adreno: fix probe without iommu | expand |
On Fri, Sep 11, 2020 at 06:08:53PM +0200, Luca Weiss wrote: > The function iommu_domain_alloc returns NULL on platforms without IOMMU > such as msm8974. This resulted in PTR_ERR(-ENODEV) being assigned to > gpu->aspace so the correct code path wasn't taken. > > Fixes: ccac7ce373c1 ("drm/msm: Refactor address space initialization") > Signed-off-by: Luca Weiss <luca@z3ntu.xyz> Reviewed-by: Jordan Crouse <jcrouse@codeaurora.org> > --- > drivers/gpu/drm/msm/adreno/adreno_gpu.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c > index 862dd35b27d3..6e8bef1a9ea2 100644 > --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c > +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c > @@ -189,10 +189,16 @@ struct msm_gem_address_space * > adreno_iommu_create_address_space(struct msm_gpu *gpu, > struct platform_device *pdev) > { > - struct iommu_domain *iommu = iommu_domain_alloc(&platform_bus_type); > - struct msm_mmu *mmu = msm_iommu_new(&pdev->dev, iommu); > + struct iommu_domain *iommu; > + struct msm_mmu *mmu; > struct msm_gem_address_space *aspace; > > + iommu = iommu_domain_alloc(&platform_bus_type); > + if (!iommu) > + return NULL; > + > + mmu = msm_iommu_new(&pdev->dev, iommu); > + > aspace = msm_gem_address_space_create(mmu, "gpu", SZ_16M, > 0xffffffff - SZ_16M); > > -- > 2.28.0 >
On Fri 11 Sep 11:08 CDT 2020, Luca Weiss wrote: > The function iommu_domain_alloc returns NULL on platforms without IOMMU > such as msm8974. This resulted in PTR_ERR(-ENODEV) being assigned to > gpu->aspace so the correct code path wasn't taken. > > Fixes: ccac7ce373c1 ("drm/msm: Refactor address space initialization") > Signed-off-by: Luca Weiss <luca@z3ntu.xyz> Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org> > --- > drivers/gpu/drm/msm/adreno/adreno_gpu.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c > index 862dd35b27d3..6e8bef1a9ea2 100644 > --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c > +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c > @@ -189,10 +189,16 @@ struct msm_gem_address_space * > adreno_iommu_create_address_space(struct msm_gpu *gpu, > struct platform_device *pdev) > { > - struct iommu_domain *iommu = iommu_domain_alloc(&platform_bus_type); > - struct msm_mmu *mmu = msm_iommu_new(&pdev->dev, iommu); > + struct iommu_domain *iommu; > + struct msm_mmu *mmu; > struct msm_gem_address_space *aspace; > > + iommu = iommu_domain_alloc(&platform_bus_type); > + if (!iommu) > + return NULL; > + > + mmu = msm_iommu_new(&pdev->dev, iommu); > + > aspace = msm_gem_address_space_create(mmu, "gpu", SZ_16M, > 0xffffffff - SZ_16M); > > -- > 2.28.0 >
diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c index 862dd35b27d3..6e8bef1a9ea2 100644 --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c @@ -189,10 +189,16 @@ struct msm_gem_address_space * adreno_iommu_create_address_space(struct msm_gpu *gpu, struct platform_device *pdev) { - struct iommu_domain *iommu = iommu_domain_alloc(&platform_bus_type); - struct msm_mmu *mmu = msm_iommu_new(&pdev->dev, iommu); + struct iommu_domain *iommu; + struct msm_mmu *mmu; struct msm_gem_address_space *aspace; + iommu = iommu_domain_alloc(&platform_bus_type); + if (!iommu) + return NULL; + + mmu = msm_iommu_new(&pdev->dev, iommu); + aspace = msm_gem_address_space_create(mmu, "gpu", SZ_16M, 0xffffffff - SZ_16M);
The function iommu_domain_alloc returns NULL on platforms without IOMMU such as msm8974. This resulted in PTR_ERR(-ENODEV) being assigned to gpu->aspace so the correct code path wasn't taken. Fixes: ccac7ce373c1 ("drm/msm: Refactor address space initialization") Signed-off-by: Luca Weiss <luca@z3ntu.xyz> --- drivers/gpu/drm/msm/adreno/adreno_gpu.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)