For the whole series: Reviewed-by: Lyude Paul <lyude@xxxxxxxxxx> Tested on an RTX4000 On Thu, 2023-09-14 at 18:45 +1000, Ben Skeggs wrote: > From: Ben Skeggs <bskeggs@xxxxxxxxxx> > > 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