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

Dong, Zhanjun zhanjun.dong at intel.com
Tue Nov 19 14:31:28 UTC 2024



On 2024-11-15 9:02 a.m., Kamil Konieczny wrote:
> 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.
I see, my first impression is a missing character, as long as not the 
case, I'm OK.

Regards,
Zhanjun Dong

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