mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 00:53:34 +02:00
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: Matthew Brost <matthew.brost@intel.com> Reviewed-by: John Harrison <John.C.Harrison@Intel.com> Signed-off-by: John Harrison <John.C.Harrison@Intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20211028224224.32693-1-matthew.brost@intel.com
This commit is contained in:
parent
c10a652e23
commit
03f060b73f
|
|
@ -1367,20 +1367,27 @@ void intel_gt_handle_error(struct intel_gt *gt,
|
|||
/* Make sure i915_reset_trylock() sees the I915_RESET_BACKOFF */
|
||||
synchronize_rcu_expedited();
|
||||
|
||||
/* Prevent any other reset-engine attempt. */
|
||||
for_each_engine(engine, gt, tmp) {
|
||||
while (test_and_set_bit(I915_RESET_ENGINE + engine->id,
|
||||
>->reset.flags))
|
||||
wait_on_bit(>->reset.flags,
|
||||
I915_RESET_ENGINE + engine->id,
|
||||
TASK_UNINTERRUPTIBLE);
|
||||
/*
|
||||
* Prevent any other reset-engine attempt. We don't do this for GuC
|
||||
* submission the GuC owns the per-engine reset, not the i915.
|
||||
*/
|
||||
if (!intel_uc_uses_guc_submission(>->uc)) {
|
||||
for_each_engine(engine, gt, tmp) {
|
||||
while (test_and_set_bit(I915_RESET_ENGINE + engine->id,
|
||||
>->reset.flags))
|
||||
wait_on_bit(>->reset.flags,
|
||||
I915_RESET_ENGINE + engine->id,
|
||||
TASK_UNINTERRUPTIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
intel_gt_reset_global(gt, engine_mask, msg);
|
||||
|
||||
for_each_engine(engine, gt, tmp)
|
||||
clear_bit_unlock(I915_RESET_ENGINE + engine->id,
|
||||
>->reset.flags);
|
||||
if (!intel_uc_uses_guc_submission(>->uc)) {
|
||||
for_each_engine(engine, gt, tmp)
|
||||
clear_bit_unlock(I915_RESET_ENGINE + engine->id,
|
||||
>->reset.flags);
|
||||
}
|
||||
clear_bit_unlock(I915_RESET_BACKOFF, >->reset.flags);
|
||||
smp_mb__after_atomic();
|
||||
wake_up_all(>->reset.queue);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user