[Intel-gfx] [PATCH] drm/i915/gem: Take timeline->mutex to walk list-of-requests
Tvrtko Ursulin
tvrtko.ursulin at linux.intel.com
Fri Nov 29 16:25:08 UTC 2019
On 29/11/2019 15:18, Chris Wilson wrote:
> Though the context is closed and so no more requests can be added to the
> timeline, retirement can still be removing requests. It can even be
> removing the very request we are inspecting and so cause us to wander
> into dead links.
>
> Serialise with the retirement by taking the timeline->mutex used for
> guarding the timeline->requests list.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=112404
> Fixes: 4a3174152147 ("drm/i915/gem: Refine occupancy test in kill_context()")
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> Cc: Mika Kuoppala <mika.kuoppala at linux.intel.com>
> Cc: Matthew Auld <matthew.auld at intel.com>
> Cc: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
> ---
> drivers/gpu/drm/i915/gem/i915_gem_context.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.c b/drivers/gpu/drm/i915/gem/i915_gem_context.c
> index a179e170c936..9f1dc96b10a6 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_context.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_context.c
> @@ -403,7 +403,7 @@ static struct intel_engine_cs *active_engine(struct intel_context *ce)
> if (!ce->timeline)
> return NULL;
>
> - rcu_read_lock();
> + mutex_lock(&ce->timeline->mutex);
> list_for_each_entry_reverse(rq, &ce->timeline->requests, link) {
> if (i915_request_completed(rq))
> break;
> @@ -413,7 +413,7 @@ static struct intel_engine_cs *active_engine(struct intel_context *ce)
> if (engine)
> break;
> }
> - rcu_read_unlock();
> + mutex_unlock(&ce->timeline->mutex);
>
> return engine;
> }
>
If retire would use list_del_rcu could we get away with no locking here?
(And list_add_tail_rcu when adding to the timeline.) It's not a
contended path I know. So this works as well.
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
Regards,
Tvrtko
More information about the Intel-gfx
mailing list