dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH v3 00/17] drm/i915/vm_bind: Add VM_BIND functionality
@ 2022-08-27 19:43 Andi Shyti
  2022-08-27 19:43 ` [RFC PATCH v3 01/17] drm/i915: Expose vm_lookup in i915_gem_context.h Andi Shyti
                   ` (17 more replies)
  0 siblings, 18 replies; 41+ messages in thread
From: Andi Shyti @ 2022-08-27 19:43 UTC (permalink / raw)
  To: intel-gfx, dri-devel
  Cc: Andi Shyti, Ramalingam C, Thomas Hellstrom, Matthew Auld,
	Andi Shyti, Niranjana Vishwanathapura

Hi,

just sending the original Niranjana's patch as an RFC. It's v3 as
the v2 has been reviewed offline with Ramalingam.

I'm still keeping most of the structure even though some further
discussion can be done starting from here.

Copy pasting Niranjana's original cover letter message:

DRM_I915_GEM_VM_BIND/UNBIND ioctls allows UMD to bind/unbind GEM
buffer objects (BOs) or sections of a BOs at specified GPU virtual
addresses on a specified address space (VM). Multiple mappings can map
to the same physical pages of an object (aliasing). These mappings (also
referred to as persistent mappings) will be persistent across multiple
GPU submissions (execbuf calls) issued by the UMD, without user having
to provide a list of all required mappings during each submission (as
required by older execbuf mode).

This patch series support VM_BIND version 1, as described by the param
I915_PARAM_VM_BIND_VERSION.

Add new execbuf3 ioctl (I915_GEM_EXECBUFFER3) which only works in
vm_bind mode. The vm_bind mode only works with this new execbuf3 ioctl.
The new execbuf3 ioctl will not have any execlist support and all the
legacy support like relocations etc., are removed.

TODOs:
* Support out fence for VM_UNBIND ioctl.
* Async VM_UNBIND support.
* Share code between execbuf2 and execbuf3 where possible.
* Cleanups and optimizations.

NOTEs:
* It is based on below VM_BIND design+uapi patch series.
  https://lists.freedesktop.org/archives/intel-gfx/2022-July/300760.html

* The IGT RFC series is posted as,
  [RFC 0/5] vm_bind: Add VM_BIND validation support

