[Intel-gfx] [PATCH 06/23] drm/i915/gem: Make eb_add_lut interruptible wait on object lock.

2020-05-20 Thread Maarten Lankhorst
The lock here should be interruptible, so we can backoff if needed.

Signed-off-by: Maarten Lankhorst 
---
 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c | 8 +++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c 
b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
index 3bcaf9af590a..19f1eced78a3 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
@@ -776,7 +776,12 @@ static int __eb_add_lut(struct i915_execbuffer *eb,
if (err == 0) { /* And nor has this handle */
struct drm_i915_gem_object *obj = vma->obj;
 
-   i915_gem_object_lock(obj, NULL);
+   err = i915_gem_object_lock_interruptible(obj, NULL);
+   if (err) {
+   radix_tree_delete(>handles_vma, handle);
+   goto unlock;
+   }
+
if (idr_find(>file->object_idr, handle) == obj) {
list_add(>obj_link, >lut_list);
} else {
@@ -785,6 +790,7 @@ static int __eb_add_lut(struct i915_execbuffer *eb,
}
i915_gem_object_unlock(obj);
}
+unlock:
mutex_unlock(>mutex);
}
if (unlikely(err))
-- 
2.26.2

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 06/23] drm/i915/gem: Make eb_add_lut interruptible wait on object lock.

2020-05-11 Thread Maarten Lankhorst
The lock here should be interruptible, so we can backoff if needed.

Signed-off-by: Maarten Lankhorst 
---
 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c | 8 +++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c 
b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
index 4b60405e0ec5..9f3063d8956d 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
@@ -776,7 +776,12 @@ static int __eb_add_lut(struct i915_execbuffer *eb,
if (err == 0) { /* And nor has this handle */
struct drm_i915_gem_object *obj = vma->obj;
 
-   i915_gem_object_lock(obj, NULL);
+   err = i915_gem_object_lock_interruptible(obj, NULL);
+   if (err) {
+   radix_tree_delete(>handles_vma, handle);
+   goto unlock;
+   }
+
if (idr_find(>file->object_idr, handle) == obj) {
list_add(>obj_link, >lut_list);
} else {
@@ -785,6 +790,7 @@ static int __eb_add_lut(struct i915_execbuffer *eb,
}
i915_gem_object_unlock(obj);
}
+unlock:
mutex_unlock(>mutex);
}
if (unlikely(err))
-- 
2.26.2

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx