]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
drm/i915: Mark up nested spinlocks
authorChris Wilson <chris@chris-wilson.co.uk>
Sat, 12 May 2018 08:49:57 +0000 (09:49 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Mon, 14 May 2018 10:49:09 +0000 (11:49 +0100)
When we process the outstanding requests upon banning a context, we need
to acquire both the engine and the client's timeline, nesting the locks.
This requires explicit markup as the two timelines are now of the same
class, since commit a89d1f921c15 ("drm/i915: Split i915_gem_timeline into
individual timelines").

Testcase: igt/gem_eio/banned
Fixes: a89d1f921c15 ("drm/i915: Split i915_gem_timeline into individual timelines")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Michel Thierry <michel.thierry@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180512084957.9829-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/i915_gem.c

index 89bf5d67cb740d94c4d438c6f31ac1daed35b774..0a2070112b66e79360479e53db54da4e0503b58d 100644 (file)
@@ -3119,7 +3119,7 @@ static void engine_skip_context(struct i915_request *request)
        GEM_BUG_ON(timeline == &engine->timeline);
 
        spin_lock_irqsave(&engine->timeline.lock, flags);
-       spin_lock(&timeline->lock);
+       spin_lock_nested(&timeline->lock, SINGLE_DEPTH_NESTING);
 
        list_for_each_entry_continue(request, &engine->timeline.requests, link)
                if (request->ctx == hung_ctx)