[PATCH] drm/xe: Allow fault injection in exec queue IOCTLs

Pottumuttu, Sai Teja sai.teja.pottumuttu at intel.com
Thu Mar 6 09:51:49 UTC 2025


On 05-03-2025 20:36, Francois Dugast wrote:
> Use fault injection infrastructure to allow specific functions to
> be configured over debugfs for failing during the execution of
> xe_exec_queue_create_ioctl(). xe_exec_queue_destroy_ioctl() and
> xe_exec_queue_get_property_ioctl() are not considered as there is
> no unwinding code to test with fault injection.
> 
> This allows more thorough testing from user space by going through
> code paths for error handling and unwinding which cannot be reached
> by simply injecting errors in IOCTL arguments. This can help
> increase code robustness.
> 
> The corresponding IGT series is:
> https://patchwork.freedesktop.org/series/144138/
> 
> Signed-off-by: Francois Dugast <francois.dugast at intel.com>

LGTM,

Reviewed-by: Sai Teja Pottumuttu <sai.teja.pottumuttu at intel.com>

> ---
>   drivers/gpu/drm/xe/xe_exec_queue.c      | 1 +
>   drivers/gpu/drm/xe/xe_hw_engine_group.c | 1 +
>   drivers/gpu/drm/xe/xe_vm.c              | 1 +
>   3 files changed, 3 insertions(+)
> 
> diff --git a/drivers/gpu/drm/xe/xe_exec_queue.c b/drivers/gpu/drm/xe/xe_exec_queue.c
> index 7c5c003d3c40..606922d9dd73 100644
> --- a/drivers/gpu/drm/xe/xe_exec_queue.c
> +++ b/drivers/gpu/drm/xe/xe_exec_queue.c
> @@ -203,6 +203,7 @@ struct xe_exec_queue *xe_exec_queue_create(struct xe_device *xe, struct xe_vm *v
>   	__xe_exec_queue_free(q);
>   	return ERR_PTR(err);
>   }
> +ALLOW_ERROR_INJECTION(xe_exec_queue_create, ERRNO);
>   
>   struct xe_exec_queue *xe_exec_queue_create_class(struct xe_device *xe, struct xe_gt *gt,
>   						 struct xe_vm *vm,
> diff --git a/drivers/gpu/drm/xe/xe_hw_engine_group.c b/drivers/gpu/drm/xe/xe_hw_engine_group.c
> index 82750520a90a..2d68c5b5262a 100644
> --- a/drivers/gpu/drm/xe/xe_hw_engine_group.c
> +++ b/drivers/gpu/drm/xe/xe_hw_engine_group.c
> @@ -178,6 +178,7 @@ int xe_hw_engine_group_add_exec_queue(struct xe_hw_engine_group *group, struct x
>   	up_write(&group->mode_sem);
>   	return err;
>   }
> +ALLOW_ERROR_INJECTION(xe_hw_engine_group_add_exec_queue, ERRNO);
>   
>   /**
>    * xe_hw_engine_group_del_exec_queue() - Delete an exec queue from a hw engine group
> diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
> index 3dbd3d38008a..338d98533fae 100644
> --- a/drivers/gpu/drm/xe/xe_vm.c
> +++ b/drivers/gpu/drm/xe/xe_vm.c
> @@ -270,6 +270,7 @@ int xe_vm_add_compute_exec_queue(struct xe_vm *vm, struct xe_exec_queue *q)
>   
>   	return err;
>   }
> +ALLOW_ERROR_INJECTION(xe_vm_add_compute_exec_queue, ERRNO);
>   
>   /**
>    * xe_vm_remove_compute_exec_queue() - Remove compute exec queue from VM


More information about the Intel-xe mailing list