[Nouveau] [PATCH 00/44] drm/nouveau: display rework to support GSP-RM

Lyude Paul lyude at redhat.com
Fri Sep 15 21:57:53 UTC 2023


For the whole series:

Reviewed-by: Lyude Paul <lyude at redhat.com>

Tested on an RTX4000

On Thu, 2023-09-14 at 18:45 +1000, Ben Skeggs wrote:
> From: Ben Skeggs <bskeggs at redhat.com>
> 
> The primary issue being tackled here is that, for historical reasons (we
> didn't know any better / couldn't make it work reliably otherwise), some
> operations (SOR routing, DP link training) were performed during the 2nd
> HW supervisor interrupt.
> 
> We don't have control of the display supervisor when running on top of
> RM, so this needed to be untangled and fixed - which, is one of the main
> aims of this patch series.
> 
> The ordering of this series is pretty important, so take care if/when
> backporting patches from it.
> 
> Beyond that main goal, various other interfaces have been added or
> extended to provide the information that RM will need for its version of
> similar interfaces.
> 
> Ben Skeggs (43):
>   drm/nouveau/devinit/tu102-: remove attempt at loading PreOS
>   drm/nouveau/imem: support allocations not preserved across suspend
>   drm/nouveau/gr/gf100-: lose contents of global ctxbufs across suspend
>   drm/nouveau/mmu/gp100-: always invalidate TLBs at CACHE_LEVEL_ALL
>   drm/nouveau/kms/nv50-: fix mst payload alloc fail crashing evo
>   drm/nouveau/disp: rearrange output methods
>   drm/nouveau/disp: add output detect method
>   drm/nouveau/disp: add output method to fetch edid
>   drm/nouveau/disp: rename internal output acquire/release functions
>   drm/nouveau/disp: shuffle to make upcoming diffs prettier
>   drm/nouveau/disp: add acquire_dac()
>   drm/nouveau/disp: add acquire_sor/pior()
>   drm/nouveau/disp: update SOR routing immediately on acquire()
>   drm/nouveau/kms/nv50-: pull some common init out of OR-specific code
>   drm/nouveau/kms/nv50-: remove nv_encoder.audio.connector
>   drm/nouveau/kms/nv50-: keep output state around until modeset complete
>   drm/nouveau/kms/nv50-: move audio enable post-modeset
>   drm/nouveau/disp: add output hdmi config method
>   drm/nouveau/disp: move hdmi disable out of release()
>   drm/nouveau/disp: release outputs post-modeset
>   drm/nouveau/disp: remove SOR routing updates from supervisor
>   drm/nouveau/disp: add output backlight control methods
>   drm/nouveau/disp: add output lvds config method
>   drm/nouveau/disp: add hdmi audio hal function
>   drm/nouveau/disp: move dp aux pwr method to HAL
>   drm/nouveau/disp: add dp aux xfer method
>   drm/nouveau/disp: add dp rates method
>   drm/nouveau/kms/nv50-: split DP disable+enable into two modesets
>   drm/nouveau/kms/nv50-: flush mst disables together
>   drm/nouveau/kms/nv50-: fixup sink D3 before tearing down link
>   drm/nouveau/disp: add dp train method
>   drm/nouveau/disp: move link training out of supervisor
>   drm/nouveau/disp: add support for post-LT adjust
>   drm/nouveau/disp: add dp sst config method
>   drm/nouveau/disp: add dp mst id get/put methods
>   drm/nouveau/disp: move outp/conn construction to chipset code
>   drm/nouveau/disp: move outp init/fini paths to chipset code
>   drm/nouveau/kms/nv50-: create heads based on nvkm head mask
>   drm/nouveau/kms/nv50-: create heads after outps/conns
>   drm/nouveau/kms/nv50-: name aux channels after their connector
>   drm/nouveau/kms/nv50-: create connectors based on nvkm info
>   drm/nouveau/kms/nv50-: create outputs based on nvkm info
>   drm/nouveau/kms/nv50-: disable dcb parsing
> 
> Lyude Paul (1):
>   drm/nouveau/kms: Add INHERIT ioctl to nvkm/nvif for reading IOR state
> 
>  drivers/gpu/drm/nouveau/dispnv04/disp.c       |   2 +-
>  drivers/gpu/drm/nouveau/dispnv50/disp.c       | 512 +++++++++++-------
>  drivers/gpu/drm/nouveau/dispnv50/disp.h       |   6 +-
>  drivers/gpu/drm/nouveau/dispnv50/head.h       |   1 +
>  drivers/gpu/drm/nouveau/dispnv50/headc57d.c   |  14 +
>  drivers/gpu/drm/nouveau/include/nvif/conn.h   |  20 +-
>  drivers/gpu/drm/nouveau/include/nvif/if0011.h |  21 +-
>  drivers/gpu/drm/nouveau/include/nvif/if0012.h | 249 +++++++--
>  drivers/gpu/drm/nouveau/include/nvif/outp.h   |  96 +++-
>  .../drm/nouveau/include/nvkm/core/memory.h    |   1 +
>  .../drm/nouveau/include/nvkm/subdev/instmem.h |   2 +-
>  drivers/gpu/drm/nouveau/nouveau_backlight.c   |  90 +--
>  drivers/gpu/drm/nouveau/nouveau_bios.c        |   8 +-
>  drivers/gpu/drm/nouveau/nouveau_connector.c   | 251 ++++-----
>  drivers/gpu/drm/nouveau/nouveau_connector.h   |   3 +-
>  drivers/gpu/drm/nouveau/nouveau_display.c     |   8 +-
>  drivers/gpu/drm/nouveau/nouveau_dp.c          | 345 ++++++++++--
>  drivers/gpu/drm/nouveau/nouveau_encoder.h     |  30 +-
>  drivers/gpu/drm/nouveau/nvif/conn.c           |  36 +-
>  drivers/gpu/drm/nouveau/nvif/disp.c           |   2 +-
>  drivers/gpu/drm/nouveau/nvif/outp.c           | 412 ++++++++++++--
>  drivers/gpu/drm/nouveau/nvkm/core/memory.c    |  15 +-
>  .../gpu/drm/nouveau/nvkm/engine/disp/base.c   | 146 +----
>  .../gpu/drm/nouveau/nvkm/engine/disp/conn.c   |  10 -
>  .../gpu/drm/nouveau/nvkm/engine/disp/conn.h   |   2 -
>  drivers/gpu/drm/nouveau/nvkm/engine/disp/dp.c | 362 ++++---------
>  .../gpu/drm/nouveau/nvkm/engine/disp/g84.c    |   1 +
>  .../gpu/drm/nouveau/nvkm/engine/disp/g94.c    |   1 +
>  .../gpu/drm/nouveau/nvkm/engine/disp/ga102.c  |   1 +
>  .../gpu/drm/nouveau/nvkm/engine/disp/gf119.c  |   2 +-
>  .../gpu/drm/nouveau/nvkm/engine/disp/gk104.c  |   1 +
>  .../gpu/drm/nouveau/nvkm/engine/disp/gm107.c  |   1 +
>  .../gpu/drm/nouveau/nvkm/engine/disp/gm200.c  |  17 +-
>  .../gpu/drm/nouveau/nvkm/engine/disp/gp100.c  |   1 +
>  .../gpu/drm/nouveau/nvkm/engine/disp/gt215.c  |  38 ++
>  .../gpu/drm/nouveau/nvkm/engine/disp/gv100.c  |   2 +-
>  .../gpu/drm/nouveau/nvkm/engine/disp/ior.h    |  15 +-
>  .../gpu/drm/nouveau/nvkm/engine/disp/mcp89.c  |   1 +
>  .../gpu/drm/nouveau/nvkm/engine/disp/nv50.c   | 182 ++++++-
>  .../gpu/drm/nouveau/nvkm/engine/disp/outp.c   | 144 ++++-
>  .../gpu/drm/nouveau/nvkm/engine/disp/outp.h   |  43 +-
>  .../gpu/drm/nouveau/nvkm/engine/disp/tu102.c  |   1 +
>  .../gpu/drm/nouveau/nvkm/engine/disp/uconn.c  |  67 +--
>  .../gpu/drm/nouveau/nvkm/engine/disp/uoutp.c  | 460 +++++++++++++---
>  .../gpu/drm/nouveau/nvkm/engine/gr/gf100.c    |  10 +-
>  .../drm/nouveau/nvkm/subdev/devinit/tu102.c   |  12 +-
>  .../drm/nouveau/nvkm/subdev/instmem/base.c    |  19 +-
>  .../drm/nouveau/nvkm/subdev/instmem/priv.h    |   1 +
>  .../drm/nouveau/nvkm/subdev/mmu/vmmgp100.c    |   2 +-
>  .../drm/nouveau/nvkm/subdev/mmu/vmmtu102.c    |   2 +-
>  50 files changed, 2461 insertions(+), 1207 deletions(-)
> 

-- 
Cheers,
 Lyude Paul (she/her)
 Software Engineer at Red Hat



More information about the Nouveau mailing list