[igt-dev] [PATCH igt] tests/msm: Read the devcore back in recovery tests
Rob Clark
robdclark at gmail.com
Sun Dec 11 19:53:02 UTC 2022
From: Rob Clark <robdclark at chromium.org>
This also adds coverage for codepaths related to reading back the
devcore file from sysfs, to help catch issues like
https://gitlab.freedesktop.org/drm/msm/-/issues/20
Signed-off-by: Rob Clark <robdclark at chromium.org>
---
tests/msm/msm_recovery.c | 42 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 42 insertions(+)
diff --git a/tests/msm/msm_recovery.c b/tests/msm/msm_recovery.c
index e01087b4..4c2f2846 100644
--- a/tests/msm/msm_recovery.c
+++ b/tests/msm/msm_recovery.c
@@ -22,14 +22,54 @@
*/
#include <fcntl.h>
+#include <glob.h>
#include "igt.h"
#include "igt_msm.h"
+#include "igt_io.h"
static struct msm_device *dev;
static struct msm_bo *scratch_bo;
static uint32_t *scratch;
+/*
+ * Helper to read and clear devcore. We want to read it completely to ensure
+ * we catch any kernel side regressions like:
+ * https://gitlab.freedesktop.org/drm/msm/-/issues/20
+ */
+
+static void
+read_and_clear_devcore(void)
+{
+ glob_t glob_buf = {0};
+ int ret, fd;
+
+ ret = glob("/sys/class/devcoredump/devcd*/data", GLOB_NOSORT, NULL, &glob_buf);
+ if ((ret == GLOB_NOMATCH) || !glob_buf.gl_pathc)
+ return;
+
+ fd = open(glob_buf.gl_pathv[0], O_RDWR);
+
+ if (fd >= 0) {
+ char buf[0x1000];
+
+ /*
+ * We want to read the entire file but we can throw away the
+ * contents.. we just want to make sure that we exercise the
+ * kernel side codepaths hit when reading the devcore from
+ * sysfs
+ */
+ do {
+ ret = igt_readn(fd, buf, sizeof(buf));
+ } while (ret > 0);
+
+ /* Clear the devcore: */
+ igt_writen(fd, "1", 1);
+ }
+
+ globfree(&glob_buf);
+}
+
/*
* Helpers for cmdstream packet building:
*/
@@ -102,6 +142,8 @@ do_hang_test(struct msm_pipe *pipe)
continue;
igt_assert_eq(scratch[1+i], 2+i);
}
+
+ read_and_clear_devcore();
}
/*
--
2.38.1
More information about the igt-dev
mailing list