Hello Dinghao, Thank you for the patch. On Mon, Jun 08, 2020 at 01:29:19PM +0800, Dinghao Liu wrote: > pm_runtime_get_sync() increments the runtime PM usage counter even > when it returns an error code. Thus a pairing decrement is needed on > the error handling path to keep the counter balanced. > > Signed-off-by: Dinghao Liu <dinghao.liu@xxxxxxxxxx> Reviewed-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> I have however received multiple similar patches recently, for different drivers. I've CC'ed Rafael, the PM maintainer, in one of those e-mail threads, and questioned whether we should really mass-patch drivers, or fix the issue in pm_runtime_get_sync(). I'll defer pushing this patch until that discussion comes to a conclusion. > --- > > Changelog: > > v2: - Fix the imbalance in vsp1_device_get(). > Use vsp1_device_get() and vsp1_device_put() > to replace pm_runtime_get_sync() and > pm_runtime_put_sync() in vsp1_probe(). > --- > drivers/media/platform/vsp1/vsp1_drv.c | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > > diff --git a/drivers/media/platform/vsp1/vsp1_drv.c b/drivers/media/platform/vsp1/vsp1_drv.c > index c650e45bb0ad..dc62533cf32c 100644 > --- a/drivers/media/platform/vsp1/vsp1_drv.c > +++ b/drivers/media/platform/vsp1/vsp1_drv.c > @@ -562,7 +562,12 @@ int vsp1_device_get(struct vsp1_device *vsp1) > int ret; > > ret = pm_runtime_get_sync(vsp1->dev); > - return ret < 0 ? ret : 0; > + if (ret < 0) { > + pm_runtime_put_noidle(vsp1->dev); > + return ret; > + } > + > + return 0; > } > > /* > @@ -845,12 +850,12 @@ static int vsp1_probe(struct platform_device *pdev) > /* Configure device parameters based on the version register. */ > pm_runtime_enable(&pdev->dev); > > - ret = pm_runtime_get_sync(&pdev->dev); > + ret = vsp1_device_get(vsp1); > if (ret < 0) > goto done; > > vsp1->version = vsp1_read(vsp1, VI6_IP_VERSION); > - pm_runtime_put_sync(&pdev->dev); > + vsp1_device_put(vsp1); > > for (i = 0; i < ARRAY_SIZE(vsp1_device_infos); ++i) { > if ((vsp1->version & VI6_IP_VERSION_MODEL_MASK) == -- Regards, Laurent Pinchart