Nice catch!
Reviewed-by: Lyude Paul <[email protected]>
Will push to drm-misc-fixes in just a moment
On Wed, 2026-09-16 at 18:03 +0000, Wentao Liang wrote:
> If nvif_outp_edid_get() fails, nouveau_connector_detect() returns
> early without dropping the runtime PM reference taken at the start
> of the function, keeping the device powered on until the next
> successful detect.
>
> Balance the reference on the error path like the other exit paths
> do.
>
> Fixes: 0cd7e0718139 ("drm/nouveau/disp: add output method to fetch
> edid")
> Cc: [email protected]
> Signed-off-by: Wentao Liang <[email protected]>
> ---
> drivers/gpu/drm/nouveau/nouveau_connector.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c
> b/drivers/gpu/drm/nouveau/nouveau_connector.c
> index cc239492c7f0..4a750d4bf1f4 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_connector.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
> @@ -600,8 +600,11 @@ nouveau_connector_detect(struct drm_connector
> *connector, bool force)
> new_edid = drm_get_edid(connector,
> nv_encoder->i2c);
> } else {
> ret = nvif_outp_edid_get(&nv_encoder->outp,
> (u8 **)&new_edid);
> - if (ret < 0)
> + if (ret < 0) {
> + pm_runtime_mark_last_busy(dev->dev);
> + pm_runtime_put_autosuspend(dev-
> >dev);
> return
> connector_status_disconnected;
> + }
> }
>
> nouveau_connector_set_edid(nv_connector, new_edid);