Re: [PATCH v2 00/10] nouveau: assorted display fixes (GB20x, r570 DP_CONFIG_STREAM, HF-EEODB EDIDs)

[email protected]
Newsgroups org.freedesktop.lists.nouveau,org.freedesktop.lists.dri-devel,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
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
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.