Re: [PATCH 2/7] nouveau/gsp: fix HDMI vendor infoframes on GB20x

[email protected]
Newsgroups org.freedesktop.lists.dri-devel
Message-ID <[email protected]>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] The `gb202_sor_hdmi` structure omits the `.scdc` callback, which breaks HDMI 2.0+ (SCDC) support and high-bandwidth modes (like 4K@60Hz) on GB20x GPUs.
- [Low] The patch assigns an undeclared function `r535_sor_frl_train` to a non-existent struct member `.frl_train` in `gb202_sor_hdmi`, causing a hard build failure.
--

--- Patch [2]: [PATCH 2/7] nouveau/gsp: fix HDMI vendor infoframes on GB20x ---
commit bab0e0425109e6d57a40d900a50e9f7f22ac57de
Author: Mohamed Ahmed <[email protected]>

nouveau/gsp: fix HDMI vendor infoframes on GB20x

This commit selects the SOR functions per GPU family in r535_sor_new() based
on the display root class. It introduces gb202_sor_hdmi to use the new
generic-infoframe VSI writer on GB20x GPUs.

> diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/disp.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/disp.c
> index e77733a5d9c3c..6b78619840c9c 100644
> --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/disp.c
> +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/disp.c

[ ... ]

> @@ -587,6 +589,16 @@ r535_sor_hdmi = {
>  	.audio = r535_sor_hdmi_audio,
>  };
>  
> +static const struct nvkm_ior_func_hdmi
> +gb202_sor_hdmi = {
> +	.ctrl = r535_sor_hdmi_ctrl,
> +	/* The legacy AVI unit is unchanged on GB20x. */
> +	.infoframe_avi = gv100_sor_hdmi_infoframe_avi,
> +	.infoframe_vsi = gb202_sor_hdmi_infoframe_vsi,
> +	.audio = r535_sor_hdmi_audio,

[Severity: High]
Does this initialization omit the .scdc callback mapping?

Looking at nvkm_uoutp_mthd_hdmi(), if userspace requests a high-bandwidth
mode that depends on SCDC scrambling, the modeset aborts if the callback is
missing:

drivers/gpu/drm/nouveau/nvkm/engine/disp/uoutp.c:nvkm_uoutp_mthd_hdmi() {
	if (!ior->func->hdmi ||
	    args->v0.max_ac_packet > 0x1f ||
	    args->v0.rekey > 0x7f ||
	    (args->v0.scdc && !ior->func->hdmi->scdc))
		return -EINVAL;
	...
}

Can this result in broken HDMI output or black screens for high-bandwidth
modes (like 4K@60Hz) on GB20x GPUs?

> +	.frl_train = r535_sor_frl_train,

[Severity: Low]
Does this cause a build failure?

Looking at the definition of struct nvkm_ior_func_hdmi in
drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h, it does not contain a
.frl_train member.

Additionally, it appears r535_sor_frl_train is undeclared in this scope.

> +};

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=2
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.