[Intel-gfx] [PATCH i-g-t v4 1/2] lib: move i915_wedged_set to ig_gt.c
daniele.ceraolospurio at intel.com
daniele.ceraolospurio at intel.com
Tue Mar 1 11:01:32 UTC 2016
From: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
Upcoming tests will call it to recover from bad states caused by
hangcheck bugs.the function was renamed to igt_force_gpu_reset to have a
naming closer to other hang-related functions in the same file.
The value written to the debugfs has also been changed to -1; this makes
no differences with the current implementation but copes with upcoming
TDR changes (still under discussion) that should allow the resetting of
a mask of rings.
Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
---
lib/igt_gt.c | 23 +++++++++++++++++++++++
lib/igt_gt.h | 2 ++
tests/gem_eio.c | 17 +----------------
3 files changed, 26 insertions(+), 16 deletions(-)
diff --git a/lib/igt_gt.c b/lib/igt_gt.c
index 9f8634b..7235519 100644
--- a/lib/igt_gt.c
+++ b/lib/igt_gt.c
@@ -269,6 +269,29 @@ void igt_post_hang_ring(int fd, struct igt_hang_ring arg)
}
}
+/**
+ * igt_force_gpu_reset:
+ *
+ * forces a gpu reset using the i915_wedged debugfs interface. To be used to
+ * recover from situations where the hangcheck didn't trigger and/or the gpu is
+ * stuck, either because the test manually disabled gpu resets or because the
+ * test hit an hangcheck bug
+ */
+void igt_force_gpu_reset(void)
+{
+ int fd, ret;
+
+ igt_debug("Triggering GPU reset\n");
+
+ fd = igt_debugfs_open("i915_wedged", O_RDWR);
+ igt_require(fd >= 0);
+
+ ret = write(fd, "-1\n", 3);
+ close(fd);
+
+ igt_assert_eq(ret, 3);
+}
+
/* GPU abusers */
static struct igt_helper_process hang_helper;
static void __attribute__((noreturn))
diff --git a/lib/igt_gt.h b/lib/igt_gt.h
index b7c5c4a..ad993c1 100644
--- a/lib/igt_gt.h
+++ b/lib/igt_gt.h
@@ -48,6 +48,8 @@ struct igt_hang_ring igt_hang_ctx(int fd,
struct igt_hang_ring igt_hang_ring(int fd, int ring);
void igt_post_hang_ring(int fd, struct igt_hang_ring arg);
+void igt_force_gpu_reset(void);
+
void igt_fork_hang_helper(void);
void igt_stop_hang_helper(void);
diff --git a/tests/gem_eio.c b/tests/gem_eio.c
index d209816..ab3facc 100644
--- a/tests/gem_eio.c
+++ b/tests/gem_eio.c
@@ -58,24 +58,9 @@ static bool i915_reset_control(bool enable)
return ret;
}
-static bool i915_wedged_set(void)
-{
- int fd, ret;
-
- igt_debug("Triggering GPU reset\n");
-
- fd = igt_debugfs_open("i915_wedged", O_RDWR);
- igt_require(fd >= 0);
-
- ret = write(fd, "1\n", 2) == 2;
- close(fd);
-
- return ret;
-}
-
static void trigger_reset(int fd)
{
- igt_assert(i915_wedged_set());
+ igt_force_gpu_reset();
/* And just check the gpu is indeed running again */
igt_debug("Checking that the GPU recovered\n");
--
1.9.1
More information about the Intel-gfx
mailing list