Thinking about it more - we should probably cc patches 1-8 to stable. Mind doing that on the next respin?
(unsure if you have done this before or not, but https://drm.pages.freedesktop.org/maintainer-tools/committer/getting-started.html dim is a good tool for fixes, if you have the commit a patch fixes you can just run `dim fixes $COMMIT` and it will spit out a tag + some CCs. I usually drop all but the stable cc, which gets a nice little comment added on the side indicating which kernel version to backport against. On Thu, 2026-08-20 at 20:49 +0400, Mohamed Ahmed wrote: > Several fixes for GSP-driven displays consisting of four independent > groups. These were created as part of ongoing HDMI 2.1 bring up and > display handling clean-up work, so some of them are not issues now > (e.g., the 2.147GHz pixel clock cap) but fixing them is required to > get > advanced features such as FRL, DSC, VRR, etc working properly. > > The v1 review asked for the RM vs register programming split to be > made > explicit instead of growing more per-chip code inside the RM layer, > so > patches 1-3 do that first. No functional change, and then each GB20x > fix > (patches 4-8) supplies its hook from a new engine/disp/gb202.c. > > Changes in v2: > - Rebased onto drm-misc-next. > > - New patches 1-3: move the GSP path's direct MMIO helpers to > engine/disp/ and route them through a per-chip nvkm_disp_func.gsp > hook > table. GB20x now has its own gb202_disp_new() instead of display- > class > checks in rm/r535/disp.c. > > - Patch 4 (was 1+2): merged. Dropped a stray .frl_train reference > that > broke the build, no longer drops .scdc, and fixed an undefined > shift > when packing byte 3 of each infoframe data word. > > - Patch 5 (was 3): the GCP subpack write is now a masked write so > SB1_CTRL keeps its hardware-controlled default. > > - Patch 6 (was 4): the vcpi hook returns its control status like the > other RM API entries instead of WARN_ONs under the HAL. > > - New patch 7: the head-state readback fix is split out. The core > channel > state mirror uses a 0x800 per-head stride on GB20x, fixing scanout > pos > and timings readback for heads >= 1. > > - Patch 8 (was 5): reworked onto the new hook table. The low-latency > vector is exposed as a second DISP interrupt instance by the r570 > engine index translation and re-armed after servicing. > > - Patch 9 (was 6): the two HI methods are pushed as one method pair, > and > the class-header defines stay offset-sorted. > > - Patch 10 (was 7): OF EDIDs now go through > drm_edid_connector_update(), > and all firmware provided EDIDs (OF, ACPI, VBIOS embedded) are > validated with drm_edid_valid(). ACPI reads are bounded by the > length > _DDC actually returned. Fixed a runtime-PM reference leak when the > RM > EDID read fails. No raw struct edid is kept anymore and all the old > raw struct edid consumers are converted to the new API (the SPWG > dual-link byte is cached at EDID-set time as there is no new drm > API > alternative for it). get_modes() re-syncs the EDID property only > when > the probe helper cleared it. > > - Commit messages reworded throughout. > > Link to v1: > https://lore.kernel.org/all/[email protected]/ > > > Mohamed Ahmed (10): > drm/nouveau/disp: move GSP head-timing ISR and vblank helpers to > tu102.c > drm/nouveau/disp: move the GSP HDMI GCP AVMute write to engine/disp > drm/nouveau/disp: route GSP-RM display MMIO through nvkm_disp_func > hooks > drm/nouveau/disp: fix HDMI vendor infoframes on GB20x > drm/nouveau/disp: fix HDMI GCP AVMute register offsets on GB20x > drm/nouveau/gsp: use per-version DP_CONFIG_STREAM params on r570 > firmware > drm/nouveau/disp: fix head state readback on GB20x > drm/nouveau/gsp: fix vblank interrupts on GB20x > drm/nouveau/dispnv50: program pixel clocks above 2.147GHz on GB20x > drm/nouveau: honor HF-EEODB EDIDs by converting to struct drm_edid > > drivers/gpu/drm/nouveau/dispnv04/dfp.c | 5 +- > drivers/gpu/drm/nouveau/dispnv50/disp.c | 4 +- > drivers/gpu/drm/nouveau/dispnv50/headca7d.c | 21 +- > .../drm/nouveau/include/nvhw/class/clca7d.h | 4 + > .../drm/nouveau/include/nvkm/engine/disp.h | 1 + > drivers/gpu/drm/nouveau/nouveau_acpi.c | 21 +- > drivers/gpu/drm/nouveau/nouveau_acpi.h | 10 +- > drivers/gpu/drm/nouveau/nouveau_connector.c | 147 ++++++++++---- > drivers/gpu/drm/nouveau/nouveau_connector.h | 12 +- > .../gpu/drm/nouveau/nvkm/engine/device/base.c | 10 +- > .../gpu/drm/nouveau/nvkm/engine/disp/Kbuild | 1 + > .../gpu/drm/nouveau/nvkm/engine/disp/ga102.c | 16 +- > .../gpu/drm/nouveau/nvkm/engine/disp/gb202.c | 192 > ++++++++++++++++++ > .../gpu/drm/nouveau/nvkm/engine/disp/head.h | 3 + > .../gpu/drm/nouveau/nvkm/engine/disp/ior.h | 1 + > .../gpu/drm/nouveau/nvkm/engine/disp/priv.h | 20 ++ > .../gpu/drm/nouveau/nvkm/engine/disp/tu102.c | 81 +++++++- > .../nouveau/nvkm/subdev/gsp/rm/r535/disp.c | 121 ++++++----- > .../nouveau/nvkm/subdev/gsp/rm/r570/disp.c | 64 ++++++ > .../drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c | 9 + > .../nvkm/subdev/gsp/rm/r570/nvrm/disp.h | 2 + > .../gpu/drm/nouveau/nvkm/subdev/gsp/rm/rm.h | 5 + > 22 files changed, 637 insertions(+), 113 deletions(-) > create mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/disp/gb202.c
