[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