On 2024-05-15 17:09:02, Marc Gonzalez wrote: > When create_address_space() fails (e.g. when smmu node is disabled) > msm_gpu_init() silently fails: > > msm_dpu c901000.display-controller: failed to load adreno gpu > msm_dpu c901000.display-controller: failed to bind 5000000.gpu (ops a3xx_ops): -19 > > Log create_address_space() failure. > > Signed-off-by: Marc Gonzalez <mgonzalez@xxxxxxxxxx> Thanks! Suggested-by: Marijn Suijten <marijn.suijten@xxxxxxxxxxxxxx> And, after checking the below: Reviewed-by: Marijn Suijten <marijn.suijten@xxxxxxxxxxxxxx> > --- > drivers/gpu/drm/msm/msm_gpu.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/gpu/drm/msm/msm_gpu.c b/drivers/gpu/drm/msm/msm_gpu.c > index 655002b21b0d5..f1e692866cc38 100644 > --- a/drivers/gpu/drm/msm/msm_gpu.c > +++ b/drivers/gpu/drm/msm/msm_gpu.c > @@ -941,6 +941,7 @@ int msm_gpu_init(struct drm_device *drm, struct platform_device *pdev, > DRM_DEV_INFO(drm->dev, "%s: no IOMMU, fallback to VRAM carveout!\n", name); > else if (IS_ERR(gpu->aspace)) { > ret = PTR_ERR(gpu->aspace); > + DRM_DEV_ERROR(drm->dev, "could not create address space: %d\n", ret); Maybe this wasn't done before because this also includes `-EPROBE_DEFER`, so you might want to wrap this in if (ret != -EPROBE_DEFER) DRM_DEV_ERROR... But then dev_err_probe() was built specifically to be less verbose about this (and track defer reasons). While this is an init and not probe function, it's called from struct component_ops->bind where it should be okay to call that, as long as you have access to the component `struct device*` and not its master (IIRC). - Marijn > goto fail; > } > > -- > 2.34.1 >