[PATCH igt] igt/drv_hangman: Use manual error-state generation

Chris Wilson
2016-10-20T09:07:46Z

For the basic error state, we only desire that an error state be created
following a hang. For that purpose, we do not need a real hang (slow
6-12s) but can inject one instead (fast <1s).

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
tests/drv_hangman.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/tests/drv_hangman.c b/tests/drv_hangman.c
index 953a4c6..bfe5eaf 100644
--- a/tests/drv_hangman.c
+++ b/tests/drv_hangman.c
@@ -32,6 +32,8 @@
#include <sys/stat.h>
#include <fcntl.h>

+#include "igt_debugfs.h"
+
#ifndef I915_PARAM_CMD_PARSER_VERSION
#define I915_PARAM_CMD_PARSER_VERSION 28
#endif
@@ -166,15 +168,21 @@ static void test_error_state_basic(void)
{
int fd;

- fd = drm_open_driver(DRIVER_INTEL);
-
clear_error_state();
assert_error_state_clear();

- submit_hang(fd, I915_EXEC_RENDER);
+ /* Manually trigger a hang by request a reset */
+ fd = igt_debugfs_open("i915_wedged", O_WRONLY);
+ igt_ignore_warn(write(fd, "1\n", 2));
+ close(fd);
+
+ /* Wait for the error capture and gpu reset to complete */
+ fd = drm_open_driver(DRIVER_INTEL);
+ gem_quiescent_gpu(fd);
close(fd);

assert_error_state_collected();
+
clear_error_state();
assert_error_state_clear();
}
--
2.9.3