[PATCH i-g-t] i915/gem_eio: Reduce amount of incidental work after the delayed hang

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Since we time how long it takes for the waiter to be woken upon
injecting the hang, we want to avoid as much distractions as possible
along the critical path.

Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
---
 tests/i915/gem_eio.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/tests/i915/gem_eio.c b/tests/i915/gem_eio.c
index 892f3657c..aa73b4deb 100644
--- a/tests/i915/gem_eio.c
+++ b/tests/i915/gem_eio.c
@@ -27,6 +27,7 @@
  *
  */
 
+#include <sched.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
@@ -223,16 +224,20 @@ struct hang_ctx {
 static void hang_handler(union sigval arg)
 {
 	struct hang_ctx *ctx = arg.sival_ptr;
+	struct timespec *ts = ctx->ts;
+	int dir = ctx->debugfs;
 
 	igt_debug("hang delay = %.2fus\n",
 		  igt_nsec_elapsed(&ctx->delay) / 1000.0);
-
-	igt_nsec_elapsed(ctx->ts);
-	igt_assert(igt_sysfs_set(ctx->debugfs, "i915_wedged", "-1"));
-
 	igt_assert_eq(timer_delete(ctx->timer), 0);
-	close(ctx->debugfs);
 	free(ctx);
+
+	igt_nsec_elapsed(ts);
+	igt_assert(igt_sysfs_set(dir, "i915_wedged", "-1"));
+	/* -> wake up gem_sync() in check_wait() */
+
+	sched_yield();
+	close(dir);
 }
 
 static void hang_after(int fd, unsigned int us, struct timespec *ts)
-- 
2.23.0

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




[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux