]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915/execlists: Move reset_active() from schedule-out to schedule-in
authorChris Wilson <chris@chris-wilson.co.uk>
Mon, 11 Nov 2019 13:32:05 +0000 (13:32 +0000)
committerJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
Wed, 13 Nov 2019 10:26:35 +0000 (12:26 +0200)
commit9a1acd28664eae8538a3398e21248ba29ab7dbe4
tree290f4260dc2d8bc9384d260f7cf1de30564092fd
parent810f4193755f0cd92e73180f87b77eed9a39ea93
drm/i915/execlists: Move reset_active() from schedule-out to schedule-in

The gem_ctx_persistence/smoketest was detecting an odd coherency issue
inside the LRC context image; that the address of the ring buffer did
not match our associated struct intel_ring. As we set the address into
the context image when we pin the ring buffer into place before the
context is active, that leaves the question of where did it get
overwritten. Either the HW context save occurred after our pin which
would imply that our idle barriers are broken, or we overwrote the
context image ourselves. It is only in reset_active() where we dabble
inside the context image outside of a serialised path from schedule-out;
but we could equally perform the operation inside schedule-in which is
then fully serialised with the context pin -- and remains serialised by
the engine pulse with kill_context(). (The only downside, aside from
doing more work inside the engine->active.lock, was the plan to merge
all the reset paths into doing their context scrubbing on schedule-out
needs more thought.)

Fixes: aec3f2cf0f71 ("drm/i915/execlists: Cancel banned contexts on schedule-out")
Testcase: igt/gem_ctx_persistence/smoketest
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191111133205.11590-3-chris@chris-wilson.co.uk
(cherry picked from commit 31b61f0ef9af62b6404d8df5dcd2cf58f80c9f53)
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
drivers/gpu/drm/i915/gt/intel_lrc.c