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 16/16] drm/i915/vm_bind: Add uapi for user to enable vm_bind_mode Date: Tue, 27 Sep 2022 23:19:18 -0700 [thread overview] Message-ID: <20220928061918.6340-17-niranjana.vishwanathapura@intel.com> (raw) In-Reply-To: <20220928061918.6340-1-niranjana.vishwanathapura@intel.com> Add getparam support for VM_BIND capability version. Add VM creation time flag to enable vm_bind_mode for the VM. Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com> Signed-off-by: Andi Shyti <andi.shyti@linux.intel.com> --- drivers/gpu/drm/i915/gem/i915_gem_context.c | 9 +++++++- drivers/gpu/drm/i915/i915_drv.h | 2 ++ drivers/gpu/drm/i915/i915_getparam.c | 3 +++ include/uapi/drm/i915_drm.h | 24 ++++++++++++++++++++- 4 files changed, 36 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.c b/drivers/gpu/drm/i915/gem/i915_gem_context.c index f4e648ec01ed..c20bd6e8aaf8 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_context.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_context.c @@ -1808,9 +1808,13 @@ int i915_gem_vm_create_ioctl(struct drm_device *dev, void *data, if (!HAS_FULL_PPGTT(i915)) return -ENODEV; - if (args->flags) + if (args->flags & I915_VM_CREATE_FLAGS_UNKNOWN) return -EINVAL; + if ((args->flags & I915_VM_CREATE_FLAGS_USE_VM_BIND) && + !HAS_VM_BIND(i915)) + return -EOPNOTSUPP; + ppgtt = i915_ppgtt_create(to_gt(i915), 0); if (IS_ERR(ppgtt)) return PTR_ERR(ppgtt); @@ -1828,6 +1832,9 @@ int i915_gem_vm_create_ioctl(struct drm_device *dev, void *data, if (err) goto err_put; + if (args->flags & I915_VM_CREATE_FLAGS_USE_VM_BIND) + ppgtt->vm.vm_bind_mode = true; + GEM_BUG_ON(id == 0); /* reserved for invalid/unassigned ppgtt */ args->vm_id = id; return 0; diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 84a2f6b16f57..e77393d74c6f 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -974,6 +974,8 @@ IS_SUBPLATFORM(const struct drm_i915_private *i915, #define HAS_ONE_EU_PER_FUSE_BIT(i915) (INTEL_INFO(i915)->has_one_eu_per_fuse_bit) +#define HAS_VM_BIND(dev_priv) (GRAPHICS_VER(dev_priv) >= 12) + /* intel_device_info.c */ static inline struct intel_device_info * mkwrite_device_info(struct drm_i915_private *dev_priv) diff --git a/drivers/gpu/drm/i915/i915_getparam.c b/drivers/gpu/drm/i915/i915_getparam.c index 342c8ca6414e..f45b3c684bcf 100644 --- a/drivers/gpu/drm/i915/i915_getparam.c +++ b/drivers/gpu/drm/i915/i915_getparam.c @@ -175,6 +175,9 @@ int i915_getparam_ioctl(struct drm_device *dev, void *data, case I915_PARAM_PERF_REVISION: value = i915_perf_ioctl_version(); break; + case I915_PARAM_VM_BIND_VERSION: + value = HAS_VM_BIND(i915); + break; default: DRM_DEBUG("Unknown parameter %d\n", param->param); return -EINVAL; diff --git a/include/uapi/drm/i915_drm.h b/include/uapi/drm/i915_drm.h index f3a5b198b3e7..9a033acc254b 100644 --- a/include/uapi/drm/i915_drm.h +++ b/include/uapi/drm/i915_drm.h @@ -755,6 +755,27 @@ typedef struct drm_i915_irq_wait { /* Query if the kernel supports the I915_USERPTR_PROBE flag. */ #define I915_PARAM_HAS_USERPTR_PROBE 56 +/* + * VM_BIND feature version supported. + * + * The following versions of VM_BIND have been defined: + * + * 0: No VM_BIND support. + * + * 1: In VM_UNBIND calls, the UMD must specify the exact mappings created + * previously with VM_BIND, the ioctl will not support unbinding multiple + * mappings or splitting them. Similarly, VM_BIND calls will not replace + * any existing mappings. + * + * 2: The restrictions on unbinding partial or multiple mappings is + * lifted, Similarly, binding will replace any mappings in the given range. + * + * See struct drm_i915_gem_vm_bind and struct drm_i915_gem_vm_unbind. + * + * vm_bind versions are backward compatible. + */ +#define I915_PARAM_VM_BIND_VERSION 57 + /* Must be kept compact -- no holes and well documented */ /** @@ -2622,7 +2643,8 @@ struct drm_i915_gem_vm_control { /** @extensions: Zero-terminated chain of extensions. */ __u64 extensions; - /** @flags: reserved for future usage, currently MBZ */ +#define I915_VM_CREATE_FLAGS_USE_VM_BIND (1u << 0) +#define I915_VM_CREATE_FLAGS_UNKNOWN (-(I915_VM_CREATE_FLAGS_USE_VM_BIND << 1)) __u32 flags; /** @vm_id: Id of the VM created or to be destroyed */ -- 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 16/16] drm/i915/vm_bind: Add uapi for user to enable vm_bind_mode Date: Tue, 27 Sep 2022 23:19:18 -0700 [thread overview] Message-ID: <20220928061918.6340-17-niranjana.vishwanathapura@intel.com> (raw) In-Reply-To: <20220928061918.6340-1-niranjana.vishwanathapura@intel.com> Add getparam support for VM_BIND capability version. Add VM creation time flag to enable vm_bind_mode for the VM. Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com> Signed-off-by: Andi Shyti <andi.shyti@linux.intel.com> --- drivers/gpu/drm/i915/gem/i915_gem_context.c | 9 +++++++- drivers/gpu/drm/i915/i915_drv.h | 2 ++ drivers/gpu/drm/i915/i915_getparam.c | 3 +++ include/uapi/drm/i915_drm.h | 24 ++++++++++++++++++++- 4 files changed, 36 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.c b/drivers/gpu/drm/i915/gem/i915_gem_context.c index f4e648ec01ed..c20bd6e8aaf8 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_context.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_context.c @@ -1808,9 +1808,13 @@ int i915_gem_vm_create_ioctl(struct drm_device *dev, void *data, if (!HAS_FULL_PPGTT(i915)) return -ENODEV; - if (args->flags) + if (args->flags & I915_VM_CREATE_FLAGS_UNKNOWN) return -EINVAL; + if ((args->flags & I915_VM_CREATE_FLAGS_USE_VM_BIND) && + !HAS_VM_BIND(i915)) + return -EOPNOTSUPP; + ppgtt = i915_ppgtt_create(to_gt(i915), 0); if (IS_ERR(ppgtt)) return PTR_ERR(ppgtt); @@ -1828,6 +1832,9 @@ int i915_gem_vm_create_ioctl(struct drm_device *dev, void *data, if (err) goto err_put; + if (args->flags & I915_VM_CREATE_FLAGS_USE_VM_BIND) + ppgtt->vm.vm_bind_mode = true; + GEM_BUG_ON(id == 0); /* reserved for invalid/unassigned ppgtt */ args->vm_id = id; return 0; diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 84a2f6b16f57..e77393d74c6f 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -974,6 +974,8 @@ IS_SUBPLATFORM(const struct drm_i915_private *i915, #define HAS_ONE_EU_PER_FUSE_BIT(i915) (INTEL_INFO(i915)->has_one_eu_per_fuse_bit) +#define HAS_VM_BIND(dev_priv) (GRAPHICS_VER(dev_priv) >= 12) + /* intel_device_info.c */ static inline struct intel_device_info * mkwrite_device_info(struct drm_i915_private *dev_priv) diff --git a/drivers/gpu/drm/i915/i915_getparam.c b/drivers/gpu/drm/i915/i915_getparam.c index 342c8ca6414e..f45b3c684bcf 100644 --- a/drivers/gpu/drm/i915/i915_getparam.c +++ b/drivers/gpu/drm/i915/i915_getparam.c @@ -175,6 +175,9 @@ int i915_getparam_ioctl(struct drm_device *dev, void *data, case I915_PARAM_PERF_REVISION: value = i915_perf_ioctl_version(); break; + case I915_PARAM_VM_BIND_VERSION: + value = HAS_VM_BIND(i915); + break; default: DRM_DEBUG("Unknown parameter %d\n", param->param); return -EINVAL; diff --git a/include/uapi/drm/i915_drm.h b/include/uapi/drm/i915_drm.h index f3a5b198b3e7..9a033acc254b 100644 --- a/include/uapi/drm/i915_drm.h +++ b/include/uapi/drm/i915_drm.h @@ -755,6 +755,27 @@ typedef struct drm_i915_irq_wait { /* Query if the kernel supports the I915_USERPTR_PROBE flag. */ #define I915_PARAM_HAS_USERPTR_PROBE 56 +/* + * VM_BIND feature version supported. + * + * The following versions of VM_BIND have been defined: + * + * 0: No VM_BIND support. + * + * 1: In VM_UNBIND calls, the UMD must specify the exact mappings created + * previously with VM_BIND, the ioctl will not support unbinding multiple + * mappings or splitting them. Similarly, VM_BIND calls will not replace + * any existing mappings. + * + * 2: The restrictions on unbinding partial or multiple mappings is + * lifted, Similarly, binding will replace any mappings in the given range. + * + * See struct drm_i915_gem_vm_bind and struct drm_i915_gem_vm_unbind. + * + * vm_bind versions are backward compatible. + */ +#define I915_PARAM_VM_BIND_VERSION 57 + /* Must be kept compact -- no holes and well documented */ /** @@ -2622,7 +2643,8 @@ struct drm_i915_gem_vm_control { /** @extensions: Zero-terminated chain of extensions. */ __u64 extensions; - /** @flags: reserved for future usage, currently MBZ */ +#define I915_VM_CREATE_FLAGS_USE_VM_BIND (1u << 0) +#define I915_VM_CREATE_FLAGS_UNKNOWN (-(I915_VM_CREATE_FLAGS_USE_VM_BIND << 1)) __u32 flags; /** @vm_id: Id of the VM created or to be destroyed */ -- 2.21.0.rc0.32.g243a4c7e27
next prev parent reply other threads:[~2022-09-28 6:20 UTC|newest] Thread overview: 108+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-09-28 6:19 [PATCH 00/16] drm/i915/vm_bind: Add VM_BIND functionality Niranjana Vishwanathapura 2022-09-28 6:19 ` [Intel-gfx] " 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 ` Niranjana Vishwanathapura [this message] 2022-09-28 6:19 ` [Intel-gfx] [PATCH 16/16] drm/i915/vm_bind: Add uapi for user to enable vm_bind_mode 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-17-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.