i915_hangman: Force error capture

Submitted by Chris Wilson on July 28, 2019, 9:10 a.m.

Details

Message ID 20190728091011.22746-1-chris@chris-wilson.co.uk
State Accepted
Commit 1a644320e76f6d7cb13462804b5a8897c9b7d057
Headers show
Series "i915_hangman: Force error capture" ( rev: 1 ) in IGT (deprecated)

Not browsing as part of any series.

Commit Message

Chris Wilson July 28, 2019, 9:10 a.m.
For fast preempt-resets, error capture is skipped, so disable
preempt-resets before checking the error state.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
 lib/igt_gt.c              | 7 ++++---
 tests/i915/i915_hangman.c | 7 ++++---
 2 files changed, 8 insertions(+), 6 deletions(-)

Patch hide | download patch | download mbox

diff --git a/lib/igt_gt.c b/lib/igt_gt.c
index 78e3cd089..5ca77471c 100644
--- a/lib/igt_gt.c
+++ b/lib/igt_gt.c
@@ -162,6 +162,7 @@  igt_hang_t igt_allow_hang(int fd, unsigned ctx, unsigned flags)
 	struct drm_i915_gem_context_param param = {
 		.ctx_id = ctx,
 	};
+	int allow_reset;
 	unsigned ban;
 
 	/*
@@ -177,9 +178,7 @@  igt_hang_t igt_allow_hang(int fd, unsigned ctx, unsigned flags)
 	if (!igt_check_boolean_env_var("IGT_HANG_WITHOUT_RESET", false))
 		igt_require(has_gpu_reset(fd));
 
-	igt_require(igt_sysfs_set_parameter
-		    (fd, "reset", "%d", INT_MAX /* any reset method */));
-
+	allow_reset = 1;
 	if ((flags & HANG_ALLOW_CAPTURE) == 0) {
 		param.param = I915_CONTEXT_PARAM_NO_ERROR_CAPTURE;
 		param.value = 1;
@@ -188,7 +187,9 @@  igt_hang_t igt_allow_hang(int fd, unsigned ctx, unsigned flags)
 		 * the right one).
 		 */
 		__gem_context_set_param(fd, &param);
+		allow_reset = INT_MAX; /* any reset method */
 	}
+	igt_require(igt_sysfs_set_parameter(fd, "reset", "%d", allow_reset));
 
 	ban = context_get_ban(fd, ctx);
 	if ((flags & HANG_ALLOW_BAN) == 0)
diff --git a/tests/i915/i915_hangman.c b/tests/i915/i915_hangman.c
index 58141fc92..7a158d8db 100644
--- a/tests/i915/i915_hangman.c
+++ b/tests/i915/i915_hangman.c
@@ -140,12 +140,13 @@  static void check_error_state(const char *expected_ring_name,
 	size_t line_size = 0;
 	bool found = false;
 
-	igt_debug("%s(expected ring name=%s, expected offset=%"PRIx64")\n",
-		  __func__, expected_ring_name, expected_offset);
 	igt_debugfs_dump(device, "i915_error_state");
 
 	igt_assert(getline(&line, &line_size, file) != -1);
-	igt_assert(strcasecmp(line, "No error state collected"));
+	igt_require(strcasecmp(line, "No error state collected"));
+
+	igt_debug("%s(expected ring name=%s, expected offset=%"PRIx64")\n",
+		  __func__, expected_ring_name, expected_offset);
 
 	while (getline(&line, &line_size, file) > 0) {
 		char *dashes;