Hey Dave, Various fixes/cleanups, along with initial support for SVM features utilising HMM address-space mirroring and device memory migration. There's a lot more work to do in these areas, both in terms of features and efficiency, but these can slowly trickle in later down the track.
Jerome and I have corrected the issues mentioned in response to the previous pull request, so we should be good to go! Thanks, Ben. The following changes since commit c06de56121e3ac0f0f1f4a081c041654ffcacd62: Merge v5.0-rc7 into drm-next (2019-02-18 13:27:15 +1000) are available in the Git repository at: git://github.com/skeggsb/linux linux-5.1 for you to fetch changes up to a788ade4f6e0302710f89b2a3534346df752072d: drm/nouveau/dmem: use dma addresses during migration copies (2019-02-20 09:00:03 +1000) ---------------------------------------------------------------- Ben Skeggs (50): drm/nouveau/devinit/tu102: rename implementation from tu104 drm/nouveau/mc/tu102: rename implementation from tu104 drm/nouveau/mmu/tu102: rename implementation from tu104 drm/nouveau/bar/tu102: rename implementation from tu104 drm/nouveau/fault/tu102: rename implementation from tu104 drm/nouveau/disp/tu102: rename implementation from tu104 drm/nouveau/fifo/tu102: rename implementation from tu104 drm/nouveau/ce/tu102: rename implementation from tu104 drm/nouveau/core: define GSP subdev drm/nouveau/top: add function to lookup PRI address for devices drm/nouveau/top/gv100-: translate entry for the GSP drm/nouveau/gsp/gv100-: instantiate GSP falcon drm/nouveau/nvdec/gp102-: utilise engine PRI address from TOP drm/nouveau/nvdec/tu102-: instantiate NVDEC0 falcon drm/nouveau/sec2: utilise engine PRI address from TOP drm/nouveau/sec2/tu102-: instantiate SEC2 falcon drm/nouveau/secboot: fix missing newline in error messages drm/nouveau/bios/init: label existing INIT_GENERIC_CONDITION types drm/nouveau/bios/init: handle INIT_GENERIC_CONDITION_ID_NO_PANEL_SEQ_DELAYS drm/nouveau/disp/gf119-: decode exception reason to human-readable string drm/nouveau: allocate kernel channel(s) before initialising display drm/nouveau/kms: display destroy/init/fini hooks can be static drm/nouveau/kms/nv04-nv4x: move a bunch of pre-nv50 page flip code to dispnv04 drm/nouveau/kms/nv04-nv4x: move suspend code to dispnv04 fini hook drm/nouveau/kms/nv04-nv4x: move resume code to dispnv04 init hook drm/nouveau: allow accelerated buffer moves even when gr isn't present drm/nouveau/gr/gf100-: move fecs set_watchdog_timeout method into a function drm/nouveau/gr/gf100-: move fecs discover_image_size into a function drm/nouveau/gr/gf100-: move fecs discover_zcull_image_size into a function drm/nouveau/gr/gf100-: move fecs discover_pm_image_size into a function drm/nouveau/gr/gf100-: move fecs elpg setup into functions drm/nouveau/gr/gf100-: remove some unnecessary reg writes drm/nouveau/gr/gf100-: move fecs bind_pointer into a function drm/nouveau/gr/gf100-: store fecs/gpccs falcon pointers in substructures drm/nouveau/mmu/gf100-: make mmu invalidate function more general drm/nouveau/mmu/gf100-: virtualise setting pdb base address for invalidation drm/nouveau/gr/gf100-: expose fecs methods for pausing ctxsw drm/nouveau/gr/gf100-: expose method to determine current context drm/nouveau/mmu: support initialisation of client-managed address-spaces drm/nouveau/mmu: store mapped flag separately from memory pointer drm/nouveau/mmu: add a privileged method to directly manage PTEs drm/nouveau/mmu/gp100-: add privileged methods for fault replay/cancel drm/nouveau/mmu/gp100-: support vmms with gcc/tex replayable faults enabled drm/nouveau/fault/gp100: expose MaxwellFaultBufferA drm/nouveau/fault/gv100-: expose VoltaFaultBufferA drm/nouveau: prepare for enabling svm with existing userspace interfaces drm/nouveau/svm: initial support for shared virtual memory drm/nouveau/dmem: extend copy function to allow direct use of physical addresses drm/nouveau/dmem: use physical vram addresses during migration copies drm/nouveau/dmem: use dma addresses during migration copies Colin Ian King (5): drm/nouveau/bios/dp: make array vsoff static, shrinks object size drm/nouveau/bios/ramcfg: fix missing parentheses when calculating RON drm/nouveau/pmu: don't print reply values if exec is false drm/nouveau: fix missing break in switch statement drm/nouveau/falcon: fix a few indentation issues Gustavo A. R. Silva (1): drm/nouveau: mark expected switch fall-through Ilia Mirkin (1): drm/nouveau/volt/gf117: fix speedo readout register Jérôme Glisse (2): drm/nouveau/dmem: device memory helpers for SVM drm/nouveau/svm: new ioctl to migrate process memory to GPU memory Lyude Paul (1): drm/nouveau: Don't WARN_ON VCPI allocation failures drivers/gpu/drm/nouveau/Kbuild | 2 + drivers/gpu/drm/nouveau/Kconfig | 12 + drivers/gpu/drm/nouveau/dispnv04/crtc.c | 214 +++++++++++- drivers/gpu/drm/nouveau/dispnv04/disp.c | 216 +++++++++--- drivers/gpu/drm/nouveau/dispnv04/disp.h | 5 +- drivers/gpu/drm/nouveau/dispnv50/core.c | 2 +- drivers/gpu/drm/nouveau/dispnv50/curs.c | 2 +- drivers/gpu/drm/nouveau/dispnv50/disp.c | 13 +- drivers/gpu/drm/nouveau/dispnv50/wimm.c | 2 +- drivers/gpu/drm/nouveau/dispnv50/wndw.c | 2 +- drivers/gpu/drm/nouveau/include/nvif/class.h | 13 +- drivers/gpu/drm/nouveau/include/nvif/clb069.h | 12 + drivers/gpu/drm/nouveau/include/nvif/if000c.h | 30 +- drivers/gpu/drm/nouveau/include/nvif/ifc00d.h | 21 ++ drivers/gpu/drm/nouveau/include/nvif/vmm.h | 4 +- drivers/gpu/drm/nouveau/include/nvkm/core/device.h | 3 + drivers/gpu/drm/nouveau/include/nvkm/engine/ce.h | 2 +- drivers/gpu/drm/nouveau/include/nvkm/engine/disp.h | 2 +- drivers/gpu/drm/nouveau/include/nvkm/engine/fifo.h | 2 +- drivers/gpu/drm/nouveau/include/nvkm/engine/gr.h | 3 + drivers/gpu/drm/nouveau/include/nvkm/engine/nvdec.h | 2 + drivers/gpu/drm/nouveau/include/nvkm/engine/sec2.h | 3 + drivers/gpu/drm/nouveau/include/nvkm/subdev/bar.h | 2 +- drivers/gpu/drm/nouveau/include/nvkm/subdev/devinit.h | 2 +- drivers/gpu/drm/nouveau/include/nvkm/subdev/fault.h | 4 +- drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h | 14 + drivers/gpu/drm/nouveau/include/nvkm/subdev/mc.h | 2 +- drivers/gpu/drm/nouveau/include/nvkm/subdev/mmu.h | 6 +- drivers/gpu/drm/nouveau/include/nvkm/subdev/top.h | 1 + drivers/gpu/drm/nouveau/include/nvkm/subdev/volt.h | 1 + drivers/gpu/drm/nouveau/nouveau_abi16.c | 4 +- drivers/gpu/drm/nouveau/nouveau_bo.c | 4 +- drivers/gpu/drm/nouveau/nouveau_chan.c | 32 +- drivers/gpu/drm/nouveau/nouveau_chan.h | 1 + drivers/gpu/drm/nouveau/nouveau_display.c | 306 +--------------- drivers/gpu/drm/nouveau/nouveau_display.h | 21 +- drivers/gpu/drm/nouveau/nouveau_dmem.c | 887 +++++++++++++++++++++++++++++++++++++++++++++++ drivers/gpu/drm/nouveau/nouveau_dmem.h | 60 ++++ drivers/gpu/drm/nouveau/nouveau_drm.c | 248 +++++++------ drivers/gpu/drm/nouveau/nouveau_drv.h | 6 +- drivers/gpu/drm/nouveau/nouveau_fbcon.c | 2 +- drivers/gpu/drm/nouveau/nouveau_fence.h | 2 - drivers/gpu/drm/nouveau/nouveau_gem.c | 43 +-- drivers/gpu/drm/nouveau/nouveau_svm.c | 835 ++++++++++++++++++++++++++++++++++++++++++++ drivers/gpu/drm/nouveau/nouveau_svm.h | 48 +++ drivers/gpu/drm/nouveau/nouveau_vmm.c | 4 +- drivers/gpu/drm/nouveau/nouveau_vmm.h | 1 + drivers/gpu/drm/nouveau/nv84_fence.c | 3 +- drivers/gpu/drm/nouveau/nvif/disp.c | 2 +- drivers/gpu/drm/nouveau/nvif/vmm.c | 5 +- drivers/gpu/drm/nouveau/nvkm/core/subdev.c | 1 + drivers/gpu/drm/nouveau/nvkm/engine/ce/Kbuild | 2 +- drivers/gpu/drm/nouveau/nvkm/engine/ce/{tu104.c => tu102.c} | 6 +- drivers/gpu/drm/nouveau/nvkm/engine/device/base.c | 86 +++-- drivers/gpu/drm/nouveau/nvkm/engine/device/priv.h | 1 + drivers/gpu/drm/nouveau/nvkm/engine/device/user.c | 15 +- drivers/gpu/drm/nouveau/nvkm/engine/disp/Kbuild | 6 +- drivers/gpu/drm/nouveau/nvkm/engine/disp/gf119.c | 16 +- drivers/gpu/drm/nouveau/nvkm/engine/disp/gv100.c | 7 +- drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h | 2 +- drivers/gpu/drm/nouveau/nvkm/engine/disp/nv50.c | 12 +- drivers/gpu/drm/nouveau/nvkm/engine/disp/nv50.h | 3 + drivers/gpu/drm/nouveau/nvkm/engine/disp/rootnv50.h | 2 +- drivers/gpu/drm/nouveau/nvkm/engine/disp/{roottu104.c => roottu102.c} | 20 +- drivers/gpu/drm/nouveau/nvkm/engine/disp/{sortu104.c => sortu102.c} | 14 +- drivers/gpu/drm/nouveau/nvkm/engine/disp/{tu104.c => tu102.c} | 14 +- drivers/gpu/drm/nouveau/nvkm/engine/fifo/Kbuild | 6 +- drivers/gpu/drm/nouveau/nvkm/engine/fifo/changk104.h | 2 +- drivers/gpu/drm/nouveau/nvkm/engine/fifo/{gpfifotu104.c => gpfifotu102.c} | 10 +- drivers/gpu/drm/nouveau/nvkm/engine/fifo/{tu104.c => tu102.c} | 30 +- drivers/gpu/drm/nouveau/nvkm/engine/fifo/user.h | 2 +- drivers/gpu/drm/nouveau/nvkm/engine/fifo/{usertu104.c => usertu102.c} | 10 +- drivers/gpu/drm/nouveau/nvkm/engine/gr/base.c | 27 ++ drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf100.c | 10 +- drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c | 331 ++++++++++++++---- drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.h | 16 +- drivers/gpu/drm/nouveau/nvkm/engine/gr/priv.h | 5 + drivers/gpu/drm/nouveau/nvkm/engine/nvdec/base.c | 10 +- drivers/gpu/drm/nouveau/nvkm/engine/sec2/Kbuild | 1 + drivers/gpu/drm/nouveau/nvkm/engine/sec2/base.c | 23 +- drivers/gpu/drm/nouveau/nvkm/engine/sec2/gp102.c | 2 +- drivers/gpu/drm/nouveau/nvkm/engine/sec2/priv.h | 3 +- drivers/gpu/drm/nouveau/nvkm/engine/sec2/tu102.c | 33 ++ drivers/gpu/drm/nouveau/nvkm/falcon/base.c | 3 + drivers/gpu/drm/nouveau/nvkm/falcon/msgqueue.c | 6 +- drivers/gpu/drm/nouveau/nvkm/subdev/Kbuild | 1 + drivers/gpu/drm/nouveau/nvkm/subdev/bar/Kbuild | 2 +- drivers/gpu/drm/nouveau/nvkm/subdev/bar/{tu104.c => tu102.c} | 30 +- drivers/gpu/drm/nouveau/nvkm/subdev/bios/dp.c | 2 +- drivers/gpu/drm/nouveau/nvkm/subdev/bios/init.c | 11 +- drivers/gpu/drm/nouveau/nvkm/subdev/devinit/Kbuild | 2 +- drivers/gpu/drm/nouveau/nvkm/subdev/devinit/{tu104.c => tu102.c} | 14 +- drivers/gpu/drm/nouveau/nvkm/subdev/fault/Kbuild | 3 +- drivers/gpu/drm/nouveau/nvkm/subdev/fault/base.c | 2 + drivers/gpu/drm/nouveau/nvkm/subdev/fault/gp100.c | 3 + drivers/gpu/drm/nouveau/nvkm/subdev/fault/gv100.c | 16 + drivers/gpu/drm/nouveau/nvkm/subdev/fault/priv.h | 7 + drivers/gpu/drm/nouveau/nvkm/subdev/fault/{tu104.c => tu102.c} | 39 ++- drivers/gpu/drm/nouveau/nvkm/subdev/fault/user.c | 106 ++++++ drivers/gpu/drm/nouveau/nvkm/subdev/fb/gddr3.c | 2 +- drivers/gpu/drm/nouveau/nvkm/subdev/gsp/Kbuild | 1 + drivers/gpu/drm/nouveau/nvkm/subdev/gsp/gv100.c | 62 ++++ drivers/gpu/drm/nouveau/nvkm/subdev/mc/Kbuild | 2 +- drivers/gpu/drm/nouveau/nvkm/subdev/mc/{tu104.c => tu102.c} | 10 +- drivers/gpu/drm/nouveau/nvkm/subdev/mmu/Kbuild | 4 +- drivers/gpu/drm/nouveau/nvkm/subdev/mmu/gp100.c | 2 +- drivers/gpu/drm/nouveau/nvkm/subdev/mmu/gp10b.c | 2 +- drivers/gpu/drm/nouveau/nvkm/subdev/mmu/gv100.c | 2 +- drivers/gpu/drm/nouveau/nvkm/subdev/mmu/priv.h | 2 +- drivers/gpu/drm/nouveau/nvkm/subdev/mmu/{tu104.c => tu102.c} | 8 +- drivers/gpu/drm/nouveau/nvkm/subdev/mmu/uvmm.c | 83 ++++- drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.c | 382 +++++++++++++++++--- drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.h | 82 +++-- drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgf100.c | 56 ++- drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgk104.c | 10 +- drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgk20a.c | 10 +- drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgm200.c | 22 +- drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgm20b.c | 14 +- drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgp100.c | 210 ++++++++++- drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgp10b.c | 12 +- drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgv100.c | 12 +- drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmmcp77.c | 8 +- drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmnv04.c | 15 +- drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmnv41.c | 6 +- drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmnv44.c | 6 +- drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmnv50.c | 6 +- drivers/gpu/drm/nouveau/nvkm/subdev/mmu/{vmmtu104.c => vmmtu102.c} | 13 +- drivers/gpu/drm/nouveau/nvkm/subdev/pmu/memx.c | 4 +- drivers/gpu/drm/nouveau/nvkm/subdev/secboot/acr_r352.c | 4 +- drivers/gpu/drm/nouveau/nvkm/subdev/top/base.c | 16 + drivers/gpu/drm/nouveau/nvkm/subdev/top/gk104.c | 2 + drivers/gpu/drm/nouveau/nvkm/subdev/volt/Kbuild | 1 + drivers/gpu/drm/nouveau/nvkm/subdev/volt/gf117.c | 60 ++++ include/uapi/drm/nouveau_drm.h | 51 +++ 134 files changed, 4268 insertions(+), 1002 deletions(-) create mode 100644 drivers/gpu/drm/nouveau/include/nvif/clb069.h create mode 100644 drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h create mode 100644 drivers/gpu/drm/nouveau/nouveau_dmem.c create mode 100644 drivers/gpu/drm/nouveau/nouveau_dmem.h create mode 100644 drivers/gpu/drm/nouveau/nouveau_svm.c create mode 100644 drivers/gpu/drm/nouveau/nouveau_svm.h rename drivers/gpu/drm/nouveau/nvkm/engine/ce/{tu104.c => tu102.c} (91%) rename drivers/gpu/drm/nouveau/nvkm/engine/disp/{roottu104.c => roottu102.c} (74%) rename drivers/gpu/drm/nouveau/nvkm/engine/disp/{sortu104.c => sortu102.c} (90%) rename drivers/gpu/drm/nouveau/nvkm/engine/disp/{tu104.c => tu102.c} (93%) rename drivers/gpu/drm/nouveau/nvkm/engine/fifo/{gpfifotu104.c => gpfifotu102.c} (91%) rename drivers/gpu/drm/nouveau/nvkm/engine/fifo/{tu104.c => tu102.c} (82%) rename drivers/gpu/drm/nouveau/nvkm/engine/fifo/{usertu104.c => usertu102.c} (86%) create mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/sec2/tu102.c rename drivers/gpu/drm/nouveau/nvkm/subdev/bar/{tu104.c => tu102.c} (84%) rename drivers/gpu/drm/nouveau/nvkm/subdev/devinit/{tu104.c => tu102.c} (87%) rename drivers/gpu/drm/nouveau/nvkm/subdev/fault/{tu104.c => tu102.c} (82%) create mode 100644 drivers/gpu/drm/nouveau/nvkm/subdev/fault/user.c create mode 100644 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/Kbuild create mode 100644 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/gv100.c rename drivers/gpu/drm/nouveau/nvkm/subdev/mc/{tu104.c => tu102.c} (88%) rename drivers/gpu/drm/nouveau/nvkm/subdev/mmu/{tu104.c => tu102.c} (88%) rename drivers/gpu/drm/nouveau/nvkm/subdev/mmu/{vmmtu104.c => vmmtu102.c} (89%) create mode 100644 drivers/gpu/drm/nouveau/nvkm/subdev/volt/gf117.c _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel