Reviewed-by: Lyude Paul <[email protected]> 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 <[email protected]> > > 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 <[email protected]> > Co-authored-by: Tano Dzhinski <[email protected]> > Signed-off-by: Tano Dzhinski <[email protected]> > Tested-by: Tano Dzhinski <[email protected]> > --- > 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) {
