[igt-dev] [PATCH i-g-t] tests/intel: Do not error on -ECANCELED in xe_vm tests

Kamil Konieczny kamil.konieczny at linux.intel.com
Thu Nov 23 08:46:17 UTC 2023


Hi Jonathan,
On 2023-11-16 at 15:43:12 -0800, Jonathan Cavitt wrote:
> In the hammer class of unbind tests in xe_vm, a thread is created that
> submits jobs to an exec queue initialized on a VM page that is later
> unbound.  Because of the unbind, a job is timing out and marking the
> exec queue as "banned", which causes all subsequent job submissions to
> report as -ECANCELED (-125).
> 
> This is expected behavior.  The test should not fail when this is the
> case, so use __xe_exec instead of the error-sensitive xe_exec in
> hammer_thread, ignoring -ECANCELED and catching all other errors
> manually.
> 
> Suggested-by: Matthew Brost <matthew.brost at intel.com>
> Signed-off-by: Jonathan Cavitt <jonathan.cavitt at intel.com>

Thank you for explanation,
Reviewed-by: Kamil Konieczny <kamil.konieczny at linux.intel.com>

> ---
>  tests/intel/xe_vm.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/tests/intel/xe_vm.c b/tests/intel/xe_vm.c
> index f1ccd6c21d..d16bb45892 100644
> --- a/tests/intel/xe_vm.c
> +++ b/tests/intel/xe_vm.c
> @@ -1118,6 +1118,7 @@ static void *hammer_thread(void *tdata)
>  	uint32_t exec_queue = xe_exec_queue_create(t->fd, t->vm, t->eci, 0);
>  	int b;
>  	int i = 0;
> +	int err = 0;
----------- ^^^

You do not need setting it to zero here, as err get value
in both if-else paths. It is minor and I will merge it with this.

Regards,
Kamil

>  
>  	sync[0].handle = syncobj_create(t->fd, 0);
>  	pthread_barrier_wait(t->barrier);
> @@ -1140,14 +1141,15 @@ static void *hammer_thread(void *tdata)
>  		exec.address = batch_addr;
>  		if (i % 32) {
>  			exec.num_syncs = 0;
> -			xe_exec(t->fd, &exec);
> +			err = __xe_exec(t->fd, &exec);
>  		} else {
>  			exec.num_syncs = 1;
> -			xe_exec(t->fd, &exec);
> +			err = __xe_exec(t->fd, &exec);
>  			igt_assert(syncobj_wait(t->fd, &sync[0].handle, 1,
>  						INT64_MAX, 0, NULL));
>  			syncobj_reset(t->fd, &sync[0].handle, 1);
>  		}
> +		igt_assert(!err || err == -ECANCELED);
>  		++i;
>  	}
>  
> -- 
> 2.25.1
> 


More information about the igt-dev mailing list