summaryrefslogtreecommitdiff
path: root/tests/i915/sysfs_heartbeat_interval.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2020-05-13 11:40:41 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2020-05-22 20:41:23 +0100
commitff03d458f708583c8f9296f97c38df312055651a (patch)
tree14b7b2bc85b4796905709a6fcd53c27a28501a43 /tests/i915/sysfs_heartbeat_interval.c
parent8cea80faed3d591a5ffe8d145836431cff3c860f (diff)
i915/sysfs_heartbeat_interval: Watch out for CPU scheduler delays
If our CPU client is very slow to notice that the GPU spinner has started, we may consume the full heartbeat interval without noticing. This is bad if we are trying to test that a client that yield within the heartbeat interval is not selected for termination. Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/1879 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Diffstat (limited to 'tests/i915/sysfs_heartbeat_interval.c')
-rw-r--r--tests/i915/sysfs_heartbeat_interval.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/tests/i915/sysfs_heartbeat_interval.c b/tests/i915/sysfs_heartbeat_interval.c
index 6d4413d6..fe0cc046 100644
--- a/tests/i915/sysfs_heartbeat_interval.c
+++ b/tests/i915/sysfs_heartbeat_interval.c
@@ -308,8 +308,13 @@ static void client(int i915, int engine, int *ctl, int duration, int expect)
IGT_SPIN_POLL_RUN |
IGT_SPIN_FENCE_OUT));
+ /* XXX we need more precise means of limiting the spinner */
igt_spin_busywait_until_started(spin);
- igt_assert_eq(sync_fence_status(spin->out_fence), 0);
+ if (sync_fence_status(spin->out_fence)) {
+ /* CPU too slow! */
+ igt_spin_free(i915, spin);
+ continue;
+ }
elapsed = measured_usleep(duration * 1000);
igt_spin_end(spin);