[PATCH 01/19] drm/bridge: cdns-mhdp8546: Improve error reporting in remove callback

Laurent Pinchart laurent.pinchart at ideasonboard.com
Sun Mar 19 17:41:44 UTC 2023


Hi Uwe,

On Sun, Mar 19, 2023 at 02:59:21PM +0100, Uwe Kleine-König wrote:
> On Sun, Mar 19, 2023 at 03:13:01PM +0200, Laurent Pinchart wrote:
> > On Sat, Mar 18, 2023 at 08:07:46PM +0100, Uwe Kleine-König wrote:
> > > Replace the generic error message issued by the driver core when the remove
> > > callback returns non-zero ("remove callback returned a non-zero value. This
> > > will be ignored.") by a message that tells the actual problem.
> > > 
> > > Also simplify a bit by checking the return value of wait_event_timeout a
> > > bit later.
> > > 
> > > Signed-off-by: Uwe Kleine-König <u.kleine-koenig at pengutronix.de>
> > > ---
> > >  .../drm/bridge/cadence/cdns-mhdp8546-core.c    | 18 +++++++++---------
> > >  1 file changed, 9 insertions(+), 9 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c
> > > index f6822dfa3805..d74c6fa30ccc 100644
> > > --- a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c
> > > +++ b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c
> > > @@ -2574,7 +2574,6 @@ static int cdns_mhdp_remove(struct platform_device *pdev)
> > >  {
> > >  	struct cdns_mhdp_device *mhdp = platform_get_drvdata(pdev);
> > >  	unsigned long timeout = msecs_to_jiffies(100);
> > > -	bool stop_fw = false;
> > >  	int ret;
> > >  
> > >  	drm_bridge_remove(&mhdp->bridge);
> > > @@ -2582,18 +2581,19 @@ static int cdns_mhdp_remove(struct platform_device *pdev)
> > >  	ret = wait_event_timeout(mhdp->fw_load_wq,
> > >  				 mhdp->hw_state == MHDP_HW_READY,
> > >  				 timeout);
> > > -	if (ret == 0)
> > > -		dev_err(mhdp->dev, "%s: Timeout waiting for fw loading\n",
> > > -			__func__);
> > > -	else
> > > -		stop_fw = true;
> > > -
> > >  	spin_lock(&mhdp->start_lock);
> > >  	mhdp->hw_state = MHDP_HW_STOPPED;
> > >  	spin_unlock(&mhdp->start_lock);
> > >  
> > > -	if (stop_fw)
> > > +	if (ret == 0) {
> > > +		dev_err(mhdp->dev, "%s: Timeout waiting for fw loading\n",
> > > +			__func__);
> > > +	} else {
> > >  		ret = cdns_mhdp_set_firmware_active(mhdp, false);
> > > +		if (ret)
> > > +			dev_err(mhdp->dev, "Failed to stop firmware (%pe)\n",
> > > +				ERR_PTR(ret));
> > 
> > Why not simply
> > 			dev_err(mhdp->dev, "Failed to stop firmware (%d)\n",
> > 				ret);
> > 
> > ? Apart from that,
> 
> %pe is superior to %d because
> 
> 	Failed to stop firmware (EIO)
> 
> is easier to understand for humans than
> 
> 	Failed to stop firmware (-5)
> 
> . Don't you agree?

Partly :) When I try to match error codes received in userspace with
kernel log messages, or debug core dumps, numerical errors are easier.
At other times, the error name is likely better. I don't have a string
preference here.

-- 
Regards,

Laurent Pinchart


More information about the dri-devel mailing list