Hey everyone! I'm just going through and rebasing Ben's display patches so I can push them in just a moment :). (*the rest of this email can be read in Ben Skegg's voice*) 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 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 | 511 +++++++++++------- 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 | 252 ++++----- 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(-) -- 2.41.0