Commit 03f060b7 authored by Matthew Brost's avatar Matthew Brost Committed by John Harrison

drm/i915/resets: Don't set / test for per-engine reset bits with GuC submission

Don't set, test for, or clear per-engine reset bits with GuC submission
as the GuC owns the per engine resets not the i915. Setting, testing
for, and clearing these bits is causing issues with the hangcheck
selftest. Rather than change to test to not use these bits, rip the use
of these bits out from the reset code.
Signed-off-by: default avatarMatthew Brost <matthew.brost@intel.com>
Reviewed-by: default avatarJohn Harrison <John.C.Harrison@Intel.com>
Signed-off-by: default avatarJohn Harrison <John.C.Harrison@Intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20211028224224.32693-1-matthew.brost@intel.com
parent c10a652e
...@@ -1367,20 +1367,27 @@ void intel_gt_handle_error(struct intel_gt *gt, ...@@ -1367,20 +1367,27 @@ void intel_gt_handle_error(struct intel_gt *gt,
/* Make sure i915_reset_trylock() sees the I915_RESET_BACKOFF */ /* Make sure i915_reset_trylock() sees the I915_RESET_BACKOFF */
synchronize_rcu_expedited(); synchronize_rcu_expedited();
/* Prevent any other reset-engine attempt. */ /*
for_each_engine(engine, gt, tmp) { * Prevent any other reset-engine attempt. We don't do this for GuC
while (test_and_set_bit(I915_RESET_ENGINE + engine->id, * submission the GuC owns the per-engine reset, not the i915.
&gt->reset.flags)) */
wait_on_bit(&gt->reset.flags, if (!intel_uc_uses_guc_submission(&gt->uc)) {
I915_RESET_ENGINE + engine->id, for_each_engine(engine, gt, tmp) {
TASK_UNINTERRUPTIBLE); while (test_and_set_bit(I915_RESET_ENGINE + engine->id,
&gt->reset.flags))
wait_on_bit(&gt->reset.flags,
I915_RESET_ENGINE + engine->id,
TASK_UNINTERRUPTIBLE);
}
} }
intel_gt_reset_global(gt, engine_mask, msg); intel_gt_reset_global(gt, engine_mask, msg);
for_each_engine(engine, gt, tmp) if (!intel_uc_uses_guc_submission(&gt->uc)) {
clear_bit_unlock(I915_RESET_ENGINE + engine->id, for_each_engine(engine, gt, tmp)
&gt->reset.flags); clear_bit_unlock(I915_RESET_ENGINE + engine->id,
&gt->reset.flags);
}
clear_bit_unlock(I915_RESET_BACKOFF, &gt->reset.flags); clear_bit_unlock(I915_RESET_BACKOFF, &gt->reset.flags);
smp_mb__after_atomic(); smp_mb__after_atomic();
wake_up_all(&gt->reset.queue); wake_up_all(&gt->reset.queue);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment