[igt-dev] [PATCH i-g-t v2 1/2] i915/i915_module_load: Randomise fault injection

Zbigniew Kempczyński zbigniew.kempczynski at intel.com
Wed Jul 13 06:51:12 UTC 2022


From: Chris Wilson <chris.p.wilson at linux.intel.com>

Reduce the number of faults we inject during module reload to bring the
test runtime back to a reasonable level, and rely on multiple CI runs to
establish the full picture. This reduces the efficacy of testing (i.e.
premerge will probably not prevent inclusion of a buggy patch), but
error handling on module reload is not a critical factor for driver
health -- a broken patch that explodes in an error path is unlikely to
prevent CI from detecting critical issues, and with multiple runs we
should still be able to detect and fix issues before merging.

Fixes: https://gitlab.freedesktop.org/drm/intel/-/issues/6393

Signed-off-by: Chris Wilson <chris.p.wilson at linux.intel.com>
Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>
Cc: Janusz Krzysztofik <janusz.krzysztofik at linux.intel.com>
---
v2: Reorganize fault_inject() loop (Kamil)
---
 tests/i915/i915_module_load.c | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/tests/i915/i915_module_load.c b/tests/i915/i915_module_load.c
index 05863c4748..0ce433869d 100644
--- a/tests/i915/i915_module_load.c
+++ b/tests/i915/i915_module_load.c
@@ -345,20 +345,27 @@ igt_main
 		     " with fault injection.");
 	igt_subtest("reload-with-fault-injection") {
 		const char *param;
-		int i = 0;
+		int i;
 
 		igt_i915_driver_unload();
 
+		i = 0;
+		param = getenv("IGT_SRANDOM");
+		if (param)
+			i = atoi(param);
+		if (!i)
+			i = time(NULL);
+		igt_info("Using IGT_SRANDOM=%d for randomised faults\n", i);
+		srandom(i);
+
 		param = "inject_probe_failure";
 		if (!igt_kmod_has_param("i915", param))
 			param = "inject_load_failure";
 		igt_require(igt_kmod_has_param("i915", param));
 
-		while (inject_fault("i915", param, ++i) == 0)
-			;
-
-		/* We expect to hit at least one fault! */
-		igt_assert(i > 1);
+		i = 1;
+		while (inject_fault("i915", param, i) == 0)
+			i += 1 + random() % 17;
 
 		/* inject_fault() leaves the module unloaded */
 	}
-- 
2.34.1



More information about the igt-dev mailing list