Re: [PATCH v2] drm/nouveau/disp: don't reject HDMI config on cards without SCDC
From: tanodzh
Date: Fri Sep 18 2026 - 15:15:41 EST
Sounds great! Thanks for the update.
На пт, 18.09.2026 г. в 21:21 <lyude@xxxxxxxxxx> написа:
>
> Reviewed-by: Lyude Paul <lyude@xxxxxxxxxx>
>
> Will push to drm-misc-fixes in just a moment, thank you!
>
> On Thu, 2026-09-17 at 21:51 +0000, Tano Dzhinski wrote:
> > From: Giuseppe Ranieri <giuseppe@xxxxxxxxxxx>
> >
> > nv50_hdmi_enable() passes the sink's SCDC capability from its EDID
> > straight through to nvif_outp_hdmi(). On pre-Maxwell-2 cards there is
> > no
> > hdmi->scdc callback, so nvkm_uoutp_mthd_hdmi() rejects the whole
> > configuration with -EINVAL, and nv50_hdmi_enable() returns before
> > hdmi->ctrl() runs and before the AVI and VSI infoframes are sent.
> >
> > The result on such a card driving an SCDC-capable HDMI 2.0 sink is
> > that
> > HDMI audio silently stops working. Video is unaffected, and nothing
> > is
> > logged, which makes the failure hard to attribute.
> >
> > SCDC is optional, and the hdmi->scdc() call further down is already
> > guarded against a missing callback. Requesting it on a card that
> > cannot
> > do it need not invalidate the rest of the HDMI configuration, so drop
> > that term from the condition and let the existing guard skip SCDC
> > alone.
> >
> > Fixes: 6c6abab20b99 ("drm/nouveau/disp: add output hdmi config
> > method")
> > Signed-off-by: Giuseppe Ranieri <giuseppe@xxxxxxxxxxx>
> > Co-authored-by: Tano Dzhinski <tano.dzhinski@xxxxxxxxx>
> > Signed-off-by: Tano Dzhinski <tano.dzhinski@xxxxxxxxx>
> > Tested-by: Tano Dzhinski <tano.dzhinski@xxxxxxxxx>
> > ---
> > v2: restore Giuseppe Ranieri's original authorship and Signed-off-by
> > (he posted this fix to the nouveau list on 2026-01-17,
> > https://ratatoskr.run/nouveau/2026/01/16963412), per Lyude's
> > review of v1. Added Co-authored-by and Tested-by.
> > Tested on GK104 (GTX 670MX) with BenQ PD2700U and EW2790U.
> >
> > drivers/gpu/drm/nouveau/nvkm/engine/disp/uoutp.c | 3 +--
> > 1 file changed, 1 insertion(+), 2 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/uoutp.c
> > b/drivers/gpu/drm/nouveau/nvkm/engine/disp/uoutp.c
> > index 377d0e0cef84..9887b3898505 100644
> > --- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/uoutp.c
> > +++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/uoutp.c
> > @@ -253,8 +253,7 @@ nvkm_uoutp_mthd_hdmi(struct nvkm_outp *outp, void
> > *argv, u32 argc)
> >
> > if (!ior->func->hdmi ||
> > args->v0.max_ac_packet > 0x1f ||
> > - args->v0.rekey > 0x7f ||
> > - (args->v0.scdc && !ior->func->hdmi->scdc))
> > + args->v0.rekey > 0x7f)
> > return -EINVAL;
> >
> > if (!args->v0.enable) {
>