[PATCH i-g-t v2 39/66] tests/xe_exec_sip: Check if we reset due to unhandled attention

Grzegorzek, Dominik dominik.grzegorzek at intel.com
Thu Aug 1 19:04:12 UTC 2024


On Tue, 2024-07-30 at 13:44 +0200, Christoph Manszewski wrote:
> From: Dominik Grzegorzek <dominik.grzegorzek at intel.com>
> 
> Add breakpoint-waitsip test which checks whether we reset upon
> unhandled attention.
> 
> Signed-off-by: Dominik Grzegorzek <dominik.grzegorzek at intel.com>
> Cc: Christoph Manszewski <christoph.manszewski at intel.com>
> ---
>  tests/intel/xe_exec_sip.c | 21 +++++++++++++++++++--
>  1 file changed, 19 insertions(+), 2 deletions(-)
> 
> diff --git a/tests/intel/xe_exec_sip.c b/tests/intel/xe_exec_sip.c
> index e52889818..1b0accb3b 100644
> --- a/tests/intel/xe_exec_sip.c
> +++ b/tests/intel/xe_exec_sip.c
> @@ -40,6 +40,7 @@
>  #define SHADER_WAIT 2
>  #define SIP_WRITE 3
>  #define SIP_NULL 4
> +#define SIP_WAIT 5
>  
>  static struct intel_buf *
>  create_fill_buf(int fd, int width, int height, uint8_t color)
> @@ -97,7 +98,9 @@ static struct gpgpu_shader *get_sip(int fd, const int siptype,
>  	switch (siptype) {
>  	case SIP_WRITE:
>  		break;
> -	/* TODO: Add alternative SIP instructions here */
> +	case SIP_WAIT:
> +		gpgpu_shader__wait(sip);
> +		break;
>  	}
>  
>  	gpgpu_shader__end_system_routine(sip, shadertype == SHADER_BREAKPOINT);
> @@ -211,12 +214,20 @@ xe_sysfs_get_job_timeout_ms(int fd, struct drm_xe_engine_class_instance *eci)
>   * SUBTEST: breakpoint-writesip
>   * Description: Test that we enter SIP after hitting breakpoint in shader.
>   *
> + * SUBTEST: breakpoint-waitsip
> + * Description: Test that we reset after seeing the attention without the debugger.
> + *
>   */
>  static void test_sip(int shader, int sip, struct drm_xe_engine_class_instance *eci)
>  {
>  	unsigned int threads = 512;
>  	unsigned int height = max_t(threads, HEIGHT, threads * 2);
>  	unsigned int width = WIDTH;
> +	struct drm_xe_ext_set_property ext = {
> +		.base.name = DRM_XE_EXEC_QUEUE_EXTENSION_SET_PROPERTY,
> +		.property = DRM_XE_EXEC_QUEUE_SET_PROPERTY_EUDEBUG,
> +		.value = DRM_XE_EXEC_QUEUE_EUDEBUG_FLAG_ENABLE,
> +	};
>  	struct timespec ts = { };
>  	uint32_t exec_queue_id, handle, vm_id;
>  	struct intel_bb *ibb;
> @@ -228,6 +239,7 @@ static void test_sip(int shader, int sip, struct drm_xe_engine_class_instance *e
>  	fd = drm_open_driver(DRIVER_XE);
>  	xe_device_get(fd);
>  
> +
Extra new line.

Regards,
Dominik
>  	vm_id = xe_vm_create(fd, 0, 0);
>  
>  	/* Get timeout for job, and add 4s to ensure timeout processes in subtest. */
> @@ -235,7 +247,9 @@ static void test_sip(int shader, int sip, struct drm_xe_engine_class_instance *e
>  	timeout *= NSEC_PER_MSEC;
>  	timeout *= igt_run_in_simulation() ? 10 : 1;
>  
> -	exec_queue_id = xe_exec_queue_create(fd, vm_id, eci, 0);
> +	exec_queue_id = xe_exec_queue_create(fd, vm_id, eci,
> +					     has_debugger(fd) ?
> +					     to_user_pointer(&ext) : 0);
>  	ibb = intel_bb_create_with_context(fd, exec_queue_id, vm_id, NULL, 4096);
>  
>  	igt_nsec_elapsed(&ts);
> @@ -292,6 +306,9 @@ igt_main
>  
>  		test_render_and_compute("breakpoint-writesip", fd, eci)
>  			test_sip(SHADER_BREAKPOINT, SIP_WRITE, eci);
> +
> +		test_render_and_compute("breakpoint-waitsip", fd, eci)
> +			test_sip(SHADER_BREAKPOINT, SIP_WAIT, eci);
>  	}
>  
>  	igt_fixture



More information about the igt-dev mailing list