[PATCH i-g-t v5] tests/intel/xe_fault_injection: Suppress Guc CT dumps during fault injection
Cavitt, Jonathan
jonathan.cavitt at intel.com
Thu Jun 12 14:20:06 UTC 2025
-----Original Message-----
From: Satyanarayana K V P <satyanarayana.k.v.p at intel.com>
Sent: Thursday, June 12, 2025 1:15 AM
To: igt-dev at lists.freedesktop.org
Cc: K V P, Satyanarayana <satyanarayana.k.v.p at intel.com>; Harrison, John C <john.c.harrison at intel.com>; Cavitt, Jonathan <jonathan.cavitt at intel.com>; Dugast, Francois <francois.dugast at intel.com>
Subject: [PATCH i-g-t v5] tests/intel/xe_fault_injection: Suppress Guc CT dumps during fault injection
>
> When injecting fault to xe_guc_ct_send_recv() & xe_guc_mmio_send_recv()
> functions, the CI test systems are going out of space and crashing. To
> avoid this issue, a new helper function is created and when fault is
> injected into this xe_should_fail_ct_dead_capture() helper function,
> ct dead capture is avoided which suppresses ct dumps in the log.
>
> Inject fault into xe_should_fail_ct_dead_capture() function along with
> xe_guc_ct_send_recv() & xe_guc_mmio_send_recv() to suppress GUC ct dumps.
>
> Signed-off-by: Satyanarayana K V P <satyanarayana.k.v.p at intel.com>
> Suggested-by: John Harrison <John.C.Harrison at Intel.com>
> Cc: Jonathan Cavitt <jonathan.cavitt at intel.com>
> Cc: Francois Dugast <francois.dugast at intel.com>
> ---
> Same as https://patchwork.freedesktop.org/series/148416/ which was
> reverted due to change from XE was still in review.
>
> V4 -> V5:
> - Fixed review comments (Jonathan).
>
> Test-with: 20250612080402.22011-1-satyanarayana.k.v.p at intel.com
> ---
> tests/intel/xe_fault_injection.c | 30 ++++++++++++++++++++++++++++++
> 1 file changed, 30 insertions(+)
>
> diff --git a/tests/intel/xe_fault_injection.c b/tests/intel/xe_fault_injection.c
> index aa3a3a7c2..8245c558c 100644
> --- a/tests/intel/xe_fault_injection.c
> +++ b/tests/intel/xe_fault_injection.c
> @@ -113,6 +113,22 @@ static void injection_list_add(const char function_name[])
> close(dir);
> }
>
> +static void injection_list_append(const char function_name[])
> +{
> + int dir, fd, ret;
> +
> + dir = fail_function_open();
> + igt_assert_lte(0, dir);
> +
> + fd = openat(dir, "inject", O_WRONLY | O_APPEND);
> + igt_assert_lte(0, fd);
> + ret = write(fd, function_name, strlen(function_name));
> + igt_assert_lte(0, ret);
> +
> + close(fd);
> + close(dir);
> +}
> +
> static void injection_list_remove(const char function_name[])
> {
> int dir;
> @@ -192,6 +208,18 @@ static void set_retval(const char function_name[], long long retval)
> close(dir);
> }
>
> +static void ignore_fail_dump_in_dmesg(const char function_name[], bool enable)
> +{
> + if (strstr(function_name, "send_recv")) {
> + if (enable) {
> + injection_list_append("xe_is_injection_active");
> + set_retval("xe_is_injection_active", INJECT_ERRNO);
> + } else {
> + injection_list_remove("xe_is_injection_active");
> + }
> + }
> +}
> +
> /**
> * SUBTEST: inject-fault-probe-function-%s
> * Description: inject an error in the injectable function %arg[1] then
> @@ -227,11 +255,13 @@ inject_fault_probe(int fd, const char pci_slot[], const char function_name[])
> ignore_dmesg_errors_from_dut(pci_slot);
> injection_list_add(function_name);
> set_retval(function_name, INJECT_ERRNO);
> + ignore_fail_dump_in_dmesg(function_name, true);
>
> igt_kmod_bind("xe", pci_slot);
>
> err = -errno;
> injection_list_remove(function_name);
> + ignore_fail_dump_in_dmesg(function_name, false);
This is better, though I think there's a stigma against giving a single function a boolean
mode switch like this. I don't know where that stigma came from, but it might be
preferrable for you to just break the "false" case out and run it here directly.
Perhaps something like:
"""
static bool ignore_fail_dump_in_dmesg(const char function_name[])
{
bool ret = !!strstr(function_name, "send_recv");
if (ret) {
injection_list_append("xe_is_injection_active");
set_retval("xe_is_injection_active", INJECT_ERRNO);
}
return ret;
}
...
ignore_dmesg_errors_from_dut(pci_slot);
injection_list_add(function_name);
set_retval(function_name, INJECT_ERRNO);
ignore_dump = ignore_fail_dump_in_dmesg(function_name);
igt_kmod_bind("xe", pci_slot);
err = -errno;
injection_list_remove(function_name);
if (ignore_dump)
injection_list_remove("xe_is_injection_active");
"""
If you do that, you can have my
Reviewed-by: Jonathan Cavitt <jonathan.cavitt at intel.com>
-Jonathan Cavitt
> return err;
> }
> --
> 2.43.0
>
>
More information about the igt-dev
mailing list