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

Kamil Konieczny kamil.konieczny at linux.intel.com
Wed Jul 13 07:36:29 UTC 2022


On 2022-07-13 at 08:51:12 +0200, Zbigniew Kempczyński wrote:
> 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)

Reviewed-by: Kamil Konieczny <kamil.konieczny at linux.intel.com>

> ---
>  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