As the default preempt-reset timeout has been increased from 100ms to
640ms, we need a corresponding increase in our own timeout so that we
allow enough time for the preempt-reset to occur and close the hung
contexts.

Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
---
 tests/i915/gem_ctx_persistence.c | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/tests/i915/gem_ctx_persistence.c b/tests/i915/gem_ctx_persistence.c
index 0f704c639..2250483d3 100644
--- a/tests/i915/gem_ctx_persistence.c
+++ b/tests/i915/gem_ctx_persistence.c
@@ -40,6 +40,8 @@
 #include "ioctl_wrappers.h" /* gem_wait()! */
 #include "sw_sync.h"
 
+static unsigned long reset_timeout_ms = MSEC_PER_SEC; /* default: 640ms */
+
 static bool has_persistence(int i915)
 {
        struct drm_i915_gem_context_param p = {
@@ -226,10 +228,10 @@ static void test_nonpersistent_mixed(int i915, unsigned 
int engine)
        }
 
        /* Outer pair of contexts were non-persistent and killed */
-       igt_assert_eq(sync_fence_wait(fence[0], MSEC_PER_SEC / 5), 0);
+       igt_assert_eq(sync_fence_wait(fence[0], reset_timeout_ms), 0);
        igt_assert_eq(sync_fence_status(fence[0]), -EIO);
 
-       igt_assert_eq(sync_fence_wait(fence[2], MSEC_PER_SEC / 5), 0);
+       igt_assert_eq(sync_fence_wait(fence[2], reset_timeout_ms), 0);
        igt_assert_eq(sync_fence_status(fence[2]), -EIO);
 
        /* But the middle context is still running */
@@ -361,7 +363,7 @@ static void test_nonpersistent_file(int i915)
        close(i915);
        flush_delayed_fput(debugfs);
 
-       igt_assert_eq(sync_fence_wait(spin->out_fence, MSEC_PER_SEC / 5), 0);
+       igt_assert_eq(sync_fence_wait(spin->out_fence, reset_timeout_ms), 0);
        igt_assert_eq(sync_fence_status(spin->out_fence), -EIO);
 
        spin->handle = 0;
@@ -402,10 +404,10 @@ static void test_nonpersistent_queued(int i915, unsigned 
int engine)
 
        gem_context_destroy(i915, ctx);
 
-       igt_assert_eq(sync_fence_wait(spin->out_fence, MSEC_PER_SEC / 5), 0);
+       igt_assert_eq(sync_fence_wait(spin->out_fence, reset_timeout_ms), 0);
        igt_assert_eq(sync_fence_status(spin->out_fence), -EIO);
 
-       igt_assert_eq(sync_fence_wait(fence, MSEC_PER_SEC / 5), 0);
+       igt_assert_eq(sync_fence_wait(fence, reset_timeout_ms), 0);
        igt_assert_eq(sync_fence_status(fence), -EIO);
 
        igt_spin_free(i915, spin);
@@ -479,7 +481,7 @@ static void test_process(int i915)
        fence = recvfd(sv[1]);
        close(sv[1]);
 
-       igt_assert_eq(sync_fence_wait(fence, MSEC_PER_SEC / 5), 0);
+       igt_assert_eq(sync_fence_wait(fence, reset_timeout_ms), 0);
        igt_assert_eq(sync_fence_status(fence), -EIO);
        close(fence);
 
@@ -530,7 +532,7 @@ static void test_process_mixed(int i915, unsigned int 
engine)
        close(sv[1]);
 
        /* First fence is non-persistent, so should be reset */
-       igt_assert_eq(sync_fence_wait(fence[0], MSEC_PER_SEC / 5), 0);
+       igt_assert_eq(sync_fence_wait(fence[0], reset_timeout_ms), 0);
        igt_assert_eq(sync_fence_status(fence[0]), -EIO);
        close(fence[0]);
 
@@ -605,7 +607,7 @@ static void test_processes(int i915)
                if (i == 0) {
                        /* First fence is non-persistent, so should be reset */
                        igt_assert_eq(sync_fence_wait(fence,
-                                                     MSEC_PER_SEC / 5), 0);
+                                                     reset_timeout_ms), 0);
                        igt_assert_eq(sync_fence_status(fence), -EIO);
                } else {
                        /* Second fence is persistent, so still spinning */
@@ -645,11 +647,11 @@ static void __smoker(int i915, unsigned int engine, int 
expected)
 
        igt_spin_end(spin);
 
-       igt_assert_eq(sync_fence_wait(spin->out_fence, MSEC_PER_SEC), 0);
+       igt_assert_eq(sync_fence_wait(spin->out_fence, reset_timeout_ms), 0);
        igt_assert_eq(sync_fence_status(spin->out_fence), expected);
 
        if (fence != -1) {
-               igt_assert_eq(sync_fence_wait(fence, MSEC_PER_SEC), 0);
+               igt_assert_eq(sync_fence_wait(fence, reset_timeout_ms), 0);
                igt_assert_eq(sync_fence_status(fence), expected);
                close(fence);
        }
-- 
2.24.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to