[igt-dev] [PATCH i-g-t] tests/intel/xe_waitfence: add positive subtest with eci engine provided

Kamil Konieczny kamil.konieczny at linux.intel.com
Wed Nov 15 17:09:13 UTC 2023


Hi Daniel,
On 2023-11-15 at 16:56:26 +0100, Daniel Mrzyglod wrote:

[PATCH i-g-t] tests/intel/xe_waitfence: add positive subtest with eci engine provided

imho better:

tests/intel/xe_waitfence: add subtest with provided engine class instance

> Postive tests to check XE_WAIT_USER_FENCE ioctl where
---- ^ ------ ^
s/Postive tests/Positive test/ (as you added only one new subtest).

> engine class instance is provided
---------------------------------- ^
Add dot at end of sentence.

> 
> Signed-off-by: Daniel Mrzyglod <daniel.t.mrzyglod at intel.com>
> ---
>  tests/intel/xe_waitfence.c | 37 +++++++++++++++++++++++++++++++++++++
>  1 file changed, 37 insertions(+)
> 
> diff --git a/tests/intel/xe_waitfence.c b/tests/intel/xe_waitfence.c
> index ac7e99dde..dcf2908d6 100644
> --- a/tests/intel/xe_waitfence.c
> +++ b/tests/intel/xe_waitfence.c
> @@ -37,9 +37,30 @@ static void do_bind(int fd, uint32_t vm, uint32_t bo, uint64_t offset,
>  	xe_vm_bind_async(fd, vm, 0, bo, offset, addr, size, sync, 1);
>  }
>  
> +static int xe_wait_ufence_hasengine(int fd, uint64_t *addr, uint64_t value,
------------- ^ ---------------------- ^
Could you change this name? It is not library function so something like:

wait_with_engine_class or wait_with_eci would be better.


> +		       struct drm_xe_engine_class_instance *eci,
-------------- ^
> +		       int64_t timeout)
-------------- ^
Align this after opening '(' (see other function here).

> +{
> +	struct drm_xe_wait_user_fence wait = {
> +		.addr = to_user_pointer(addr),
> +		.op = DRM_XE_UFENCE_WAIT_EQ,
> +		.flags = !eci ? 0 : DRM_XE_UFENCE_WAIT_ABSTIME,
> +		.value = value,
> +		.mask = DRM_XE_UFENCE_WAIT_U64,
> +		.timeout = timeout,
> +		.num_engines = eci ? 1 :0,
------------------------------- ^
Add space after ':'.

> +		.instances = eci ? to_user_pointer(eci) : 0,
> +	};
> +
> +	igt_assert_eq(igt_ioctl(fd, DRM_IOCTL_XE_WAIT_USER_FENCE, &wait), 0);
> +
> +	return wait.timeout;
> +}
> +
>  enum waittype {
>  	RELTIME,
>  	ABSTIME,
> +	HASENGINE,
>  };
>  
>  /**
> @@ -50,10 +71,16 @@ enum waittype {
>   * SUBTEST: abstime
>   * Description: Check basic waitfences functionality with timeout
>   *              passed as absolute time in nanoseconds
> + *
> + * SUBTEST: hasengine
> + * Description: Check basic waitfences functionality with timeout
> + *              passed as relative time in nanoseconds and provide engine class
> + *              instance
>   */
>  static void
>  waitfence(int fd, enum waittype wt)
>  {
> +	struct drm_xe_engine_class_instance *eci;
>  	uint32_t bo_1;
>  	uint32_t bo_2;
>  	uint32_t bo_3;
> @@ -83,6 +110,11 @@ waitfence(int fd, enum waittype wt)
>  		timeout = xe_wait_ufence(fd, &wait_fence, 7, NULL, MS_TO_NS(10));
>  		igt_debug("wait type: RELTIME - timeout: %ld, timeout left: %ld\n",
>  			  MS_TO_NS(10), timeout);
> +	} else if (wt == HASENGINE) {
> +		eci = xe_hw_engine(fd, 1);
> +		timeout = xe_wait_ufence_hasengine(fd, &wait_fence, 7, eci, MS_TO_NS(10));
> +		igt_debug("wait type: RELTIME - timeout: %ld, timeout left: %ld\n",
> +				  MS_TO_NS(10), timeout);
>  	} else {
>  		struct timespec ts;
>  		int64_t current, signalled;
> @@ -192,6 +224,8 @@ invalid_engine(int fd)
>  }
>  
>  
> +
> +

Remove this two empyt lines.

Regards,
Kamil

>  igt_main
>  {
>  	int fd;
> @@ -205,6 +239,9 @@ igt_main
>  	igt_subtest("abstime")
>  		waitfence(fd, ABSTIME);
>  
> +	igt_subtest("hasengine")
> +		waitfence(fd, HASENGINE);
> +
>  	igt_subtest("invalid-flag")
>  		invalid_flag(fd);
>  
> -- 
> 2.41.0
> 


More information about the igt-dev mailing list