[PATCH 21/21] ctx-lockref

Chris Wilson chris at chris-wilson.co.uk
Sat Jul 4 21:10:19 UTC 2020


---
 drivers/gpu/drm/i915/mm/i915_acquire_ctx.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/mm/i915_acquire_ctx.c b/drivers/gpu/drm/i915/mm/i915_acquire_ctx.c
index 2467206ce215..180a04874125 100644
--- a/drivers/gpu/drm/i915/mm/i915_acquire_ctx.c
+++ b/drivers/gpu/drm/i915/mm/i915_acquire_ctx.c
@@ -21,8 +21,10 @@ int i915_acquire_ctx_lock(struct i915_acquire_ctx *ctx,
 	int err;
 
 	err = dma_resv_lock_interruptible(obj->base.resv, &ctx->ctx);
-	if (!err)
+	if (!err) {
 		list_add_tail(&obj->mm.acquire_link, &ctx->acquire_list);
+		i915_gem_object_get(obj);
+	}
 	if (err == -EALREADY)
 		err = 0;
 
@@ -33,8 +35,10 @@ static void i915_acquire_ctx_unlock_all(struct i915_acquire_ctx *ctx)
 {
 	struct drm_i915_gem_object *obj, *on;
 
-	list_for_each_entry_safe(obj, on, &ctx->acquire_list, mm.acquire_link)
+	list_for_each_entry_safe(obj, on, &ctx->acquire_list, mm.acquire_link) {
 		i915_gem_object_unlock(obj);
+		i915_gem_object_put(obj);
+	}
 	INIT_LIST_HEAD(&ctx->acquire_list);
 }
 
@@ -46,8 +50,10 @@ int i915_acquire_ctx_backoff(struct i915_acquire_ctx *ctx,
 	i915_acquire_ctx_unlock_all(ctx);
 
 	err = dma_resv_lock_slow_interruptible(obj->base.resv, &ctx->ctx);
-	if (!err)
+	if (!err) {
 		list_add_tail(&obj->mm.acquire_link, &ctx->acquire_list);
+		i915_gem_object_get(obj);
+	}
 
 	return err;
 }
-- 
2.20.1



More information about the Intel-gfx-trybot mailing list