summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2019-07-28 10:08:00 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2019-10-15 14:52:18 +0100
commit1a644320e76f6d7cb13462804b5a8897c9b7d057 (patch)
tree5a5854a7e506a23d5509fa92bf3993d4b666d310
parent93f306e43c946ba0748c5ed0e4549ead52b870a6 (diff)
i915_hangman: Force error capture
For fast preempt-resets, error capture is skipped, so disable preempt-resets before checking the error state. While thinking ahead, be prepared for when the modparams are not accessible. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Andi Shyti <andi.shyti@intel.com>
-rw-r--r--lib/igt_gt.c7
-rw-r--r--tests/i915/i915_hangman.c7
2 files changed, 8 insertions, 6 deletions
diff --git a/lib/igt_gt.c b/lib/igt_gt.c
index 78e3cd08..5ca77471 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 58141fc9..7a158d8d 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;