diff mbox series

drm/i915/selftests: wait for active idle event in i915_active_unlock_wait

Message ID 20231128-selftest_wait_for_active_idle_event-v1-1-e365cb8b2d87@intel.com (mailing list archive)
State New, archived
Headers show
Series drm/i915/selftests: wait for active idle event in i915_active_unlock_wait | expand

Commit Message

Andrzej Hajda Nov. 28, 2023, 11:49 a.m. UTC
After i915_active_unlock_wait i915_active can be still non-idle due
to barrier async handling in signal_irq_work. As a result one can observe
following errors:
bcs0: heartbeat pulse did not flush idle tasks
*ERROR* pulse active pulse_active [i915]:pulse_retire [i915]
*ERROR* pulse    count: 0
*ERROR* pulse    preallocated barriers? no

To prevent it let's wait explicitly for idleness.

Signed-off-by: Andrzej Hajda <andrzej.hajda@intel.com>
---
 drivers/gpu/drm/i915/selftests/i915_active.c | 3 +++
 1 file changed, 3 insertions(+)


---
base-commit: f5e7a8caf6f5520ceb37c0e2e0d359a110c7cf98
change-id: 20231128-selftest_wait_for_active_idle_event-6bc728cd16a0

Best regards,
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/selftests/i915_active.c b/drivers/gpu/drm/i915/selftests/i915_active.c
index b61fe850e92493..c7dd12624f3485 100644
--- a/drivers/gpu/drm/i915/selftests/i915_active.c
+++ b/drivers/gpu/drm/i915/selftests/i915_active.c
@@ -342,6 +342,9 @@  void i915_active_unlock_wait(struct i915_active *ref)
 		rcu_read_unlock();
 
 		i915_active_release(ref);
+
+		___wait_var_event(ref, i915_active_is_idle(ref),
+				  TASK_INTERRUPTIBLE, 0, 0, schedule());
 	}
 
 	/* And wait for the retire callback */