[igt-dev] [PATCH i-g-t 1/2] i915/i915_module_load: Randomise fault injection
Kamil Konieczny
kamil.konieczny at linux.intel.com
Tue Jul 12 13:57:45 UTC 2022
Hi,
On 2022-07-08 at 14:24:21 +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.
--------------------------------------------------- ^
s/efficacy/efficency/
> 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>
> ---
> tests/i915/i915_module_load.c | 17 ++++++++++++-----
> 1 file changed, 12 insertions(+), 5 deletions(-)
>
> diff --git a/tests/i915/i915_module_load.c b/tests/i915/i915_module_load.c
> index 4705f3d6c4..a922af0064 100644
> --- a/tests/i915/i915_module_load.c
> +++ b/tests/i915/i915_module_load.c
> @@ -302,21 +302,28 @@ 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)
> + i = 0;
> + while (inject_fault("i915", param, i += 1 + random() % 17) == 0)
----------------------------------------------------------------------- ^ --- ^
imho this should be !inject_fault instead of == 0.
Second point is using constant 17, as it depends on i915 driver
but I assume it is enough for now.
> ;
Setting var i before while() makes it a for loop, so maybe:
for (i = 1; !inject_fault("i915", param, i); )
i += 1 + random() % 17;
As side effect, this will always start from injecting at 1, only
after that will increase param i randomly. You can use
do/while if you want to start randomly:
do
i += 1 + random() % 17;
while (!inject_fault("i915", param, i));
It is not strong opinion, you can leave code as is, your choice.
>
> - /* We expect to hit at least one fault! */
> - igt_assert(i > 1);
> -
This is good to remove, as the only thing tested here was local
variable incrementing above zero.
Please rebase before resending or merge. With that fixed you can
add my r-b tag.
Regards,
Kamil
> /* inject_fault() leaves the module unloaded */
> }
>
> --
> 2.34.1
>
More information about the igt-dev
mailing list