This series includes a version of Maarten' series[1], which converts more of the driver locking over to dma-resv. On top of this we now implement things like LMEM eviction, which has a dependency on this new locking design. In terms of new uAPI we have gem_create_ext, which offers extensions support for gem_create. For now the only extension we add is giving userspace the ability to optionally provide a priority list of potential placements for the object. The other bit of new uAPI is the query interface for memory regions, which describes the supported memory regions for the device. What this reports can then be fed into gem_create_ext to specify where an object might reside, like device local memory. Note that the class/instance complexity in the uAPI is not very relevant for DG1, but is in preparation for the Xe HP multi-tile architecture with multiple memory regions. The series still includes relocation support, but that's purely for CI, until we have completed all the IGT rework[2] and so will not be merged. Likewise for pread/pwrite, which will also be dropped from DG1+. [1] https://patchwork.freedesktop.org/series/82337/ [2] https://patchwork.freedesktop.org/series/82954/ Abdiel Janulgue (3): drm/i915/query: Expose memory regions through the query uAPI drm/i915: Provide a way to disable PCIe relaxed write ordering drm/i915: Reintroduce mem->reserved Animesh Manna (2): drm/i915/lmem: reset the lmem buffer created by fbdev drm/i915/dsb: Enable lmem for dsb Anshuman Gupta (1): drm/i915/oprom: Basic sanitization Anusha Srivatsa (1): drm/i915/lmem: Bypass aperture when lmem is available Bommu Krishnaiah (1): drm/i915/gem: Update shmem available memory CQ Tang (13): drm/i915/dg1: Fix occasional migration error drm/i915: i915 returns -EBUSY on thread contention drm/i915: setup GPU device lmem region drm/i915: Fix object page offset within a region drm/i915: add i915_gem_object_is_devmem() function drm/i915: finish memory region support for stolen objects. drm/i915: Create stolen memory region from local memory drm/i915/dg1: intel_memory_region_evict() changes for eviction drm/i915/dg1: i915_gem_object_memcpy(..) infrastructure drm/i915/dg1: Eviction logic drm/i915/dg1: Add enable_eviction modparam drm/i915/dg1: Add lmem_size modparam drm/i915: need consider system BO snoop for dgfx Chris Wilson (2): drm/i915/gt: Move move context layout registers and offsets to lrc_reg.h drm/i915/gt: Rename lrc.c to execlists_submission.c Clint Taylor (3): drm/i915/dg1: Read OPROM via SPI controller drm/i915/dg1: Compute MEM Bandwidth using MCHBAR drm/i915/dg1: Double memory bandwidth available Daniele Ceraolo Spurio (5): drm/i915: split gen8+ flush and bb_start emission functions to their own file drm/i915: split wa_bb code to its own file drm/i915: Make intel_init_workaround_bb more compatible with ww locking. drm/i915/guc: put all guc objects in lmem when available drm/i915: WA for zero memory channel Imre Deak (1): drm/i915/dg1: Reserve first 1MB of local memory Kui Wen (1): drm/i915/dg1: Do not check r->sgt.pfn for NULL Lucas De Marchi (2): drm/i915: move eviction to prepare hook drm/i915/dg1: allow pci to auto probe Maarten Lankhorst (60): drm/i915: Pin timeline map after first timeline pin, v5. drm/i915: Move cmd parser pinning to execbuffer drm/i915: Add missing -EDEADLK handling to execbuf pinning, v2. drm/i915: Ensure we hold the object mutex in pin correctly v2 drm/i915: Add gem object locking to madvise. drm/i915: Move HAS_STRUCT_PAGE to obj->flags drm/i915: Rework struct phys attachment handling drm/i915: Convert i915_gem_object_attach_phys() to ww locking, v2. drm/i915: make lockdep slightly happier about execbuf. drm/i915: Disable userptr pread/pwrite support. drm/i915: No longer allow exporting userptr through dma-buf drm/i915: Reject more ioctls for userptr drm/i915: Reject UNSYNCHRONIZED for userptr, v2. drm/i915: Make compilation of userptr code depend on MMU_NOTIFIER. drm/i915: Fix userptr so we do not have to worry about obj->mm.lock, v5. drm/i915: Flatten obj->mm.lock drm/i915: Populate logical context during first pin. drm/i915: Make ring submission compatible with obj->mm.lock removal, v2. drm/i915: Handle ww locking in init_status_page drm/i915: Rework clflush to work correctly without obj->mm.lock. drm/i915: Pass ww ctx to intel_pin_to_display_plane drm/i915: Add object locking to vm_fault_cpu drm/i915: Move pinning to inside engine_wa_list_verify() drm/i915: Take reservation lock around i915_vma_pin. drm/i915: Make __engine_unpark() compatible with ww locking v2 drm/i915: Take obj lock around set_domain ioctl drm/i915: Defer pin calls in buffer pool until first use by caller. drm/i915: Fix pread/pwrite to work with new locking rules. drm/i915: Fix workarounds selftest, part 1 drm/i915: Add igt_spinner_pin() to allow for ww locking around spinner. drm/i915: Add ww locking around vm_access() drm/i915: Increase ww locking for perf. drm/i915: Lock ww in ucode objects correctly drm/i915: Add ww locking to dma-buf ops. drm/i915: Add missing ww lock in intel_dsb_prepare. drm/i915: Fix ww locking in shmem_create_from_object drm/i915: Use a single page table lock for each gtt. drm/i915/selftests: Prepare huge_pages testcases for obj->mm.lock removal. drm/i915/selftests: Prepare client blit for obj->mm.lock removal. drm/i915/selftests: Prepare coherency tests for obj->mm.lock removal. drm/i915/selftests: Prepare context tests for obj->mm.lock removal. drm/i915/selftests: Prepare dma-buf tests for obj->mm.lock removal. drm/i915/selftests: Prepare execbuf tests for obj->mm.lock removal. drm/i915/selftests: Prepare mman testcases for obj->mm.lock removal. drm/i915/selftests: Prepare object tests for obj->mm.lock removal. drm/i915/selftests: Prepare object blit tests for obj->mm.lock removal. drm/i915/selftests: Prepare igt_gem_utils for obj->mm.lock removal drm/i915/selftests: Prepare context selftest for obj->mm.lock removal drm/i915/selftests: Prepare hangcheck for obj->mm.lock removal drm/i915/selftests: Prepare execlists for obj->mm.lock removal drm/i915/selftests: Prepare mocs tests for obj->mm.lock removal drm/i915/selftests: Prepare ring submission for obj->mm.lock removal drm/i915/selftests: Prepare timeline tests for obj->mm.lock removal drm/i915/selftests: Prepare i915_request tests for obj->mm.lock removal drm/i915/selftests: Prepare memory region tests for obj->mm.lock removal drm/i915/selftests: Prepare cs engine tests for obj->mm.lock removal drm/i915/selftests: Prepare gtt tests for obj->mm.lock removal drm/i915: Finally remove obj->mm.lock. drm/i915: Keep userpointer bindings if seqcount is unchanged, v2. drm/i915: Implement eviction locking v2 Matt Roper (1): drm/i915/lmem: Fail driver init if LMEM training failed Matthew Auld (19): drm/i915/selftest: also consider non-contiguous objects drm/i915/selftest: assert we get 2M GTT pages drm/i915/selftest: handle local-memory in perf_memcpy HAX drm/i915/lmem: support CPU relocations HAX drm/i915/lmem: support pread and pwrite drm/i915: introduce kernel blitter_context drm/i915/region: support basic eviction drm/i915: support basic object migration drm/i915/uapi: introduce drm_i915_gem_create_ext drm/i915: setup the LMEM region drm/i915/gtt: map the PD up front drm/i915/gtt/dgfx: place the PD in LMEM drm/i915/gtt: make flushing conditional drm/i915/gtt/dg1: add PTE_LM plumbing for PPGTT drm/i915/gtt/dg1: add PTE_LM plumbing for GGTT drm/i915: allocate context from LMEM drm/i915: move engine scratch to LMEM drm/i915/lmem: support optional CPU clearing for special internal use drm/i915: drop fake lmem Michael J. Ruhl (2): drm/i915/dmabuf: Disallow LMEM objects from dma-buf drm/i915/dg1: Introduce dmabuf mmap to LMEM Michel Thierry (2): drm/i915/lmem: allocate cmd ring in lmem drm/i915/lmem: allocate HWSP in lmem Mohammed Khajapasha (2): drm/i915/fbdev: Use lmem physical addresses for fb_mmap() on discrete drm/i915: Return error value when bo not in LMEM for discrete Prathap Kumar Valsan (2): drm/i915: Store gt in memory region drm/i915/pm: suspend and restore ppgtt mapping Ramalingam C (6): drm/i915: define intel_partial_pages_for_sg_table drm/i915: create and destroy dummy vma drm/i915: blt copy between objs using pre-created vma windows drm/i915: window_blt_copy is used for swapin and swapout drm/i915: Lmem eviction statistics by category drm/i915/gem/selftest: test and measure window based blt cpy Stuart Summers (1): drm/i915: Allow non-uniform subslices in gen12+ Sudeep Dutt (2): drm/i915/dg1: Track swap in/out stats via debugfs drm/i915/dg1: Measure swap in/out timing stats Thomas Hellström (15): HAX drm/i915: Work around the selftest timeline lock splat workaround drm/i915: Introduce drm_i915_lock_isolated drm/i915: Lock hwsp objects isolated for pinning at create time drm/i915: Prepare for obj->mm.lock removal drm/i915: Avoid some false positives in assert_object_held() drm/i915: Reference contending lock objects drm/i915: Break out dma_resv ww locking utilities to separate files drm/i915: Introduce a for_i915_gem_ww(){} drm/i915: Untangle the vma pages_mutex drm/i915: Add blit functions that can be called from within a WW transaction drm/i915: Delay publishing objects on the eviction lists drm/i915: Perform execbuffer object locking as a separate step drm/i915: Support ww eviction drm/i915: Use a ww transaction in the fault handler drm/i915: Use a ww transaction in i915_gem_object_pin_map_unlocked() Tvrtko Ursulin (4): drm/i915/dg1: Eliminate eviction mutex drm/i915/dg1: Keep engine awake across whole blit drm/i915/dg1: Add dedicated context for blitter eviction drm/i915: Improve accuracy of eviction stats Venkata Ramana Nayana (8): drm/i915: suspend/resume eviction drm/i915: Reset blitter context when unpark engine drm/i915/gt: Allocate default ctx objects in SMEM drm/i915: suspend/resume enable blitter eviction drm/i915: suspend/resume handling of perma-pinned objects drm/i915: Support ww locks in suspend/resume drm/i915/dg1: Fix mapping type for default state object drm/i915/dg1: Fix GPU hang due to shmemfs page drop Venkata Sandeep Dhanalakota (2): drm/i915: Update the helper to set correct mapping drm/i915/lmem: Limit block size to 4G Zbigniew Kempczyński (1): drm/i915: Distinction of memory regions drivers/gpu/drm/i915/Kconfig.debug | 11 + drivers/gpu/drm/i915/Makefile | 7 +- drivers/gpu/drm/i915/display/intel_bios.c | 75 +- drivers/gpu/drm/i915/display/intel_bw.c | 64 +- drivers/gpu/drm/i915/display/intel_display.c | 80 +- drivers/gpu/drm/i915/display/intel_display.h | 2 +- drivers/gpu/drm/i915/display/intel_dsb.c | 9 +- drivers/gpu/drm/i915/display/intel_fbc.c | 20 +- drivers/gpu/drm/i915/display/intel_fbdev.c | 54 +- drivers/gpu/drm/i915/display/intel_opregion.c | 169 ++++ drivers/gpu/drm/i915/display/intel_opregion.h | 31 +- drivers/gpu/drm/i915/display/intel_overlay.c | 34 +- drivers/gpu/drm/i915/gem/i915_gem_clflush.c | 15 +- drivers/gpu/drm/i915/gem/i915_gem_context.c | 1 + drivers/gpu/drm/i915/gem/i915_gem_create.c | 398 ++++++++ drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c | 123 ++- drivers/gpu/drm/i915/gem/i915_gem_domain.c | 52 +- .../gpu/drm/i915/gem/i915_gem_execbuffer.c | 302 +++++- drivers/gpu/drm/i915/gem/i915_gem_fence.c | 95 -- drivers/gpu/drm/i915/gem/i915_gem_internal.c | 6 +- drivers/gpu/drm/i915/gem/i915_gem_lmem.c | 254 ++++- drivers/gpu/drm/i915/gem/i915_gem_lmem.h | 22 + drivers/gpu/drm/i915/gem/i915_gem_mman.c | 187 ++-- drivers/gpu/drm/i915/gem/i915_gem_mman.h | 11 + drivers/gpu/drm/i915/gem/i915_gem_object.c | 711 +++++++++++++- drivers/gpu/drm/i915/gem/i915_gem_object.h | 206 +++- .../gpu/drm/i915/gem/i915_gem_object_blt.c | 101 +- .../gpu/drm/i915/gem/i915_gem_object_blt.h | 10 + .../gpu/drm/i915/gem/i915_gem_object_types.h | 46 +- drivers/gpu/drm/i915/gem/i915_gem_pages.c | 140 ++- drivers/gpu/drm/i915/gem/i915_gem_phys.c | 110 +-- drivers/gpu/drm/i915/gem/i915_gem_region.c | 234 ++++- drivers/gpu/drm/i915/gem/i915_gem_region.h | 3 +- drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 46 +- drivers/gpu/drm/i915/gem/i915_gem_shrinker.c | 52 +- drivers/gpu/drm/i915/gem/i915_gem_shrinker.h | 6 +- drivers/gpu/drm/i915/gem/i915_gem_stolen.c | 247 +++-- drivers/gpu/drm/i915/gem/i915_gem_stolen.h | 10 +- drivers/gpu/drm/i915/gem/i915_gem_tiling.c | 2 - drivers/gpu/drm/i915/gem/i915_gem_userptr.c | 870 ++++++----------- .../drm/i915/gem/selftests/huge_gem_object.c | 4 +- .../gpu/drm/i915/gem/selftests/huge_pages.c | 60 +- .../i915/gem/selftests/i915_gem_client_blt.c | 8 +- .../i915/gem/selftests/i915_gem_coherency.c | 18 +- .../drm/i915/gem/selftests/i915_gem_context.c | 21 +- .../drm/i915/gem/selftests/i915_gem_dmabuf.c | 2 +- .../i915/gem/selftests/i915_gem_execbuffer.c | 2 +- .../drm/i915/gem/selftests/i915_gem_mman.c | 33 +- .../drm/i915/gem/selftests/i915_gem_object.c | 2 +- .../i915/gem/selftests/i915_gem_object_blt.c | 172 +++- .../drm/i915/gem/selftests/i915_gem_phys.c | 10 +- .../drm/i915/gem/selftests/igt_gem_utils.c | 2 +- drivers/gpu/drm/i915/gt/gen6_ppgtt.c | 11 +- drivers/gpu/drm/i915/gt/gen8_engine_cs.c | 393 ++++++++ drivers/gpu/drm/i915/gt/gen8_engine_cs.h | 26 + drivers/gpu/drm/i915/gt/gen8_ppgtt.c | 91 +- drivers/gpu/drm/i915/gt/gen8_ppgtt.h | 2 + drivers/gpu/drm/i915/gt/intel_context.c | 3 +- drivers/gpu/drm/i915/gt/intel_context.h | 2 + drivers/gpu/drm/i915/gt/intel_context_sseu.c | 2 +- drivers/gpu/drm/i915/gt/intel_context_types.h | 13 +- drivers/gpu/drm/i915/gt/intel_engine.h | 4 + drivers/gpu/drm/i915/gt/intel_engine_cs.c | 125 ++- drivers/gpu/drm/i915/gt/intel_engine_pm.c | 14 +- drivers/gpu/drm/i915/gt/intel_engine_types.h | 2 + .../drm/i915/gt/intel_engine_workaround_bb.c | 364 +++++++ .../drm/i915/gt/intel_engine_workaround_bb.h | 14 + ...tel_lrc.c => intel_execlists_submission.c} | 899 +++--------------- .../drm/i915/gt/intel_execlists_submission.h | 66 ++ drivers/gpu/drm/i915/gt/intel_ggtt.c | 93 +- drivers/gpu/drm/i915/gt/intel_gt.c | 14 +- .../gpu/drm/i915/gt/intel_gt_buffer_pool.c | 47 +- .../gpu/drm/i915/gt/intel_gt_buffer_pool.h | 5 + .../drm/i915/gt/intel_gt_buffer_pool_types.h | 1 + drivers/gpu/drm/i915/gt/intel_gt_irq.c | 1 + drivers/gpu/drm/i915/gt/intel_gtt.c | 105 +- drivers/gpu/drm/i915/gt/intel_gtt.h | 23 +- drivers/gpu/drm/i915/gt/intel_lrc.h | 128 --- drivers/gpu/drm/i915/gt/intel_lrc_reg.h | 39 + drivers/gpu/drm/i915/gt/intel_mocs.c | 2 +- drivers/gpu/drm/i915/gt/intel_ppgtt.c | 20 +- drivers/gpu/drm/i915/gt/intel_renderstate.c | 2 +- drivers/gpu/drm/i915/gt/intel_renderstate.h | 1 + drivers/gpu/drm/i915/gt/intel_ring.c | 24 +- .../gpu/drm/i915/gt/intel_ring_submission.c | 184 ++-- drivers/gpu/drm/i915/gt/intel_sseu.c | 6 +- drivers/gpu/drm/i915/gt/intel_timeline.c | 121 ++- drivers/gpu/drm/i915/gt/intel_timeline.h | 1 + .../gpu/drm/i915/gt/intel_timeline_types.h | 1 + drivers/gpu/drm/i915/gt/intel_workarounds.c | 24 +- drivers/gpu/drm/i915/gt/mock_engine.c | 24 +- drivers/gpu/drm/i915/gt/selftest_context.c | 5 +- drivers/gpu/drm/i915/gt/selftest_engine_cs.c | 4 +- .../{selftest_lrc.c => selftest_execlists.c} | 37 +- drivers/gpu/drm/i915/gt/selftest_hangcheck.c | 8 +- drivers/gpu/drm/i915/gt/selftest_mocs.c | 2 +- drivers/gpu/drm/i915/gt/selftest_reset.c | 5 +- .../drm/i915/gt/selftest_ring_submission.c | 4 +- drivers/gpu/drm/i915/gt/selftest_timeline.c | 100 +- .../gpu/drm/i915/gt/selftest_workarounds.c | 101 +- drivers/gpu/drm/i915/gt/shmem_utils.c | 11 +- drivers/gpu/drm/i915/gt/uc/intel_guc.c | 13 +- drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c | 1 + drivers/gpu/drm/i915/gt/uc/intel_guc_fw.c | 11 +- drivers/gpu/drm/i915/gt/uc/intel_guc_log.c | 4 +- .../gpu/drm/i915/gt/uc/intel_guc_submission.c | 1 + drivers/gpu/drm/i915/gt/uc/intel_huc.c | 18 +- drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c | 37 +- drivers/gpu/drm/i915/gvt/dmabuf.c | 2 +- drivers/gpu/drm/i915/gvt/mmio_context.h | 2 + drivers/gpu/drm/i915/gvt/scheduler.c | 1 + drivers/gpu/drm/i915/i915_active.c | 20 +- drivers/gpu/drm/i915/i915_cmd_parser.c | 104 +- drivers/gpu/drm/i915/i915_debugfs.c | 42 +- drivers/gpu/drm/i915/i915_drv.c | 277 +++++- drivers/gpu/drm/i915/i915_drv.h | 57 +- drivers/gpu/drm/i915/i915_gem.c | 418 +++----- drivers/gpu/drm/i915/i915_gem.h | 12 - drivers/gpu/drm/i915/i915_gem_gtt.c | 2 +- drivers/gpu/drm/i915/i915_gem_ww.c | 93 ++ drivers/gpu/drm/i915/i915_gem_ww.h | 53 ++ drivers/gpu/drm/i915/i915_gpu_error.c | 4 +- drivers/gpu/drm/i915/i915_memcpy.c | 2 +- drivers/gpu/drm/i915/i915_memcpy.h | 2 +- drivers/gpu/drm/i915/i915_mm.c | 2 +- drivers/gpu/drm/i915/i915_params.c | 11 +- drivers/gpu/drm/i915/i915_params.h | 3 +- drivers/gpu/drm/i915/i915_pci.c | 5 +- drivers/gpu/drm/i915/i915_perf.c | 57 +- drivers/gpu/drm/i915/i915_query.c | 62 ++ drivers/gpu/drm/i915/i915_reg.h | 17 + drivers/gpu/drm/i915/i915_selftest.h | 2 + drivers/gpu/drm/i915/i915_vma.c | 154 ++- drivers/gpu/drm/i915/i915_vma.h | 28 +- drivers/gpu/drm/i915/intel_memory_region.c | 229 ++++- drivers/gpu/drm/i915/intel_memory_region.h | 53 +- drivers/gpu/drm/i915/intel_region_lmem.c | 168 ++-- drivers/gpu/drm/i915/intel_region_lmem.h | 3 +- drivers/gpu/drm/i915/intel_uncore.c | 12 + drivers/gpu/drm/i915/selftests/i915_gem_gtt.c | 100 +- .../drm/i915/selftests/i915_live_selftests.h | 1 + drivers/gpu/drm/i915/selftests/i915_perf.c | 3 +- drivers/gpu/drm/i915/selftests/i915_request.c | 10 +- drivers/gpu/drm/i915/selftests/igt_spinner.c | 136 ++- drivers/gpu/drm/i915/selftests/igt_spinner.h | 5 + .../drm/i915/selftests/intel_memory_region.c | 442 ++++++++- drivers/gpu/drm/i915/selftests/mock_region.c | 4 +- include/uapi/drm/i915_drm.h | 118 +++ 148 files changed, 7813 insertions(+), 3312 deletions(-) create mode 100644 drivers/gpu/drm/i915/gem/i915_gem_create.c delete mode 100644 drivers/gpu/drm/i915/gem/i915_gem_fence.c create mode 100644 drivers/gpu/drm/i915/gt/gen8_engine_cs.c create mode 100644 drivers/gpu/drm/i915/gt/gen8_engine_cs.h create mode 100644 drivers/gpu/drm/i915/gt/intel_engine_workaround_bb.c create mode 100644 drivers/gpu/drm/i915/gt/intel_engine_workaround_bb.h rename drivers/gpu/drm/i915/gt/{intel_lrc.c => intel_execlists_submission.c} (87%) create mode 100644 drivers/gpu/drm/i915/gt/intel_execlists_submission.h delete mode 100644 drivers/gpu/drm/i915/gt/intel_lrc.h rename drivers/gpu/drm/i915/gt/{selftest_lrc.c => selftest_execlists.c} (99%) create mode 100644 drivers/gpu/drm/i915/i915_gem_ww.c create mode 100644 drivers/gpu/drm/i915/i915_gem_ww.h -- 2.26.2 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx