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, lionel.g.landwerlin@intel.com, thomas.hellstrom@intel.com, matthew.auld@intel.com, jason@jlekstrand.net, daniel.vetter@intel.com, christian.koenig@amd.com Subject: [RFC 09/10] drm/i915/vm_bind: Skip vma_lookup for persistent vmas Date: Fri, 1 Jul 2022 15:50:54 -0700 [thread overview] Message-ID: <20220701225055.8204-10-niranjana.vishwanathapura@intel.com> (raw) In-Reply-To: <20220701225055.8204-1-niranjana.vishwanathapura@intel.com> vma_lookup is tied to segment of the object instead of section of VA space. Hence, it do not support aliasing (ie., multiple bindings to the same section of the object). Skip vma_lookup for persistent vmas as it supports aliasing. Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com> --- drivers/gpu/drm/i915/i915_vma.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c index 6adb013579be..9aa38b772b5b 100644 --- a/drivers/gpu/drm/i915/i915_vma.c +++ b/drivers/gpu/drm/i915/i915_vma.c @@ -197,6 +197,10 @@ vma_create(struct drm_i915_gem_object *obj, __set_bit(I915_VMA_GGTT_BIT, __i915_vma_flags(vma)); } + if (!i915_vma_is_ggtt(vma) && + (view && view->type == I915_GGTT_VIEW_PARTIAL)) + goto skip_rb_insert; + rb = NULL; p = &obj->vma.tree.rb_node; while (*p) { @@ -221,6 +225,7 @@ vma_create(struct drm_i915_gem_object *obj, rb_link_node(&vma->obj_node, rb, p); rb_insert_color(&vma->obj_node, &obj->vma.tree); +skip_rb_insert: if (i915_vma_is_ggtt(vma)) /* * We put the GGTT vma at the start of the vma-list, followed @@ -292,13 +297,16 @@ i915_vma_instance(struct drm_i915_gem_object *obj, struct i915_address_space *vm, const struct i915_ggtt_view *view) { - struct i915_vma *vma; + struct i915_vma *vma = NULL; GEM_BUG_ON(!kref_read(&vm->ref)); - spin_lock(&obj->vma.lock); - vma = i915_vma_lookup(obj, vm, view); - spin_unlock(&obj->vma.lock); + if (i915_is_ggtt(vm) || !view || + view->type != I915_GGTT_VIEW_PARTIAL) { + spin_lock(&obj->vma.lock); + vma = i915_vma_lookup(obj, vm, view); + spin_unlock(&obj->vma.lock); + } /* vma_create() will resolve the race if another creates the vma */ if (unlikely(!vma)) @@ -1670,7 +1678,8 @@ static void release_references(struct i915_vma *vma, bool vm_ddestroy) spin_lock(&obj->vma.lock); list_del(&vma->obj_link); - if (!RB_EMPTY_NODE(&vma->obj_node)) + if (!i915_vma_is_persistent(vma) && + !RB_EMPTY_NODE(&vma->obj_node)) rb_erase(&vma->obj_node, &obj->vma.tree); spin_unlock(&obj->vma.lock); -- 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, thomas.hellstrom@intel.com, matthew.auld@intel.com, daniel.vetter@intel.com, christian.koenig@amd.com Subject: [Intel-gfx] [RFC 09/10] drm/i915/vm_bind: Skip vma_lookup for persistent vmas Date: Fri, 1 Jul 2022 15:50:54 -0700 [thread overview] Message-ID: <20220701225055.8204-10-niranjana.vishwanathapura@intel.com> (raw) In-Reply-To: <20220701225055.8204-1-niranjana.vishwanathapura@intel.com> vma_lookup is tied to segment of the object instead of section of VA space. Hence, it do not support aliasing (ie., multiple bindings to the same section of the object). Skip vma_lookup for persistent vmas as it supports aliasing. Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com> --- drivers/gpu/drm/i915/i915_vma.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c index 6adb013579be..9aa38b772b5b 100644 --- a/drivers/gpu/drm/i915/i915_vma.c +++ b/drivers/gpu/drm/i915/i915_vma.c @@ -197,6 +197,10 @@ vma_create(struct drm_i915_gem_object *obj, __set_bit(I915_VMA_GGTT_BIT, __i915_vma_flags(vma)); } + if (!i915_vma_is_ggtt(vma) && + (view && view->type == I915_GGTT_VIEW_PARTIAL)) + goto skip_rb_insert; + rb = NULL; p = &obj->vma.tree.rb_node; while (*p) { @@ -221,6 +225,7 @@ vma_create(struct drm_i915_gem_object *obj, rb_link_node(&vma->obj_node, rb, p); rb_insert_color(&vma->obj_node, &obj->vma.tree); +skip_rb_insert: if (i915_vma_is_ggtt(vma)) /* * We put the GGTT vma at the start of the vma-list, followed @@ -292,13 +297,16 @@ i915_vma_instance(struct drm_i915_gem_object *obj, struct i915_address_space *vm, const struct i915_ggtt_view *view) { - struct i915_vma *vma; + struct i915_vma *vma = NULL; GEM_BUG_ON(!kref_read(&vm->ref)); - spin_lock(&obj->vma.lock); - vma = i915_vma_lookup(obj, vm, view); - spin_unlock(&obj->vma.lock); + if (i915_is_ggtt(vm) || !view || + view->type != I915_GGTT_VIEW_PARTIAL) { + spin_lock(&obj->vma.lock); + vma = i915_vma_lookup(obj, vm, view); + spin_unlock(&obj->vma.lock); + } /* vma_create() will resolve the race if another creates the vma */ if (unlikely(!vma)) @@ -1670,7 +1678,8 @@ static void release_references(struct i915_vma *vma, bool vm_ddestroy) spin_lock(&obj->vma.lock); list_del(&vma->obj_link); - if (!RB_EMPTY_NODE(&vma->obj_node)) + if (!i915_vma_is_persistent(vma) && + !RB_EMPTY_NODE(&vma->obj_node)) rb_erase(&vma->obj_node, &obj->vma.tree); spin_unlock(&obj->vma.lock); -- 2.21.0.rc0.32.g243a4c7e27
next prev parent reply other threads:[~2022-07-01 22:51 UTC|newest] Thread overview: 121+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-07-01 22:50 [RFC 00/10] drm/i915/vm_bind: Add VM_BIND functionality Niranjana Vishwanathapura 2022-07-01 22:50 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-07-01 22:50 ` [RFC 01/10] drm/i915/vm_bind: Introduce VM_BIND ioctl Niranjana Vishwanathapura 2022-07-01 22:50 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-07-05 9:59 ` Hellstrom, Thomas 2022-07-05 9:59 ` Hellstrom, Thomas 2022-07-07 1:18 ` [Intel-gfx] " Andi Shyti 2022-07-07 1:18 ` Andi Shyti 2022-07-07 5:06 ` Niranjana Vishwanathapura 2022-07-07 5:01 ` Niranjana Vishwanathapura 2022-07-07 5:01 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-07-07 7:32 ` Hellstrom, Thomas 2022-07-07 7:32 ` [Intel-gfx] " Hellstrom, Thomas 2022-07-08 12:58 ` Niranjana Vishwanathapura 2022-07-08 12:58 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-07-01 22:50 ` [RFC 02/10] drm/i915/vm_bind: Bind and unbind mappings Niranjana Vishwanathapura 2022-07-01 22:50 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-07-06 16:21 ` Thomas Hellström 2022-07-06 16:21 ` [Intel-gfx] " Thomas Hellström 2022-07-07 1:41 ` Andi Shyti 2022-07-07 1:41 ` Andi Shyti 2022-07-07 5:48 ` Niranjana Vishwanathapura 2022-07-07 5:43 ` Niranjana Vishwanathapura 2022-07-07 5:43 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-07-07 8:14 ` Thomas Hellström 2022-07-07 8:14 ` [Intel-gfx] " Thomas Hellström 2022-07-08 12:57 ` Niranjana Vishwanathapura 2022-07-08 12:57 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-07-18 10:55 ` Tvrtko Ursulin 2022-07-26 5:07 ` Niranjana Vishwanathapura 2022-07-26 8:40 ` Tvrtko Ursulin 2022-07-01 22:50 ` [RFC 03/10] drm/i915/vm_bind: Support private and shared BOs Niranjana Vishwanathapura 2022-07-01 22:50 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-07-07 10:31 ` Hellstrom, Thomas 2022-07-07 10:31 ` [Intel-gfx] " Hellstrom, Thomas 2022-07-08 13:14 ` Niranjana Vishwanathapura 2022-07-08 13:14 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-07-08 13:43 ` Hellstrom, Thomas 2022-07-08 13:43 ` [Intel-gfx] " Hellstrom, Thomas 2022-07-08 14:44 ` Hellstrom, Thomas 2022-07-08 14:44 ` [Intel-gfx] " Hellstrom, Thomas 2022-07-09 20:13 ` Niranjana Vishwanathapura 2022-07-09 20:13 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-07-07 13:27 ` Christian König 2022-07-07 13:27 ` [Intel-gfx] " Christian König 2022-07-08 13:23 ` Niranjana Vishwanathapura 2022-07-08 13:23 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-07-08 17:32 ` Christian König 2022-07-08 17:32 ` [Intel-gfx] " Christian König 2022-07-09 20:14 ` Niranjana Vishwanathapura 2022-07-09 20:14 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-07-01 22:50 ` [RFC 04/10] drm/i915/vm_bind: Add out fence support Niranjana Vishwanathapura 2022-07-01 22:50 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-07-01 22:50 ` [RFC 05/10] drm/i915/vm_bind: Handle persistent vmas Niranjana Vishwanathapura 2022-07-01 22:50 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-07-04 17:05 ` Zeng, Oak 2022-07-04 17:05 ` Zeng, Oak 2022-07-05 9:20 ` Ramalingam C 2022-07-05 9:20 ` Ramalingam C 2022-07-05 13:50 ` Zeng, Oak 2022-07-05 13:50 ` Zeng, Oak 2022-07-07 6:00 ` Niranjana Vishwanathapura 2022-07-07 11:27 ` Hellstrom, Thomas 2022-07-07 11:27 ` [Intel-gfx] " Hellstrom, Thomas 2022-07-08 15:06 ` Niranjana Vishwanathapura 2022-07-08 15:06 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-07-01 22:50 ` [RFC 06/10] drm/i915/vm_bind: Add I915_GEM_EXECBUFFER3 ioctl Niranjana Vishwanathapura 2022-07-01 22:50 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-07-07 14:41 ` Hellstrom, Thomas 2022-07-07 14:41 ` [Intel-gfx] " Hellstrom, Thomas 2022-07-07 19:38 ` Andi Shyti 2022-07-07 19:38 ` Andi Shyti 2022-07-08 12:22 ` Hellstrom, Thomas 2022-07-08 12:22 ` Hellstrom, Thomas 2022-07-08 13:47 ` Niranjana Vishwanathapura 2022-07-08 13:47 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-07-08 14:37 ` Hellstrom, Thomas 2022-07-08 14:37 ` [Intel-gfx] " Hellstrom, Thomas 2022-07-09 20:23 ` Niranjana Vishwanathapura 2022-07-09 20:23 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-07-01 22:50 ` [RFC 07/10] drm/i915/vm_bind: Handle persistent vmas in execbuf3 Niranjana Vishwanathapura 2022-07-01 22:50 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-07-07 14:54 ` Hellstrom, Thomas 2022-07-07 14:54 ` [Intel-gfx] " Hellstrom, Thomas 2022-07-08 12:44 ` Niranjana Vishwanathapura 2022-07-08 12:44 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-07-08 13:03 ` Hellstrom, Thomas 2022-07-08 13:03 ` [Intel-gfx] " Hellstrom, Thomas 2022-07-09 20:25 ` Niranjana Vishwanathapura 2022-07-09 20:25 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-07-01 22:50 ` [RFC 08/10] drm/i915/vm_bind: userptr dma-resv changes Niranjana Vishwanathapura 2022-07-01 22:50 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-07-07 13:11 ` Hellstrom, Thomas 2022-07-07 13:11 ` [Intel-gfx] " Hellstrom, Thomas 2022-07-08 14:51 ` Niranjana Vishwanathapura 2022-07-08 14:51 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-07-08 15:20 ` Hellstrom, Thomas 2022-07-08 15:20 ` [Intel-gfx] " Hellstrom, Thomas 2022-07-09 20:56 ` Niranjana Vishwanathapura 2022-07-09 20:56 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-07-08 12:17 ` Hellstrom, Thomas 2022-07-08 12:17 ` [Intel-gfx] " Hellstrom, Thomas 2022-07-08 14:54 ` Niranjana Vishwanathapura 2022-07-08 14:54 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-07-01 22:50 ` Niranjana Vishwanathapura [this message] 2022-07-01 22:50 ` [Intel-gfx] [RFC 09/10] drm/i915/vm_bind: Skip vma_lookup for persistent vmas Niranjana Vishwanathapura 2022-07-05 8:57 ` Thomas Hellström 2022-07-05 8:57 ` Thomas Hellström 2022-07-08 12:40 ` Niranjana Vishwanathapura 2022-07-08 12:40 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-07-01 22:50 ` [RFC 10/10] drm/i915/vm_bind: Fix vm->vm_bind_mutex and vm->mutex nesting Niranjana Vishwanathapura 2022-07-01 22:50 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-07-05 8:40 ` Thomas Hellström 2022-07-05 8:40 ` [Intel-gfx] " Thomas Hellström 2022-07-06 16:33 ` Ramalingam C 2022-07-06 16:33 ` [Intel-gfx] " Ramalingam C 2022-07-07 5:56 ` Niranjana Vishwanathapura 2022-07-07 5:56 ` [Intel-gfx] " Niranjana Vishwanathapura 2022-07-01 23:19 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/vm_bind: Add VM_BIND functionality Patchwork 2022-07-01 23:19 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork 2022-07-01 23:40 ` [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=20220701225055.8204-10-niranjana.vishwanathapura@intel.com \ --to=niranjana.vishwanathapura@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=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.