All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 0/6] drm/i915: Asynchronous vma unbinding
@ 2022-01-04 12:51 ` Thomas Hellström
  0 siblings, 0 replies; 32+ messages in thread
From: Thomas Hellström @ 2022-01-04 12:51 UTC (permalink / raw)
  To: intel-gfx, dri-devel; +Cc: Thomas Hellström, matthew.auld


This patch series introduces infrastructure for asynchronous vma
unbinding. The single enabled use-case is initially at buffer object
migration where we otherwise sync when unbinding vmas before migration.
This in theory allows us to pipeline any number of migrations, but in
practice the number is restricted by a sync wait when filling the
migration context ring. We might want to look at that moving forward if
needed.

The other main use-case is to be able to pipeline vma evictions, for
example with softpinning where a new vma wants to reuse the vm range
of an already active vma. We can't support this just yet because we
need dma_resv locking around vma eviction for that, which is under
implementation.

Patch 1 introduces vma resource first for error capture purposes
Patch 2 changes the vm backend interface to take vma resources rather than vmas
Patch 3 removes and unneeded page pinning
Patch 4 introduces the async unbinding itself, and finally
Patch 5 introduces a selftest
Patch 6 realizes we have duplicated functionality and removes the vma snapshots

v2:
-- Some kernel test robot reports addressed.
-- kmem cache for vma resources, See patch 4
-- Various fixes all over the place. See separate commit messages.
v3:
-- Re-add a missing i915_vma_resource_put()
-- Remove a stray debug printout
v4:
-- Patch series split in two. This is the second part.
-- Take cache coloring into account when searching for vma_resources
   pending unbind. (Matthew Auld)
v5:
-- Add a selftest.
-- Remove page pinning while sync binding.
-- A couple of fixes in i915_vma_resource_bind_dep_await()

Thomas Hellström (6):
  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

 drivers/gpu/drm/i915/Makefile                 |   2 +-
 drivers/gpu/drm/i915/display/intel_dpt.c      |  27 +-
 .../gpu/drm/i915/gem/i915_gem_execbuffer.c    |  17 +-
 drivers/gpu/drm/i915/gem/i915_gem_object.c    |  12 +
 drivers/gpu/drm/i915/gem/i915_gem_object.h    |   3 +
 .../gpu/drm/i915/gem/i915_gem_object_types.h  |  27 +-
 drivers/gpu/drm/i915/gem/i915_gem_ttm_move.c  |  11 +-
 .../gpu/drm/i915/gem/selftests/huge_pages.c   |  37 +-
 .../drm/i915/gem/selftests/i915_gem_migrate.c | 192 +++++++-
 drivers/gpu/drm/i915/gt/gen6_ppgtt.c          |  19 +-
 drivers/gpu/drm/i915/gt/gen8_ppgtt.c          |  37 +-
 drivers/gpu/drm/i915/gt/intel_engine_cs.c     |   9 +-
 drivers/gpu/drm/i915/gt/intel_ggtt.c          |  72 +--
 drivers/gpu/drm/i915/gt/intel_gtt.c           |   4 +
 drivers/gpu/drm/i915/gt/intel_gtt.h           |  19 +-
 drivers/gpu/drm/i915/gt/intel_ppgtt.c         |  22 +-
 drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c      |  13 +-
 drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h      |   2 +-
 drivers/gpu/drm/i915/i915_debugfs.c           |   3 +-
 drivers/gpu/drm/i915/i915_drv.h               |   1 +
 drivers/gpu/drm/i915/i915_gem.c               |  12 +-
 drivers/gpu/drm/i915/i915_gpu_error.c         |  87 ++--
 drivers/gpu/drm/i915/i915_module.c            |   3 +
 drivers/gpu/drm/i915/i915_request.c           |  12 +-
 drivers/gpu/drm/i915/i915_request.h           |   6 +-
 drivers/gpu/drm/i915/i915_vma.c               | 240 +++++++++-
 drivers/gpu/drm/i915/i915_vma.h               |  33 +-
 drivers/gpu/drm/i915/i915_vma_resource.c      | 417 ++++++++++++++++++
 drivers/gpu/drm/i915/i915_vma_resource.h      | 235 ++++++++++
 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         |   5 +
 drivers/gpu/drm/i915/selftests/i915_gem_gtt.c | 159 ++++---
 drivers/gpu/drm/i915/selftests/mock_gtt.c     |  12 +-
 34 files changed, 1415 insertions(+), 581 deletions(-)
 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

-- 
2.31.1


^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2022-01-06 16:12 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-04 12:51 [PATCH v5 0/6] drm/i915: Asynchronous vma unbinding Thomas Hellström
2022-01-04 12:51 ` [Intel-gfx] " Thomas Hellström
2022-01-04 12:51 ` [PATCH v5 1/6] drm/i915: Initial introduction of vma resources Thomas Hellström
2022-01-04 12:51   ` [Intel-gfx] " Thomas Hellström
2022-01-06 15:22   ` Matthew Auld
2022-01-06 15:22     ` [Intel-gfx] " Matthew Auld
2022-01-04 12:51 ` [PATCH v5 2/6] drm/i915: Use the vma resource as argument for gtt binding / unbinding Thomas Hellström
2022-01-04 12:51   ` [Intel-gfx] " Thomas Hellström
2022-01-06 16:01   ` Matthew Auld
2022-01-06 16:01     ` [Intel-gfx] " Matthew Auld
2022-01-04 12:51 ` [PATCH v5 3/6] drm/i915: Don't pin the object pages during pending vma binds Thomas Hellström
2022-01-04 12:51   ` [Intel-gfx] " Thomas Hellström
2022-01-06 16:08   ` Matthew Auld
2022-01-06 16:08     ` [Intel-gfx] " Matthew Auld
2022-01-04 12:51 ` [PATCH v5 4/6] drm/i915: Use vma resources for async unbinding Thomas Hellström
2022-01-04 12:51   ` [Intel-gfx] " Thomas Hellström
2022-01-05 15:52   ` Matthew Auld
2022-01-05 15:52     ` [Intel-gfx] " Matthew Auld
2022-01-05 16:03     ` Thomas Hellström
2022-01-05 16:03       ` [Intel-gfx] " Thomas Hellström
2022-01-06 12:13   ` Matthew Auld
2022-01-06 12:13     ` [Intel-gfx] " Matthew Auld
2022-01-06 16:06   ` kernel test robot
2022-01-06 16:06     ` kernel test robot
2022-01-04 12:51 ` [PATCH v5 5/6] drm/i915: Asynchronous migration selftest Thomas Hellström
2022-01-04 12:51   ` [Intel-gfx] " Thomas Hellström
2022-01-04 12:51 ` [PATCH v5 6/6] drm/i915: Use struct vma_resource instead of struct vma_snapshot Thomas Hellström
2022-01-04 12:51   ` [Intel-gfx] " Thomas Hellström
2022-01-04 15:56 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915: Asynchronous vma unbinding (rev5) Patchwork
2022-01-04 15:58 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2022-01-04 16:10 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2022-01-04 17:52 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.