Niranjana Vishwanathapura (17):
  drm/i915: Expose vm_lookup in i915_gem_context.h
  drm/i915: Mark vm for vm_bind usage at creation
  drm/i915/gem: expose i915_gem_object_max_page_size() in
    i915_gem_object.h
  drm/i915: Implement bind and unbind of object
  drm/i915: Support for VM private BOs
  drm/i915/dmabuf: Deny the dmabuf export for VM private BOs
  drm/i915/vm_bind: Handle persistent vmas
  drm/i915/vm_bind: Add out fence support
  drm/i915: Do not support vm_bind mode in execbuf2
  drm/i915/vm_bind: Implement I915_GEM_EXECBUFFER3 ioctl
  drm/i915: Add i915_vma_is_bind_complete()
  drm/i915/vm_bind: Handle persistent vmas in execbuf3
  drm/i915/vm_bind: userptr dma-resv changes
  drm/i915/vm_bind: Skip vma_lookup for persistent vmas
  drm/i915: Extend getparm for VM_BIND capability
  drm/i915/ioctl: Enable the vm_bind/unbind ioctls
  drm/i915: Enable execbuf3 ioctl for vm_bind

 drivers/gpu/drm/i915/Makefile                 |    2 +
 drivers/gpu/drm/i915/display/intel_fb_pin.c   |    2 +-
 .../drm/i915/display/intel_plane_initial.c    |    2 +-
 drivers/gpu/drm/i915/gem/i915_gem_context.c   |   16 +-
 drivers/gpu/drm/i915/gem/i915_gem_context.h   |    3 +
 drivers/gpu/drm/i915/gem/i915_gem_create.c    |   16 +-
 drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c    |    6 +
 .../gpu/drm/i915/gem/i915_gem_execbuffer.c    |    9 +-
 .../gpu/drm/i915/gem/i915_gem_execbuffer3.c   | 1275 +++++++++++++++++
 drivers/gpu/drm/i915/gem/i915_gem_ioctls.h    |    2 +
 drivers/gpu/drm/i915/gem/i915_gem_object.c    |    1 +
 drivers/gpu/drm/i915/gem/i915_gem_object.h    |    2 +
 .../gpu/drm/i915/gem/i915_gem_object_types.h  |    3 +
 drivers/gpu/drm/i915/gem/i915_gem_userptr.c   |   10 +
 drivers/gpu/drm/i915/gem/i915_gem_vm_bind.h   |   24 +
 .../drm/i915/gem/i915_gem_vm_bind_object.c    |  437 ++++++
 .../gpu/drm/i915/gem/selftests/huge_pages.c   |   16 +-
 .../i915/gem/selftests/i915_gem_client_blt.c  |    2 +-
 .../drm/i915/gem/selftests/i915_gem_context.c |   12 +-
 .../drm/i915/gem/selftests/i915_gem_migrate.c |    2 +-
 .../drm/i915/gem/selftests/i915_gem_mman.c    |    6 +-
 .../drm/i915/gem/selftests/igt_gem_utils.c    |    2 +-
 drivers/gpu/drm/i915/gt/gen6_ppgtt.c          |    2 +-
 drivers/gpu/drm/i915/gt/intel_engine_cs.c     |    2 +-
 drivers/gpu/drm/i915/gt/intel_gt.c            |    2 +-
 drivers/gpu/drm/i915/gt/intel_gtt.c           |   20 +-
 drivers/gpu/drm/i915/gt/intel_gtt.h           |   27 +
 drivers/gpu/drm/i915/gt/intel_lrc.c           |    4 +-
 drivers/gpu/drm/i915/gt/intel_renderstate.c   |    2 +-
 drivers/gpu/drm/i915/gt/intel_ring.c          |    2 +-
 .../gpu/drm/i915/gt/intel_ring_submission.c   |    4 +-
 drivers/gpu/drm/i915/gt/intel_timeline.c      |    2 +-
 drivers/gpu/drm/i915/gt/mock_engine.c         |    2 +-
 drivers/gpu/drm/i915/gt/selftest_engine_cs.c  |    4 +-
 drivers/gpu/drm/i915/gt/selftest_execlists.c  |   16 +-
 drivers/gpu/drm/i915/gt/selftest_hangcheck.c  |    6 +-
 drivers/gpu/drm/i915/gt/selftest_lrc.c        |    2 +-
 .../drm/i915/gt/selftest_ring_submission.c    |    2 +-
 drivers/gpu/drm/i915/gt/selftest_rps.c        |    2 +-
 .../gpu/drm/i915/gt/selftest_workarounds.c    |    4 +-
 drivers/gpu/drm/i915/gt/uc/intel_guc.c        |    2 +-
 drivers/gpu/drm/i915/i915_driver.c            |    4 +
 drivers/gpu/drm/i915/i915_gem.c               |    2 +-
 drivers/gpu/drm/i915/i915_gem_gtt.c           |   38 +
 drivers/gpu/drm/i915/i915_gem_gtt.h           |    3 +
 drivers/gpu/drm/i915/i915_getparam.c          |    3 +
 drivers/gpu/drm/i915/i915_perf.c              |    2 +-
 drivers/gpu/drm/i915/i915_vma.c               |  114 +-
 drivers/gpu/drm/i915/i915_vma.h               |   62 +-
 drivers/gpu/drm/i915/i915_vma_types.h         |   49 +
 drivers/gpu/drm/i915/selftests/i915_gem_gtt.c |   44 +-
 drivers/gpu/drm/i915/selftests/i915_request.c |    4 +-
 drivers/gpu/drm/i915/selftests/i915_vma.c     |    2 +-
 drivers/gpu/drm/i915/selftests/igt_spinner.c  |    2 +-
 .../drm/i915/selftests/intel_memory_region.c  |    2 +-
 include/uapi/drm/i915_drm.h                   |  255 +++-
 56 files changed, 2424 insertions(+), 119 deletions(-)
 create mode 100644 drivers/gpu/drm/i915/gem/i915_gem_execbuffer3.c
 create mode 100644 drivers/gpu/drm/i915/gem/i915_gem_vm_bind.h
 create mode 100644 drivers/gpu/drm/i915/gem/i915_gem_vm_bind_object.c

-- 
2.34.1


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

end of thread, other threads:[~2022-09-21  7:22 UTC | newest]

