Hi Dave & Daniel, Here is the first drm-intel-gt-next feature PR towards v5.18. For DG2 adds subplatform G12, missing workarounds and fixes GuC loading on ARM64. C0/D0 stepping info added for RPL-S. For uAPI enables support for simple parallel submission with execlists which was previously enabled only for GuC. Further fixes for PMU metrics when GuC is enabled, better error reporting for GuC loading failures. Fix for PXP unbind splat. Updates to GuC version 69.0.3 with improvements to GT reset scenarios. The rest is mostly refactoring of the memory management code, as highlights introduction of async unbinding/migration and removal of short-term pinning in execbuf. Then a few selftest and coding style fixes. Regards, Joonas *** drm-intel-gt-next-2022-02-17: UAPI Changes: - Weak parallel submission support for execlists Minimal implementation of the parallel submission support for execlists backend that was previously only implemented for GuC. Support one sibling non-virtual engine. Core Changes: - Two backmerges of drm/drm-next for header file renames/changes and i915_regs reorganization Driver Changes: - Add new DG2 subplatform: DG2-G12 (Matt R) - Add new DG2 workarounds (Matt R, Ram, Bruce) - Handle pre-programmed WOPCM registers for DG2+ (Daniele) - Update guc shim control programming on XeHP SDV+ (Daniele) - Add RPL-S C0/D0 stepping information (Anusha) - Improve GuC ADS initialization to work on ARM64 on dGFX (Lucas) - Fix KMD and GuC race on accessing PMU busyness (Umesh) - Use PM timestamp instead of RING TIMESTAMP for reference in PMU with GuC (Umesh) - Report error on invalid reset notification from GuC (John) - Avoid WARN splat by holding RPM wakelock during PXP unbind (Juston) - Fixes to parallel submission implementation (Matt B.) - Improve GuC loading status check/error reports (John) - Tweak TTM LRU priority hint selection (Matt A.) - Align the plane_vma to min_page_size of stolen mem (Ram) - Introduce vma resources and implement async unbinding (Thomas) - Use struct vma_resource instead of struct vma_snapshot (Thomas) - Return some TTM accel move errors instead of trying memcpy move (Thomas) - Fix a race between vma / object destruction and unbinding (Thomas) - Remove short-term pins from execbuf (Maarten) - Update to GuC version 69.0.3 (John, Michal Wa.) - Improvements to GT reset paths in GuC backend (Matt B.) - Use shrinker_release_pages instead of writeback in shmem object hooks (Matt A., Tvrtko) - Use trylock instead of blocking lock when freeing GEM objects (Maarten) - Allocate intel_engine_coredump_alloc with ALLOW_FAIL (Matt B.) - Fixes to object unmapping and purging (Matt A) - Check for wedged device in GuC backend (John) - Avoid lockdep splat by locking dpt_obj around set_cache_level (Maarten) - Allow dead vm to unbind vma's without lock (Maarten) - s/engine->i915/i915/ for DG2 engine workarounds (Matt R) - Use to_gt() helper for GGTT accesses (Michal Wi.) - Selftest improvements (Matt B., Thomas, Ram) - Coding style and compiler warning fixes (Matt B., Jasmine, Andi, Colin, Gustavo, Dan) The following changes since commit 53dbee4926d3706ca9e03f3928fa85b5ec3bc0cc: Merge tag 'drm-misc-next-2022-01-27' of git://anongit.freedesktop.org/drm/drm-misc into drm-next (2022-02-01 19:02:41 +1000) are available in the Git repository at: git://anongit.freedesktop.org/drm/drm-intel tags/drm-intel-gt-next-2022-02-17 for you to fetch changes up to 154cfae6158141b18d65abb0db679bb51a8294e7: drm/i915/dg2: Add Wa_22011100796 (2022-02-11 17:11:44 +0530) ---------------------------------------------------------------- UAPI Changes: - Weak parallel submission support for execlists Minimal implementation of the parallel submission support for execlists backend that was previously only implemented for GuC. Support one sibling non-virtual engine. Core Changes: - Two backmerges of drm/drm-next for header file renames/changes and i915_regs reorganization Driver Changes: - Add new DG2 subplatform: DG2-G12 (Matt R) - Add new DG2 workarounds (Matt R, Ram, Bruce) - Handle pre-programmed WOPCM registers for DG2+ (Daniele) - Update guc shim control programming on XeHP SDV+ (Daniele) - Add RPL-S C0/D0 stepping information (Anusha) - Improve GuC ADS initialization to work on ARM64 on dGFX (Lucas) - Fix KMD and GuC race on accessing PMU busyness (Umesh) - Use PM timestamp instead of RING TIMESTAMP for reference in PMU with GuC (Umesh) - Report error on invalid reset notification from GuC (John) - Avoid WARN splat by holding RPM wakelock during PXP unbind (Juston) - Fixes to parallel submission implementation (Matt B.) - Improve GuC loading status check/error reports (John) - Tweak TTM LRU priority hint selection (Matt A.) - Align the plane_vma to min_page_size of stolen mem (Ram) - Introduce vma resources and implement async unbinding (Thomas) - Use struct vma_resource instead of struct vma_snapshot (Thomas) - Return some TTM accel move errors instead of trying memcpy move (Thomas) - Fix a race between vma / object destruction and unbinding (Thomas) - Remove short-term pins from execbuf (Maarten) - Update to GuC version 69.0.3 (John, Michal Wa.) - Improvements to GT reset paths in GuC backend (Matt B.) - Use shrinker_release_pages instead of writeback in shmem object hooks (Matt A., Tvrtko) - Use trylock instead of blocking lock when freeing GEM objects (Maarten) - Allocate intel_engine_coredump_alloc with ALLOW_FAIL (Matt B.) - Fixes to object unmapping and purging (Matt A) - Check for wedged device in GuC backend (John) - Avoid lockdep splat by locking dpt_obj around set_cache_level (Maarten) - Allow dead vm to unbind vma's without lock (Maarten) - s/engine->i915/i915/ for DG2 engine workarounds (Matt R) - Use to_gt() helper for GGTT accesses (Michal Wi.) - Selftest improvements (Matt B., Thomas, Ram) - Coding style and compiler warning fixes (Matt B., Jasmine, Andi, Colin, Gustavo, Dan) ---------------------------------------------------------------- Andi Shyti (2): drm/i915: Remove unused i915->ggtt drm/i915: fix header file inclusion for might_alloc() Anusha Srivatsa (1): drm/i915/rpl-s: Add stepping info Bruce Chang (1): drm/i915/dg2: Add Wa_22011100796 Colin Ian King (1): i915: make array flex_regs static const Dan Carpenter (1): drm/i915: delete shadow "ret" variable Daniele Ceraolo Spurio (2): drm/i915/wopcm: Handle pre-programmed WOPCM registers drm/i915/guc: Update guc shim control programming on newer platforms Gustavo A. R. Silva (1): drm/i915/guc: Use struct_size() helper in kmalloc() Jasmine Newsome (1): drm/i915/gem: Use local pointer ttm for __i915_ttm_move John Harrison (5): drm/i915/guc: Report error on invalid reset notification drm/i915/guc: Check for wedged before doing stuff drm/i915/guc: Temporarily bump the GuC load timeout drm/i915/guc: Update to GuC version 69.0.3 drm/i915/guc: Improve GuC loading status check/error reports Joonas Lahtinen (1): Merge drm/drm-next into drm-intel-gt-next Juston Li (1): drm/i915/pxp: Hold RPM wakelock during PXP unbind Lucas De Marchi (2): drm/i915/guc: Prepare for error propagation drm/i915/guc: Use a single pass to calculate regset Maarten Lankhorst (8): drm/i915: Call i915_gem_evict_vm in vm_fault_gtt to prevent new ENOSPC errors, v2. drm/i915: Add locking to i915_gem_evict_vm(), v3. drm/i915: Add object locking to i915_gem_evict_for_node and i915_gem_evict_something, v2. drm/i915: Add i915_vma_unbind_unlocked, and take obj lock for i915_vma_unbind, v2. drm/i915: Remove support for unlocked i915_vma unbind drm/i915: Remove short-term pins from execbuf, v6. drm/i915: Lock dpt_obj around set_cache_level, v2. drm/i915: Allow dead vm to unbind vma's without lock. Matt Roper (4): drm/i915/dg2: Add Wa_18018781329 drm/i915/dg2: Add Wa_14015227452 drm/i915/dg2: s/engine->i915/i915/ for engine workarounds drm/i915: Introduce G12 subplatform of DG2 Matthew Auld (7): drm/i915: remove writeback hook drm/i915: clean up shrinker_release_pages drm/i915: don't call free_mmap_offset when purging drm/i915/ttm: only fault WILLNEED objects drm/i915/ttm: add unmap_virtual callback drm/i915/ttm: ensure we unmap when purging drm/i915/ttm: tweak priority hint selection Matthew Brost (11): drm/i915/execlists: Weak parallel submission support for execlists drm/i915: Fix possible uninitialized variable in parallel extension drm/i915: Increment composite fence seqno drm/i915/selftests: Add a cancel request selftest that triggers a reset drm/i915/guc: Remove hacks for reset and schedule disable G2H being received out of order drm/i915: Allocate intel_engine_coredump_alloc with ALLOW_FAIL drm/i915/guc: Add work queue to trigger a GT reset drm/i915/guc: Flush G2H handler during a GT reset drm/i915: Lock timeline mutex directly in error path of eb_pin_timeline drm/i915/guc: Ensure multi-lrc fini breadcrumb math is correct drm/i915/selftests: Use less in contexts steal guc id test Michał Winiarski (5): drm/i915/gt: Use to_gt() helper for GGTT accesses drm/i915: Use to_gt() helper for GGTT accesses drm/i915/gem: Use to_gt() helper for GGTT accesses drm/i915/display: Use to_gt() helper for GGTT accesses drm/i915/selftests: Use to_gt() helper for GGTT accesses Ramalingam C (3): drm/i915/dg2: Add Wa_22011450934 drm/i915: align the plane_vma to min_page_size of stolen mem drm/i915: More gt idling time with guc submission Thomas Hellström (9): drm/i915: Initial introduction of vma resources drm/i915: Use the vma resource as argument for gtt binding / unbinding drm/i915: Don't pin the object pages during pending vma binds drm/i915: Use vma resources for async unbinding drm/i915: Asynchronous migration selftest drm/i915: Use struct vma_resource instead of struct vma_snapshot drm/i915: Fix vma resource freeing drm/i915: Fix a race between vma / object destruction and unbinding drm/i915/ttm: Return some errors instead of trying memcpy move Tvrtko Ursulin (1): Merge drm/drm-next into drm-intel-gt-next Umesh Nerlige Ramappa (2): drm/i915/pmu: Use PM timestamp instead of RING TIMESTAMP for reference drm/i915/pmu: Fix KMD and GuC race on accessing busyness Documentation/gpu/i915.rst | 1 + drivers/gpu/drm/i915/Makefile | 2 +- drivers/gpu/drm/i915/display/intel_dpt.c | 33 +- drivers/gpu/drm/i915/display/intel_fb_pin.c | 8 +- drivers/gpu/drm/i915/display/intel_fbc.c | 2 +- drivers/gpu/drm/i915/display/intel_fbdev.c | 2 +- drivers/gpu/drm/i915/display/intel_plane_initial.c | 7 +- drivers/gpu/drm/i915/gem/i915_gem_context.c | 11 +- drivers/gpu/drm/i915/gem/i915_gem_context.h | 2 +- drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c | 248 ++++++------ drivers/gpu/drm/i915/gem/i915_gem_mman.c | 36 +- drivers/gpu/drm/i915/gem/i915_gem_object.c | 18 + drivers/gpu/drm/i915/gem/i915_gem_object.h | 4 +- drivers/gpu/drm/i915/gem/i915_gem_object_types.h | 51 ++- drivers/gpu/drm/i915/gem/i915_gem_pages.c | 10 - drivers/gpu/drm/i915/gem/i915_gem_pm.c | 2 +- drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 17 +- drivers/gpu/drm/i915/gem/i915_gem_shrinker.c | 30 +- drivers/gpu/drm/i915/gem/i915_gem_stolen.c | 8 +- drivers/gpu/drm/i915/gem/i915_gem_tiling.c | 15 +- drivers/gpu/drm/i915/gem/i915_gem_ttm.c | 16 +- drivers/gpu/drm/i915/gem/i915_gem_ttm_move.c | 27 +- drivers/gpu/drm/i915/gem/selftests/huge_pages.c | 39 +- .../drm/i915/gem/selftests/i915_gem_client_blt.c | 4 +- .../gpu/drm/i915/gem/selftests/i915_gem_context.c | 2 +- .../gpu/drm/i915/gem/selftests/i915_gem_migrate.c | 192 +++++++++- drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c | 25 +- .../gpu/drm/i915/gem/selftests/i915_gem_object.c | 2 +- drivers/gpu/drm/i915/gt/gen6_ppgtt.c | 19 +- drivers/gpu/drm/i915/gt/gen8_ppgtt.c | 37 +- drivers/gpu/drm/i915/gt/intel_context.c | 4 +- drivers/gpu/drm/i915/gt/intel_engine_cs.c | 9 +- .../gpu/drm/i915/gt/intel_execlists_submission.c | 38 ++ drivers/gpu/drm/i915/gt/intel_ggtt.c | 133 ++++--- drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c | 7 +- drivers/gpu/drm/i915/gt/intel_gt.c | 7 +- drivers/gpu/drm/i915/gt/intel_gt.h | 2 +- drivers/gpu/drm/i915/gt/intel_gtt.c | 4 + drivers/gpu/drm/i915/gt/intel_gtt.h | 19 +- drivers/gpu/drm/i915/gt/intel_lrc.c | 32 ++ drivers/gpu/drm/i915/gt/intel_ppgtt.c | 22 +- drivers/gpu/drm/i915/gt/intel_region_lmem.c | 4 +- drivers/gpu/drm/i915/gt/intel_reset.c | 9 + drivers/gpu/drm/i915/gt/intel_workarounds.c | 39 +- drivers/gpu/drm/i915/gt/selftest_hangcheck.c | 2 +- drivers/gpu/drm/i915/gt/selftest_reset.c | 2 +- drivers/gpu/drm/i915/gt/uc/abi/guc_actions_abi.h | 80 ++-- drivers/gpu/drm/i915/gt/uc/abi/guc_errors_abi.h | 23 ++ drivers/gpu/drm/i915/gt/uc/abi/guc_klvs_abi.h | 82 ++++ drivers/gpu/drm/i915/gt/uc/intel_guc.c | 126 ++++++- drivers/gpu/drm/i915/gt/uc/intel_guc.h | 25 ++ drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c | 204 +++++++--- drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c | 143 +++---- drivers/gpu/drm/i915/gt/uc/intel_guc_fw.c | 38 +- drivers/gpu/drm/i915/gt/uc/intel_guc_fwif.h | 37 +- drivers/gpu/drm/i915/gt/uc/intel_guc_log.c | 31 +- drivers/gpu/drm/i915/gt/uc/intel_guc_log.h | 3 + drivers/gpu/drm/i915/gt/uc/intel_guc_reg.h | 7 +- drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c | 262 +++++++++---- drivers/gpu/drm/i915/gt/uc/intel_huc.c | 1 + drivers/gpu/drm/i915/gt/uc/intel_uc.c | 31 +- drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c | 43 ++- drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h | 2 +- drivers/gpu/drm/i915/gt/uc/selftest_guc.c | 2 +- drivers/gpu/drm/i915/gvt/aperture_gm.c | 2 +- drivers/gpu/drm/i915/gvt/dmabuf.c | 2 +- drivers/gpu/drm/i915/i915_debugfs.c | 7 +- drivers/gpu/drm/i915/i915_driver.c | 10 +- drivers/gpu/drm/i915/i915_drv.h | 32 +- drivers/gpu/drm/i915/i915_gem.c | 37 +- drivers/gpu/drm/i915/i915_gem_evict.c | 101 ++++- drivers/gpu/drm/i915/i915_gem_gtt.c | 16 +- drivers/gpu/drm/i915/i915_gem_gtt.h | 4 + drivers/gpu/drm/i915/i915_getparam.c | 2 +- drivers/gpu/drm/i915/i915_gpu_error.c | 89 ++--- drivers/gpu/drm/i915/i915_module.c | 3 + drivers/gpu/drm/i915/i915_pci.c | 1 + drivers/gpu/drm/i915/i915_perf.c | 8 +- drivers/gpu/drm/i915/i915_reg.h | 12 +- drivers/gpu/drm/i915/i915_request.c | 12 +- drivers/gpu/drm/i915/i915_request.h | 6 +- drivers/gpu/drm/i915/i915_vgpu.c | 2 +- drivers/gpu/drm/i915/i915_vma.c | 376 +++++++++++++----- drivers/gpu/drm/i915/i915_vma.h | 34 +- drivers/gpu/drm/i915/i915_vma_resource.c | 418 +++++++++++++++++++++ drivers/gpu/drm/i915/i915_vma_resource.h | 234 ++++++++++++ drivers/gpu/drm/i915/i915_vma_snapshot.c | 134 ------- drivers/gpu/drm/i915/i915_vma_snapshot.h | 112 ------ drivers/gpu/drm/i915/i915_vma_types.h | 19 +- drivers/gpu/drm/i915/intel_device_info.h | 4 +- drivers/gpu/drm/i915/intel_step.c | 15 + drivers/gpu/drm/i915/intel_wopcm.c | 42 ++- drivers/gpu/drm/i915/selftests/i915_gem.c | 8 +- drivers/gpu/drm/i915/selftests/i915_gem_evict.c | 28 +- drivers/gpu/drm/i915/selftests/i915_gem_gtt.c | 209 +++++++---- drivers/gpu/drm/i915/selftests/i915_request.c | 119 +++++- drivers/gpu/drm/i915/selftests/i915_vma.c | 30 +- drivers/gpu/drm/i915/selftests/igt_flush_test.c | 2 +- drivers/gpu/drm/i915/selftests/mock_gem_device.c | 11 +- drivers/gpu/drm/i915/selftests/mock_gtt.c | 21 +- drivers/gpu/drm/i915/selftests/mock_gtt.h | 3 +- 101 files changed, 3149 insertions(+), 1359 deletions(-) create mode 100644 drivers/gpu/drm/i915/gt/uc/abi/guc_klvs_abi.h create mode 100644 drivers/gpu/drm/i915/i915_vma_resource.c create mode 100644 drivers/gpu/drm/i915/i915_vma_resource.h delete mode 100644 drivers/gpu/drm/i915/i915_vma_snapshot.c delete mode 100644 drivers/gpu/drm/i915/i915_vma_snapshot.h