On 9/18/23 22:13, Ben Skeggs wrote:
From: Ben Skeggs <bske...@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.
For the series:
Acked-by: Danilo Krummrich <d...@redhat.com>
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 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/disp/nv50-: skip DCB_OUTPUT_TV
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(-)