[PATCH 2/3] drm/i915: Lock the gem_context->active_list while dropping the link

Chris Wilson chris at chris-wilson.co.uk
Tue Mar 12 17:51:58 UTC 2019


On unpinning the intel_context, we remove it from the active list
inside the GEM context. This list is supposed to be guarded by the GEM
context mutex, so remember to take it!

Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/intel_lrc.c        | 2 ++
 drivers/gpu/drm/i915/intel_ringbuffer.c | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index 00fa4a3bc9a3..b4227f8a7f2d 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -1284,7 +1284,9 @@ static void execlists_context_unpin(struct intel_context *ce)
 	i915_gem_object_unpin_map(ce->state->obj);
 	i915_vma_unpin(ce->state);
 
+	mutex_lock(&ce->gem_context->mutex);
 	list_del(&ce->active_link);
+	mutex_unlock(&ce->gem_context->mutex);
 	i915_gem_context_put(ce->gem_context);
 }
 
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index ebac752e092d..fea44254131f 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -1435,7 +1435,9 @@ static void ring_context_unpin(struct intel_context *ce)
 	__context_unpin_ppgtt(ce->gem_context);
 	__context_unpin(ce);
 
+	mutex_lock(&ce->gem_context->mutex);
 	list_del(&ce->active_link);
+	mutex_unlock(&ce->gem_context->mutex);
 	i915_gem_context_put(ce->gem_context);
 }
 
-- 
2.20.1



More information about the Intel-gfx-trybot mailing list