Thread overview: 41+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-27 19:43 [RFC PATCH v3 00/17] drm/i915/vm_bind: Add VM_BIND functionality Andi Shyti
2022-08-27 19:43 ` [RFC PATCH v3 01/17] drm/i915: Expose vm_lookup in i915_gem_context.h Andi Shyti
2022-08-27 19:43 ` [RFC PATCH v3 02/17] drm/i915: Mark vm for vm_bind usage at creation Andi Shyti
2022-08-27 19:43 ` [RFC PATCH v3 03/17] drm/i915/gem: expose i915_gem_object_max_page_size() in i915_gem_object.h Andi Shyti
2022-08-27 19:43 ` [RFC PATCH v3 04/17] drm/i915: Implement bind and unbind of object Andi Shyti
2022-08-30 17:37   ` Matthew Auld
2022-08-31  6:10     ` Niranjana Vishwanathapura
2022-08-30 18:19   ` Matthew Auld
2022-08-31  7:28     ` [Intel-gfx] " Tvrtko Ursulin
2022-09-01  5:18     ` Niranjana Vishwanathapura
2022-09-01  5:31   ` Dave Airlie
2022-09-01 20:05     ` Niranjana Vishwanathapura
2022-09-12 13:11   ` Jani Nikula
2022-09-21  7:19     ` Niranjana Vishwanathapura
2022-08-27 19:43 ` [RFC PATCH v3 05/17] drm/i915: Support for VM private BOs Andi Shyti
2022-08-31  6:13   ` Niranjana Vishwanathapura
2022-08-27 19:43 ` [RFC PATCH v3 06/17] drm/i915/dmabuf: Deny the dmabuf export " Andi Shyti
2022-08-27 19:43 ` [RFC PATCH v3 07/17] drm/i915/vm_bind: Handle persistent vmas Andi Shyti
2022-08-31  6:16   ` Niranjana Vishwanathapura
2022-09-12 13:16   ` [Intel-gfx] " Jani Nikula
2022-09-21  7:21     ` Niranjana Vishwanathapura
2022-08-27 19:43 ` [RFC PATCH v3 08/17] drm/i915/vm_bind: Add out fence support Andi Shyti
2022-08-31  6:22   ` Niranjana Vishwanathapura
2022-08-27 19:43 ` [RFC PATCH v3 09/17] drm/i915: Do not support vm_bind mode in execbuf2 Andi Shyti
2022-08-31  5:45   ` Niranjana Vishwanathapura
2022-08-27 19:43 ` [RFC PATCH v3 10/17] drm/i915/vm_bind: Implement I915_GEM_EXECBUFFER3 ioctl Andi Shyti
2022-08-31  7:38   ` [Intel-gfx] " Tvrtko Ursulin
2022-09-01  5:09     ` Niranjana Vishwanathapura
2022-09-01  7:58       ` Tvrtko Ursulin
2022-09-02  5:41         ` Niranjana Vishwanathapura
2022-09-05 15:08           ` Tvrtko Ursulin
2022-09-21  7:18             ` Niranjana Vishwanathapura
2022-08-27 19:43 ` [RFC PATCH v3 11/17] drm/i915: Add i915_vma_is_bind_complete() Andi Shyti
2022-08-27 19:43 ` [RFC PATCH v3 12/17] drm/i915/vm_bind: Handle persistent vmas in execbuf3 Andi Shyti
2022-08-27 19:43 ` [RFC PATCH v3 13/17] drm/i915/vm_bind: userptr dma-resv changes Andi Shyti
2022-08-31  6:45   ` Niranjana Vishwanathapura
2022-08-27 19:44 ` [RFC PATCH v3 14/17] drm/i915/vm_bind: Skip vma_lookup for persistent vmas Andi Shyti
2022-08-27 19:44 ` [RFC PATCH v3 15/17] drm/i915: Extend getparm for VM_BIND capability Andi Shyti
2022-08-27 19:44 ` [RFC PATCH v3 16/17] drm/i915/ioctl: Enable the vm_bind/unbind ioctls Andi Shyti
2022-08-27 19:44 ` [RFC PATCH v3 17/17] drm/i915: Enable execbuf3 ioctl for vm_bind Andi Shyti
2022-08-31  7:33 ` [Intel-gfx] [RFC PATCH v3 00/17] drm/i915/vm_bind: Add VM_BIND functionality Tvrtko Ursulin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).