[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