diff options
author | Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> | 2016-03-01 11:01:32 +0000 |
---|---|---|
committer | Mika Kuoppala <mika.kuoppala@intel.com> | 2016-03-01 16:57:00 +0200 |
commit | 03c7f84eb1c95b9761bbff3c9fcaed8472c3c6fb (patch) | |
tree | 84de6693b6e50b5f2d196dbe4102030dc3b70e21 | |
parent | 094e0cbabb9615c87d8e813a91f158fe439b536d (diff) |
lib: move i915_wedged_set to ig_gt.c
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@intel.com>
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
-rw-r--r-- | lib/igt_gt.c | 23 | ||||
-rw-r--r-- | lib/igt_gt.h | 2 | ||||
-rw-r--r-- | 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 9f8634b0..72355191 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 b7c5c4a9..ad993c1b 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 d209816c..ab3facc7 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"); |