Re: [PATCH v2] drm/nouveau/disp: don't reject HDMI config on cards without SCDC

From: lyude

Date: Fri Sep 18 2026 - 14:21:22 EST


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) {