Re: [PATCH v2] drm: rcar-du: Use dev_err_probe() to record cause of KMS init errors
Quoting Laurent Pinchart (2023-06-04 11:49:58) > The (large) rcar_du_modeset_init() function can fail for many reasons, > two of two involving probe deferral. Use dev_err_probe() in those code > paths to record the cause of the probe deferral, in order to help > debugging probe issues. > > Signed-off-by: Laurent Pinchart > --- > Change since v1: > > - Fix compilation Always helps ;-) > --- > drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c | 4 > drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c | 8 ++-- > 2 files changed, 10 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c > b/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c > index 12a8839fe3be..5b752adb1b02 100644 > --- a/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c > +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c > @@ -701,6 +701,10 @@ static int rcar_du_probe(struct platform_device *pdev) > /* DRM/KMS objects */ > ret = rcar_du_modeset_init(rcdu); > if (ret < 0) { > + /* > +* Don't use dev_err_probe(), as it would overwrite the probe > +* deferral reason recorded in rcar_du_modeset_init(). > +*/ > if (ret != -EPROBE_DEFER) > dev_err(>dev, > "failed to initialize DRM/KMS (%d)\n", ret); > diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c > b/drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c > index adfb36b0e815..78b665984e35 100644 > --- a/drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c > +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c > @@ -932,8 +932,10 @@ int rcar_du_modeset_init(struct rcar_du_device *rcdu) > > /* Initialize the Color Management Modules. */ > ret = rcar_du_cmm_init(rcdu); > - if (ret) > + if (ret) { > + dev_err_probe(rcdu->dev, ret, "failed to initialize CMM\n"); This could remain a single line return statement with: return dev_err_probe(rcdu->dev, ret, "failed to initialize CMM\n"); Or if you're really concerned about 80 chars: return dev_err_probe(rcdu->dev, ret, "failed to initialize CMM\n"); which is still one line cheaper than adding braces to the if statement! Anyway, either way is functional so: Reviewed-by: Kieran Bingham > return ret; > + } > > /* Create the CRTCs. */ > for (swindex = 0, hwindex = 0; swindex < rcdu->num_crtcs; ++hwindex) { > @@ -952,8 +954,10 @@ int rcar_du_modeset_init(struct rcar_du_device *rcdu) > > /* Initialize the encoders. */ > ret = rcar_du_encoders_init(rcdu); > - if (ret < 0) > + if (ret < 0) { > + dev_err_probe(rcdu->dev, ret, "failed to initialize > encoders\n"); (same here of course) > return ret; > + } > > if (ret == 0) { > dev_err(rcdu->dev, "error: no encoder could be > initialized\n"); > -- > Regards, > > Laurent Pinchart >
Re: [PATCH v2] drm: rcar-du: Use dev_err_probe() to record cause of KMS init errors
This should have read v3. On Sun, Jun 04, 2023 at 01:49:58PM +0300, Laurent Pinchart wrote: > The (large) rcar_du_modeset_init() function can fail for many reasons, > two of two involving probe deferral. Use dev_err_probe() in those code > paths to record the cause of the probe deferral, in order to help > debugging probe issues. > > Signed-off-by: Laurent Pinchart > --- > Change since v1: > > - Fix compilation > --- > drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c | 4 > drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c | 8 ++-- > 2 files changed, 10 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c > b/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c > index 12a8839fe3be..5b752adb1b02 100644 > --- a/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c > +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c > @@ -701,6 +701,10 @@ static int rcar_du_probe(struct platform_device *pdev) > /* DRM/KMS objects */ > ret = rcar_du_modeset_init(rcdu); > if (ret < 0) { > + /* > + * Don't use dev_err_probe(), as it would overwrite the probe > + * deferral reason recorded in rcar_du_modeset_init(). > + */ > if (ret != -EPROBE_DEFER) > dev_err(>dev, > "failed to initialize DRM/KMS (%d)\n", ret); > diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c > b/drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c > index adfb36b0e815..78b665984e35 100644 > --- a/drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c > +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c > @@ -932,8 +932,10 @@ int rcar_du_modeset_init(struct rcar_du_device *rcdu) > > /* Initialize the Color Management Modules. */ > ret = rcar_du_cmm_init(rcdu); > - if (ret) > + if (ret) { > + dev_err_probe(rcdu->dev, ret, "failed to initialize CMM\n"); > return ret; > + } > > /* Create the CRTCs. */ > for (swindex = 0, hwindex = 0; swindex < rcdu->num_crtcs; ++hwindex) { > @@ -952,8 +954,10 @@ int rcar_du_modeset_init(struct rcar_du_device *rcdu) > > /* Initialize the encoders. */ > ret = rcar_du_encoders_init(rcdu); > - if (ret < 0) > + if (ret < 0) { > + dev_err_probe(rcdu->dev, ret, "failed to initialize > encoders\n"); > return ret; > + } > > if (ret == 0) { > dev_err(rcdu->dev, "error: no encoder could be initialized\n"); -- Regards, Laurent Pinchart
Re: [PATCH v2] drm: rcar-du: Use dev_err_probe() to record cause of KMS init errors
Hi Biju, On Fri, Jun 02, 2023 at 07:29:45PM +, Biju Das wrote: > > Subject: [PATCH v2] drm: rcar-du: Use dev_err_probe() to record cause of > > KMS init errors > > > > The (large) rcar_du_modeset_init() function can fail for many reasons, > > two of two involving probe deferral. Use dev_err_probe() in those code > > paths to record the cause of the probe deferral, in order to help > > debugging probe issues. > > > > Signed-off-by: Laurent Pinchart > > --- > > drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c | 4 > > drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c | 8 ++-- > > 2 files changed, 10 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c > > b/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c > > index 12a8839fe3be..5b752adb1b02 100644 > > --- a/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c > > +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c > > @@ -701,6 +701,10 @@ static int rcar_du_probe(struct platform_device *pdev) > > /* DRM/KMS objects */ > > ret = rcar_du_modeset_init(rcdu); > > if (ret < 0) { > > + /* > > +* Don't use dev_err_probe(), as it would overwrite the probe > > +* deferral reason recorded in rcar_du_modeset_init(). > > +*/ > > if (ret != -EPROBE_DEFER) > > dev_err(>dev, > > "failed to initialize DRM/KMS (%d)\n", ret); > > diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c > > b/drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c > > index adfb36b0e815..a9b01027bf03 100644 > > --- a/drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c > > +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c > > @@ -932,8 +932,10 @@ int rcar_du_modeset_init(struct rcar_du_device *rcdu) > > > > /* Initialize the Color Management Modules. */ > > ret = rcar_du_cmm_init(rcdu); > > - if (ret) > > + if (ret) { > > + dev_err_probe(rcdu->dev, "failed to initialize CMM\n", ret); > > dev_err_probe(rcdu->dev, ret, "failed to initialize CMM\n"); > > similarly for below one. Oops. I wonder how I missed that, is it fails to even compile. Sorry :-( I'll post a v2. > > return ret; > > + } > > > > /* Create the CRTCs. */ > > for (swindex = 0, hwindex = 0; swindex < rcdu->num_crtcs; ++hwindex) { > > @@ -952,8 +954,10 @@ int rcar_du_modeset_init(struct rcar_du_device *rcdu) > > > > /* Initialize the encoders. */ > > ret = rcar_du_encoders_init(rcdu); > > - if (ret < 0) > > + if (ret < 0) { > > + dev_err_probe(rcdu->dev, "failed to initialize encoders\n", > > ret); > > return ret; > > + } > > > > if (ret == 0) { > > dev_err(rcdu->dev, "error: no encoder could be initialized\n"); -- Regards, Laurent Pinchart
RE: [PATCH v2] drm: rcar-du: Use dev_err_probe() to record cause of KMS init errors
Hi Laurent, Thanks for the patch. > Subject: [PATCH v2] drm: rcar-du: Use dev_err_probe() to record cause of > KMS init errors > > The (large) rcar_du_modeset_init() function can fail for many reasons, > two of two involving probe deferral. Use dev_err_probe() in those code > paths to record the cause of the probe deferral, in order to help > debugging probe issues. > > Signed-off-by: Laurent Pinchart > > --- > drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c | 4 > drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c | 8 ++-- > 2 files changed, 10 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c > b/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c > index 12a8839fe3be..5b752adb1b02 100644 > --- a/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c > +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c > @@ -701,6 +701,10 @@ static int rcar_du_probe(struct platform_device > *pdev) > /* DRM/KMS objects */ > ret = rcar_du_modeset_init(rcdu); > if (ret < 0) { > + /* > + * Don't use dev_err_probe(), as it would overwrite the > probe > + * deferral reason recorded in rcar_du_modeset_init(). > + */ > if (ret != -EPROBE_DEFER) > dev_err(>dev, > "failed to initialize DRM/KMS (%d)\n", ret); > diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c > b/drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c > index adfb36b0e815..a9b01027bf03 100644 > --- a/drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c > +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c > @@ -932,8 +932,10 @@ int rcar_du_modeset_init(struct rcar_du_device > *rcdu) > > /* Initialize the Color Management Modules. */ > ret = rcar_du_cmm_init(rcdu); > - if (ret) > + if (ret) { > + dev_err_probe(rcdu->dev, "failed to initialize CMM\n", ret); dev_err_probe(rcdu->dev, ret, "failed to initialize CMM\n"); similarly for below one. Cheers, Biju > return ret; > + } > > /* Create the CRTCs. */ > for (swindex = 0, hwindex = 0; swindex < rcdu->num_crtcs; > ++hwindex) { @@ -952,8 +954,10 @@ int rcar_du_modeset_init(struct > rcar_du_device *rcdu) > > /* Initialize the encoders. */ > ret = rcar_du_encoders_init(rcdu); > - if (ret < 0) > + if (ret < 0) { > + dev_err_probe(rcdu->dev, "failed to initialize encoders\n", > ret); > return ret; > + } > > if (ret == 0) { > dev_err(rcdu->dev, "error: no encoder could be > initialized\n"); > -- > Regards, > > Laurent Pinchart