[PATCH v2] tests/intel/xe_fault_injection: Ignore expected errors

Kamil Konieczny kamil.konieczny at linux.intel.com
Fri Nov 15 14:02:43 UTC 2024


Hi Dong,,
On 2024-11-12 at 12:58:55 -0500, Dong, Zhanjun wrote:
> 
> 
> On 2024-11-08 10:58 a.m., Kamil Konieczny wrote:
> > Hi Jonathan,
> > On 2024-11-07 at 19:59:59 +0000, Jonathan Cavitt wrote:
> > > The following errors can be observed when running the xe_fault_injection
> > > subtests:
> > > 
> > > [drm] *ERROR* GT0: GuC init failed with -ENOMEM
> > > [drm] *ERROR* GT0: Failed to initialize uC (-ENOMEM)
> > > probe with driver xe failed with error -12
> > > 
> > > Add these messages to the dmesg ignore regex to the applicable tests
> > > (specifically, all tests for the last error, and all tests that target
> > > GuC subsystems for the first two errors).
> > > 
> > > v2:
> > > - Fix and merge regex (Kamil)
> > > 
> > > Closes: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3343
> > > Signed-off-by: Jonathan Cavitt <jonathan.cavitt at intel.com>
> > > CC: Francois Dugast <francois.dugast at intel.com>
> > > CC: Lucas De Marchi <lucas.demarchi at intel.com>
> > > CC: Matthew Brost <matthew.brost at intel.com>
> > > CC: Rodrigo Vivi <rodrigo.vivi at intel.com>
> > > CC: Michal Wajdeczko <michal.wajdeczko at intel.com>
> > > CC: Kamil Konieczny <kamil.konieczny at linux.intel.com>
> > > ---
> > >   tests/intel/xe_fault_injection.c | 25 +++++++++++++++++++++++++
> > >   1 file changed, 25 insertions(+)
> > > 
> > > diff --git a/tests/intel/xe_fault_injection.c b/tests/intel/xe_fault_injection.c
> > > index d1c8b25307..8b181808ed 100644
> > > --- a/tests/intel/xe_fault_injection.c
> > > +++ b/tests/intel/xe_fault_injection.c
> > > @@ -30,6 +30,30 @@ enum injection_list_action {
> > >   	INJECTION_LIST_REMOVE,
> > >   };
> > > +static bool function_is_part_of_guc(char function_name[])
> > > +{
> > > +	return strstr(function_name, "_guc_") != NULL ||
> > > +	       strstr(function_name, "_uc_") != NULL ||
> > > +	       strstr(function_name, "_wopcm_") != NULL;
> > > +}
> > > +
> > > +static void ignore_faults_in_dmesg(char function_name[])
> > > +{
> > > +	/* Driver probe is expected to fail in all cases, so ignore in igt_runner */
> > > +	char regex[1024] = "probe with driver xe failed with error -12";
> > > +
> > > +	/*
> > > +	 * If GuC module fault is injected, GuC is expected to fail,
> > > +	 * so also ignore GuC init failures in igt_runner.
> > > +	 */
> > > +	if (function_is_part_of_guc(function_name)) {
> > > +		strcat(regex, "|GT[0-9a-fA-F]*: GuC init failed with -ENOMEM");
> > > +		strcat(regex, "|GT[0-9a-fA-F]*: Failed to initialize uC .-ENOMEM");
> I see "." matches left parenthesis, why don't have another "." match for
> right parenthesis? I mean it looks strange when compare regex string:
>    "GT[0-9a-fA-F]*: Failed to initialize uC .-ENOMEM"
> vs
>               "GT0: Failed to initialize uC (-ENOMEM)"

Because using '(' in regex is tricky, also if we ignore last char
we could as well improve regex and just do not require it.

Regards,
Kamil

> 
> Regards,
> Zhanjun Dong
> > 
> > This could be one call to strcat, but it is not a blocker.
> > 
> > Reviewed-by: Kamil Konieczny <kamil.konieczny at linux.intel.com>
> > 
> > > +	}
> > > +
> > > +	igt_emit_ignore_dmesg_regex(regex);
> > > +}
> > > +
> > >   /*
> > >    * The injectable file requires CONFIG_FUNCTION_ERROR_INJECTION in kernel.
> > >    */
> > > @@ -175,6 +199,7 @@ igt_main
> > >   			if (regexec(&regex, line, 2, pmatch, 0) == 0) {
> > >   				strcpy(function_name, line);
> > >   				function_name[pmatch[1].rm_eo - 1] = '\0';
> > > +				ignore_faults_in_dmesg(function_name);
> > >   				igt_dynamic_f("function-%s", function_name)
> > >   					inject_fault_try_bind(fd, pci_slot, function_name);
> > >   			}
> > > -- 
> > > 2.43.0
> > > 
> 


More information about the igt-dev mailing list