Test-with: <20230213095040.13457-2-janusz.krzyszto...@linux.intel.com>
New igt@gem_barrier_race@remote-request subtest, intended for triggering list corruptions reported by perf users, also revealed issues potentially related to engine barrier tasks lists handling. For example, timeouts on infinite __i915_active_wait() can be potentially caused by the list falsely reported as empty to intel_engine_flush_barriers(). Protect sensitive users of a barrier tasks list from races with a dedicated spinlock. Note: Similar to "drm/i915/active: Fix misuse of non-idle barriers as fence trackers", I'm submitting this fix with a request to CI for testing it with trybot submission of the new igt@gem_barrier_race@remote-request subtest, not yet in upstream IGT, to get comparable results from the widest possible HW range. Janusz Krzysztofik (1): drm/i915/active: Serialize access to barrier tasks lists drivers/gpu/drm/i915/gt/intel_engine_cs.c | 6 +++ .../gpu/drm/i915/gt/intel_engine_heartbeat.c | 10 ++++- drivers/gpu/drm/i915/gt/intel_engine_pm.c | 4 ++ drivers/gpu/drm/i915/gt/intel_engine_types.h | 1 + drivers/gpu/drm/i915/gt/mock_engine.c | 2 + .../drm/i915/gt/selftest_engine_heartbeat.c | 5 +++ drivers/gpu/drm/i915/i915_active.c | 39 +++++++++++++++---- 7 files changed, 59 insertions(+), 8 deletions(-) -- 2.25.1