Hello Maxime, On 2/3/22 11:20, Maxime Ripard wrote: > At boot on the BCM2711, if the HDMI controllers are running, the CRTC > driver will disable itself and its associated HDMI controller to work > around a hardware bug that would leave some pixels stuck in a FIFO. > > In order to avoid that issue, we need to run some operations in lockstep > between the CRTC and HDMI controller, and we need to make sure the HDMI > controller will be powered properly. > > However, since we haven't enabled it through KMS, the runtime_pm state > is off at this point so we need to make sure the device is powered > through pm_runtime_resume_and_get, and once the operations are complete, > we call pm_runtime_put. > > However, the HDMI controller will do that itself in its > post_crtc_powerdown, which means we'll end up calling pm_runtime_put for > a single pm_runtime_get, throwing the reference counting off. Let's > remove the pm_runtime_put call in the CRTC code in order to have the > proper counting. > > Fixes: bca10db67bda ("drm/vc4: crtc: Make sure the HDMI controller is powered when disabling") > Signed-off-by: Maxime Ripard <maxime@xxxxxxxxxx> > --- > drivers/gpu/drm/vc4/vc4_crtc.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c > index 287dbc89ad64..799aaf8c1abf 100644 > --- a/drivers/gpu/drm/vc4/vc4_crtc.c > +++ b/drivers/gpu/drm/vc4/vc4_crtc.c > @@ -525,9 +525,11 @@ int vc4_crtc_disable_at_boot(struct drm_crtc *crtc) > if (ret) > return ret; > > - ret = pm_runtime_put(&vc4_hdmi->pdev->dev); > - if (ret) > - return ret; > + /* > + * post_crtc_powerdown will have called pm_runtime_put, so we > + * don't need it here otherwise we'll get the reference counting > + * wrong. > + */ > I'm not familiar with the BCM2711 SoC nor its HDMI controller but your commit message clearly explain the issue and is nice to have a comment here, to avoid someone trying to do a pm_runtime_put() again. Reviewed-by: Javier Martinez Canillas <javierm@xxxxxxxxxx> Best regards, -- Javier Martinez Canillas Linux Engineering Red Hat