[igt-dev] [PATCH i-g-t] runner: Show why we dump the task state

Chris Wilson chris at chris-wilson.co.uk
Tue Apr 7 08:35:33 UTC 2020


Include the reason why we are dumping the task state (test timeout) in
the kmsg log prior to the task state. Hopefully this helps when reading
the dump.

Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
Cc: Petri Latvala <petri.latvala at intel.com>
---
 runner/executor.c | 25 ++++++++++++++++---------
 1 file changed, 16 insertions(+), 9 deletions(-)

diff --git a/runner/executor.c b/runner/executor.c
index 1b69f9c57..7061b28d3 100644
--- a/runner/executor.c
+++ b/runner/executor.c
@@ -678,9 +678,20 @@ static bool sysrq(char cmd)
 	return success;
 }
 
-static void show_kernel_task_state(void)
+static const char *show_kernel_task_state(const char *msg)
 {
+	int fd;
+
+	fd = open("/dev/kmsg", O_WRONLY);
+	if (fd != -1) {
+		write(fd, "<4>[IGT] ", 7);
+		write(fd, msg, strlen(msg));
+		close(fd);
+	}
+
 	sysrq('t');
+
+	return msg;
 }
 
 static const char *need_to_timeout(struct settings *settings,
@@ -725,16 +736,12 @@ static const char *need_to_timeout(struct settings *settings,
 		return "Killing the test because the kernel is tainted.\n";
 
 	if (settings->per_test_timeout != 0 &&
-	    time_since_subtest > settings->per_test_timeout) {
-		show_kernel_task_state();
-		return "Per-test timeout exceeded. Killing the current test with SIGQUIT.\n";
-	}
+	    time_since_subtest > settings->per_test_timeout)
+		return show_kernel_task_state("Per-test timeout exceeded. Killing the current test with SIGQUIT.\n");
 
 	if (settings->inactivity_timeout != 0 &&
-	    time_since_activity > settings->inactivity_timeout) {
-		show_kernel_task_state();
-		return "Inactivity timeout exceeded. Killing the current test with SIGQUIT.\n";
-	}
+	    time_since_activity > settings->inactivity_timeout)
+		return show_kernel_task_state("Inactivity timeout exceeded. Killing the current test with SIGQUIT.\n");
 
 	return NULL;
 }
-- 
2.26.0



More information about the igt-dev mailing list