[PATCH i-g-t v2 1/2] lib/xe/xe_ioctl: add __xe_exec_sync() helper

Bernatowicz, Marcin marcin.bernatowicz at linux.intel.com
Wed Dec 13 12:00:45 UTC 2023


Hi,

On 12/12/2023 6:48 PM, Lukasz Laguna wrote:
> Add non-asserting variant of xe_exec_sync().
> 
> Signed-off-by: Lukasz Laguna <lukasz.laguna at intel.com>
> ---
>   lib/xe/xe_ioctl.c | 12 +++++++++---
>   lib/xe/xe_ioctl.h |  2 ++
>   2 files changed, 11 insertions(+), 3 deletions(-)
> 
> diff --git a/lib/xe/xe_ioctl.c b/lib/xe/xe_ioctl.c
> index cdad3d7e2..b5cd3ae35 100644
> --- a/lib/xe/xe_ioctl.c
> +++ b/lib/xe/xe_ioctl.c
> @@ -448,8 +448,8 @@ void xe_exec(int fd, struct drm_xe_exec *exec)
>   	igt_assert_eq(__xe_exec(fd, exec), 0);
>   }
>   
> -void xe_exec_sync(int fd, uint32_t exec_queue, uint64_t addr,
> -		  struct drm_xe_sync *sync, uint32_t num_syncs)
> +int __xe_exec_sync(int fd, uint32_t exec_queue, uint64_t addr,
> +		   struct drm_xe_sync *sync, uint32_t num_syncs)
>   {
>   	struct drm_xe_exec exec = {
>   		.exec_queue_id = exec_queue,
> @@ -459,7 +459,13 @@ void xe_exec_sync(int fd, uint32_t exec_queue, uint64_t addr,
>   		.num_batch_buffer = 1,
>   	};
>   
> -	igt_assert_eq(__xe_exec(fd, &exec), 0);
> +	return __xe_exec(fd, &exec);
> +}
> +
> +void xe_exec_sync(int fd, uint32_t exec_queue, uint64_t addr,
> +		    struct drm_xe_sync *sync, uint32_t num_syncs)
> +{
> +	igt_assert_eq(__xe_exec_sync(fd, exec_queue, addr, sync, num_syncs), 0);
>   }

To be honest, I'm a bit confused with the xe_exec_sync naming.

sync typically refers to synchronous operations, which are operations 
that block further execution until they have finished, so I would
actually expect the xe_exec_wait behavior.

>   
>   void xe_exec_wait(int fd, uint32_t exec_queue, uint64_t addr)
> diff --git a/lib/xe/xe_ioctl.h b/lib/xe/xe_ioctl.h
> index c8d46fb29..3679ce66b 100644
> --- a/lib/xe/xe_ioctl.h
> +++ b/lib/xe/xe_ioctl.h
> @@ -88,6 +88,8 @@ void *xe_bo_map(int fd, uint32_t bo, size_t size);
>   void *xe_bo_mmap_ext(int fd, uint32_t bo, size_t size, int prot);
>   int __xe_exec(int fd, struct drm_xe_exec *exec);
>   void xe_exec(int fd, struct drm_xe_exec *exec);
> +int __xe_exec_sync(int fd, uint32_t exec_queue, uint64_t addr,
> +		   struct drm_xe_sync *sync, uint32_t num_syncs);
>   void xe_exec_sync(int fd, uint32_t exec_queue, uint64_t addr,
>   		  struct drm_xe_sync *sync, uint32_t num_syncs);
>   void xe_exec_wait(int fd, uint32_t exec_queue, uint64_t addr);


More information about the igt-dev mailing list