From: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com> To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Cc: matthew.brost@intel.com, paulo.r.zanoni@intel.com, tvrtko.ursulin@intel.com, jani.nikula@intel.com, lionel.g.landwerlin@intel.com, thomas.hellstrom@intel.com, matthew.auld@intel.com, jason@jlekstrand.net, andi.shyti@linux.intel.com, daniel.vetter@intel.com, christian.koenig@amd.com Subject: [PATCH 00/16] drm/i915/vm_bind: Add VM_BIND functionality Date: Tue, 27 Sep 2022 23:19:02 -0700 [thread overview] Message-ID: <20220928061918.6340-1-niranjana.vishwanathapura@intel.com> (raw) 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. * Optimizations. NOTEs: * It is based on below VM_BIND design+uapi rfc. Documentation/gpu/rfc/i915_vm_bind.rst * The IGT RFC series is posted as, [PATCH i-g-t 0/8] vm_bind: Add VM_BIND validation support Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com> Niranjana Vishwanathapura (16): drm/i915/vm_bind: Expose vm lookup function drm/i915/vm_bind: Add __i915_sw_fence_await_reservation() drm/i915/vm_bind: Expose i915_gem_object_max_page_size() drm/i915/vm_bind: Add support to create persistent vma drm/i915/vm_bind: Implement bind and unbind of object drm/i915/vm_bind: Support for VM private BOs drm/i915/vm_bind: Add support to handle object evictions drm/i915/vm_bind: Support persistent vma activeness tracking drm/i915/vm_bind: Add out fence support drm/i915/vm_bind: Abstract out common execbuf functions drm/i915/vm_bind: Use common execbuf functions in execbuf path drm/i915/vm_bind: Implement I915_GEM_EXECBUFFER3 ioctl drm/i915/vm_bind: Update i915_vma_verify_bind_complete() drm/i915/vm_bind: Handle persistent vmas in execbuf3 drm/i915/vm_bind: userptr dma-resv changes drm/i915/vm_bind: Add uapi for user to enable vm_bind_mode drivers/gpu/drm/i915/Makefile | 3 + drivers/gpu/drm/i915/gem/i915_gem_context.c | 20 +- drivers/gpu/drm/i915/gem/i915_gem_context.h | 3 + drivers/gpu/drm/i915/gem/i915_gem_create.c | 60 +- drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c | 6 + .../gpu/drm/i915/gem/i915_gem_execbuffer.c | 521 +---------- .../gpu/drm/i915/gem/i915_gem_execbuffer3.c | 856 ++++++++++++++++++ .../drm/i915/gem/i915_gem_execbuffer_common.c | 664 ++++++++++++++ .../drm/i915/gem/i915_gem_execbuffer_common.h | 74 ++ drivers/gpu/drm/i915/gem/i915_gem_ioctls.h | 2 + drivers/gpu/drm/i915/gem/i915_gem_object.c | 3 + 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_ttm.c | 3 + drivers/gpu/drm/i915/gem/i915_gem_userptr.c | 17 + drivers/gpu/drm/i915/gem/i915_gem_vm_bind.h | 30 + .../drm/i915/gem/i915_gem_vm_bind_object.c | 418 +++++++++ drivers/gpu/drm/i915/gt/intel_gtt.c | 18 + drivers/gpu/drm/i915/gt/intel_gtt.h | 27 + drivers/gpu/drm/i915/i915_driver.c | 4 + drivers/gpu/drm/i915/i915_drv.h | 2 + drivers/gpu/drm/i915/i915_gem_gtt.c | 39 + drivers/gpu/drm/i915/i915_gem_gtt.h | 3 + drivers/gpu/drm/i915/i915_getparam.c | 3 + drivers/gpu/drm/i915/i915_sw_fence.c | 28 +- drivers/gpu/drm/i915/i915_sw_fence.h | 23 +- drivers/gpu/drm/i915/i915_vma.c | 111 ++- drivers/gpu/drm/i915/i915_vma.h | 52 +- drivers/gpu/drm/i915/i915_vma_types.h | 42 + include/uapi/drm/i915_drm.h | 282 +++++- 30 files changed, 2799 insertions(+), 520 deletions(-) create mode 100644 drivers/gpu/drm/i915/gem/i915_gem_execbuffer3.c create mode 100644 drivers/gpu/drm/i915/gem/i915_gem_execbuffer_common.c create mode 100644 drivers/gpu/drm/i915/gem/i915_gem_execbuffer_common.h 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.21.0.rc0.32.g243a4c7e27
WARNING: multiple messages have this Message-ID (diff)
From: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com> To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Cc: paulo.r.zanoni@intel.com, jani.nikula@intel.com, thomas.hellstrom@intel.com, matthew.auld@intel.com, daniel.vetter@intel.com, christian.koenig@amd.com Subject: [Intel-gfx] [PATCH 00/16] drm/i915/vm_bind: Add VM_BIND functionality Date: Tue, 27 Sep 2022 23:19:02 -0700 [thread overview] Message-ID: <20220928061918.6340-1-niranjana.vishwanathapura@intel.com> (raw) 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. * Optimizations. NOTEs: * It is based on below VM_BIND design+uapi rfc. Documentation/gpu/rfc/i915_vm_bind.rst * The IGT RFC series is posted as, [PATCH i-g-t 0/8] vm_bind: Add VM_BIND validation support Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com> Niranjana Vishwanathapura (16): drm/i915/vm_bind: Expose vm lookup function drm/i915/vm_bind: Add __i915_sw_fence_await_reservation() drm/i915/vm_bind: Expose i915_gem_object_max_page_size() drm/i915/vm_bind: Add support to create persistent vma drm/i915/vm_bind: Implement bind and unbind of object drm/i915/vm_bind: Support for VM private BOs drm/i915/vm_bind: Add support to handle object evictions drm/i915/vm_bind: Support persistent vma activeness tracking drm/i915/vm_bind: Add out fence support drm/i915/vm_bind: Abstract out common execbuf functions drm/i915/vm_bind: Use common execbuf functions in execbuf path drm/i915/vm_bind: Implement I915_GEM_EXECBUFFER3 ioctl drm/i915/vm_bind: Update i915_vma_verify_bind_complete() drm/i915/vm_bind: Handle persistent vmas in execbuf3 drm/i915/vm_bind: userptr dma-resv changes drm/i915/vm_bind: Add uapi for user to enable vm_bind_mode drivers/gpu/drm/i915/Makefile | 3 + drivers/gpu/drm/i915/gem/i915_gem_context.c | 20 +- drivers/gpu/drm/i915/gem/i915_gem_context.h | 3 + drivers/gpu/drm/i915/gem/i915_gem_create.c | 60 +- drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c | 6 + .../gpu/drm/i915/gem/i915_gem_execbuffer.c | 521 +---------- .../gpu/drm/i915/gem/i915_gem_execbuffer3.c | 856 ++++++++++++++++++ .../drm/i915/gem/i915_gem_execbuffer_common.c | 664 ++++++++++++++ .../drm/i915/gem/i915_gem_execbuffer_common.h | 74 ++ drivers/gpu/drm/i915/gem/i915_gem_ioctls.h | 2 + drivers/gpu/drm/i915/gem/i915_gem_object.c | 3 + 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_ttm.c | 3 + drivers/gpu/drm/i915/gem/i915_gem_userptr.c | 17 + drivers/gpu/drm/i915/gem/i915_gem_vm_bind.h | 30 + .../drm/i915/gem/i915_gem_vm_bind_object.c | 418 +++++++++ drivers/gpu/drm/i915/gt/intel_gtt.c | 18 + drivers/gpu/drm/i915/gt/intel_gtt.h | 27 + drivers/gpu/drm/i915/i915_driver.c | 4 + drivers/gpu/drm/i915/i915_drv.h | 2 + drivers/gpu/drm/i915/i915_gem_gtt.c | 39 + drivers/gpu/drm/i915/i915_gem_gtt.h | 3 + drivers/gpu/drm/i915/i915_getparam.c | 3 + drivers/gpu/drm/i915/i915_sw_fence.c | 28 +- drivers/gpu/drm/i915/i915_sw_fence.h | 23 +- drivers/gpu/drm/i915/i915_vma.c | 111 ++- drivers/gpu/drm/i915/i915_vma.h | 52 +- drivers/gpu/drm/i915/i915_vma_types.h | 42 + include/uapi/drm/i915_drm.h | 282 +++++- 30 files changed, 2799 insertions(+), 520 deletions(-) create mode 100644 drivers/gpu/drm/i915/gem/i915_gem_execbuffer3.c create mode 100644 drivers/gpu/drm/i915/gem/i915_gem_execbuffer_common.c create mode 100644 drivers/gpu/drm/i915/gem/i915_gem_execbuffer_common.h 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.21.0.rc0.32.g243a4c7e27
next reply other threads:[~2022-09-28 6:19 UTC|newest] Thread overview: 108+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-09-28 6:19 Niranjana Vishwanathapura [this message] 2022-09-28 6:19 ` [Intel-gfx] [PATCH 00/16] drm/i915/vm_bind: Add VM_BIND functionality Niranjana Vishwanathapura 2022-09-28 6:19 ` [PATCH 01/16] drm/i915/vm_bind: Expose vm lookup function Niranjana Vishwanathapura 2022-09-28 6:19 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-09-28 17:28 ` Matthew Auld 2022-09-28 17:28 ` [Intel-gfx] " Matthew Auld 2022-09-28 6:19 ` [PATCH 02/16] drm/i915/vm_bind: Add __i915_sw_fence_await_reservation() Niranjana Vishwanathapura 2022-09-28 6:19 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-09-28 17:39 ` Matthew Auld 2022-09-28 17:39 ` [Intel-gfx] " Matthew Auld 2022-09-29 5:20 ` Niranjana Vishwanathapura 2022-09-29 5:20 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-09-28 6:19 ` [PATCH 03/16] drm/i915/vm_bind: Expose i915_gem_object_max_page_size() Niranjana Vishwanathapura 2022-09-28 6:19 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-09-28 17:40 ` Matthew Auld 2022-09-28 17:40 ` [Intel-gfx] " Matthew Auld 2022-09-29 5:20 ` Niranjana Vishwanathapura 2022-09-29 5:20 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-09-28 6:19 ` [PATCH 04/16] drm/i915/vm_bind: Add support to create persistent vma Niranjana Vishwanathapura 2022-09-28 6:19 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-09-28 7:38 ` Tvrtko Ursulin 2022-09-28 17:05 ` Niranjana Vishwanathapura 2022-09-28 14:44 ` Andi Shyti 2022-09-28 14:44 ` [Intel-gfx] " Andi Shyti 2022-09-28 17:07 ` Niranjana Vishwanathapura 2022-09-28 17:07 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-09-29 17:04 ` Matthew Auld 2022-09-29 17:04 ` [Intel-gfx] " Matthew Auld 2022-09-28 6:19 ` [PATCH 05/16] drm/i915/vm_bind: Implement bind and unbind of object Niranjana Vishwanathapura 2022-09-28 6:19 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-09-28 9:43 ` kernel test robot 2022-09-28 9:43 ` kernel test robot 2022-09-28 17:52 ` Matthew Auld 2022-09-28 17:52 ` Matthew Auld 2022-09-29 5:24 ` Niranjana Vishwanathapura 2022-09-29 5:24 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-09-29 9:03 ` Matthew Auld 2022-09-29 9:03 ` [Intel-gfx] " Matthew Auld 2022-09-29 10:51 ` Matthew Auld 2022-09-29 10:51 ` [Intel-gfx] " Matthew Auld 2022-09-29 14:24 ` Niranjana Vishwanathapura 2022-09-29 14:24 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-09-28 20:06 ` Welty, Brian 2022-09-29 5:25 ` Niranjana Vishwanathapura 2022-09-29 10:49 ` Matthew Auld 2022-09-29 10:49 ` [Intel-gfx] " Matthew Auld 2022-09-29 16:38 ` Niranjana Vishwanathapura 2022-09-29 16:38 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-09-29 17:28 ` Matthew Auld 2022-09-29 17:28 ` Matthew Auld 2022-09-29 17:49 ` Niranjana Vishwanathapura 2022-09-29 17:49 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-09-28 6:19 ` [PATCH 06/16] drm/i915/vm_bind: Support for VM private BOs Niranjana Vishwanathapura 2022-09-28 6:19 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-09-28 17:54 ` Matthew Auld 2022-09-28 17:54 ` [Intel-gfx] " Matthew Auld 2022-09-29 14:28 ` Niranjana Vishwanathapura 2022-09-29 14:28 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-09-28 6:19 ` [Intel-gfx] [PATCH 07/16] drm/i915/vm_bind: Add support to handle object evictions Niranjana Vishwanathapura 2022-09-28 6:19 ` Niranjana Vishwanathapura 2022-09-29 17:13 ` Matthew Auld 2022-09-29 17:13 ` [Intel-gfx] " Matthew Auld 2022-09-28 6:19 ` [Intel-gfx] [PATCH 08/16] drm/i915/vm_bind: Support persistent vma activeness tracking Niranjana Vishwanathapura 2022-09-28 6:19 ` Niranjana Vishwanathapura 2022-09-30 12:00 ` Andi Shyti 2022-09-30 12:00 ` [Intel-gfx] " Andi Shyti 2022-09-28 6:19 ` [Intel-gfx] [PATCH 09/16] drm/i915/vm_bind: Add out fence support Niranjana Vishwanathapura 2022-09-28 6:19 ` Niranjana Vishwanathapura 2022-09-28 6:19 ` [PATCH 10/16] drm/i915/vm_bind: Abstract out common execbuf functions Niranjana Vishwanathapura 2022-09-28 6:19 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-09-30 10:45 ` Matthew Auld 2022-09-30 10:45 ` [Intel-gfx] " Matthew Auld 2022-09-30 16:26 ` Niranjana Vishwanathapura 2022-09-30 16:26 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-09-28 6:19 ` [PATCH 11/16] drm/i915/vm_bind: Use common execbuf functions in execbuf path Niranjana Vishwanathapura 2022-09-28 6:19 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-09-30 10:47 ` Matthew Auld 2022-09-30 10:47 ` [Intel-gfx] " Matthew Auld 2022-09-28 6:19 ` [PATCH 12/16] drm/i915/vm_bind: Implement I915_GEM_EXECBUFFER3 ioctl Niranjana Vishwanathapura 2022-09-28 6:19 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-09-29 15:00 ` Matthew Auld 2022-09-29 15:00 ` [Intel-gfx] " Matthew Auld 2022-09-29 16:02 ` Niranjana Vishwanathapura 2022-09-29 16:02 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-10-03 21:12 ` Niranjana Vishwanathapura 2022-09-28 6:19 ` [Intel-gfx] [PATCH 13/16] drm/i915/vm_bind: Update i915_vma_verify_bind_complete() Niranjana Vishwanathapura 2022-09-28 6:19 ` Niranjana Vishwanathapura 2022-09-28 6:19 ` [PATCH 14/16] drm/i915/vm_bind: Handle persistent vmas in execbuf3 Niranjana Vishwanathapura 2022-09-28 6:19 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-09-30 9:47 ` Matthew Auld 2022-09-30 9:47 ` [Intel-gfx] " Matthew Auld 2022-10-02 6:28 ` Niranjana Vishwanathapura 2022-10-02 6:28 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-10-03 8:36 ` Matthew Auld 2022-10-03 8:36 ` [Intel-gfx] " Matthew Auld 2022-10-05 5:38 ` Niranjana Vishwanathapura 2022-10-05 5:38 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-09-28 6:19 ` [Intel-gfx] [PATCH 15/16] drm/i915/vm_bind: userptr dma-resv changes Niranjana Vishwanathapura 2022-09-28 6:19 ` Niranjana Vishwanathapura 2022-09-28 6:19 ` [PATCH 16/16] drm/i915/vm_bind: Add uapi for user to enable vm_bind_mode Niranjana Vishwanathapura 2022-09-28 6:19 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-09-30 10:01 ` Matthew Auld 2022-09-30 10:01 ` [Intel-gfx] " Matthew Auld 2022-09-30 16:13 ` Niranjana Vishwanathapura 2022-09-30 16:13 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-09-28 13:34 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/vm_bind: Add VM_BIND functionality (rev4) Patchwork 2022-09-28 13:34 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork 2022-09-28 13:57 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20220928061918.6340-1-niranjana.vishwanathapura@intel.com \ --to=niranjana.vishwanathapura@intel.com \ --cc=andi.shyti@linux.intel.com \ --cc=christian.koenig@amd.com \ --cc=daniel.vetter@intel.com \ --cc=dri-devel@lists.freedesktop.org \ --cc=intel-gfx@lists.freedesktop.org \ --cc=jani.nikula@intel.com \ --cc=jason@jlekstrand.net \ --cc=lionel.g.landwerlin@intel.com \ --cc=matthew.auld@intel.com \ --cc=matthew.brost@intel.com \ --cc=paulo.r.zanoni@intel.com \ --cc=thomas.hellstrom@intel.com \ --cc=tvrtko.ursulin@intel.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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.