[PATCH i-g-t] tests/intel/xe_exec_reset: Skip syncobj_wait during the gt_reset

Matthew Auld matthew.auld at intel.com
Fri Sep 27 10:22:23 UTC 2024


On 27/09/2024 11:05, Bernatowicz, Marcin wrote:
> 
> 
> On 9/25/2024 12:31 PM, Bommu Krishnaiah wrote:
>> From: "Bommu Krishnaiah" <krishnaiah.bommu at intel.com>
>>
>> Skipping the syncobj_wait for the workloads which is submitted
>> before gt reset, since After gt reset There is no expectation
>> from the hardware/GuC/KMD that the workload will then
>> re-execute and complete.
>>
>> Signed-off-by: Bommu Krishnaiah <krishnaiah.bommu at intel.com>
>> Cc: Stuart Summers <stuart.summers at intel.com>
>> ---
>>   tests/intel/xe_exec_reset.c | 8 +++++---
>>   1 file changed, 5 insertions(+), 3 deletions(-)
>>
>> diff --git a/tests/intel/xe_exec_reset.c b/tests/intel/xe_exec_reset.c
>> index b5d5f43ea..b1a7548c6 100644
>> --- a/tests/intel/xe_exec_reset.c
>> +++ b/tests/intel/xe_exec_reset.c
>> @@ -263,8 +263,9 @@ test_balancer(int fd, int gt, int class, int 
>> n_exec_queues, int n_execs,
>>       }
>>       for (i = 0; i < n_exec_queues && n_execs; i++)
>> -        igt_assert(syncobj_wait(fd, &syncobjs[i], 1, INT64_MAX, 0,
>> -                    NULL));
>> +        if (!(flags & GT_RESET))
>> +            igt_assert(syncobj_wait(fd, &syncobjs[i], 1, INT64_MAX,
> 
> What happens when the user waits on syncobj in case of GT reset ?
> Maybe there is no expectation that there will be re-execute, but 
> shouldn't the syncobj be notified or a timeout hit ?

Yeah, this sounds like KMD bug. Expectation is that dma fences should 
eventually signal no matter what, and in a reasonable amount of time.

Possibly relevant fix (very recently merged): 
https://patchwork.freedesktop.org/patch/605681/?series=136463&rev=1

> 
>> +                        0, NULL));
>>       igt_assert(syncobj_wait(fd, &sync[0].handle, 1, INT64_MAX, 0, 
>> NULL));
>>       sync[0].flags |= DRM_XE_SYNC_FLAG_SIGNAL;
>> @@ -410,7 +411,8 @@ test_legacy_mode(int fd, struct 
>> drm_xe_engine_class_instance *eci,
>>       }
>>       for (i = 0; i < n_exec_queues && n_execs; i++)
>> -        igt_assert(syncobj_wait(fd, &syncobjs[i], 1, INT64_MAX, 0,
>> +        if (!(flags & GT_RESET))
>> +            igt_assert(syncobj_wait(fd, &syncobjs[i], 1, INT64_MAX, 0,
>>                       NULL));
>>       igt_assert(syncobj_wait(fd, &sync[0].handle, 1, INT64_MAX, 0, 
>> NULL));
> 


More information about the igt-dev mailing list