[PATCH 1/4] drm/xe: Add uapi for dumpable bos

Souza, Jose jose.souza at intel.com
Fri Jan 12 17:39:54 UTC 2024


On Fri, 2024-01-12 at 13:41 +0100, Maarten Lankhorst wrote:
> Add the flag XE_VM_BIND_FLAG_DUMPABLE to notify devcoredump that this
> mapping should be dumped.
> 
> This is not hooked up, but the uapi should be ready before merging.
> 
> It's likely easier to dump the contents of the bo's at devcoredump
> readout time, so it's better if the bos will stay unmodified after
> a hang. The NEEDS_CPU_MAPPING flag is removed as requirement.

I think that it will also need a uAPI to query if DRM_XE_VM_BIND_FLAG_DUMPABLE is supported by running Xe KMD version.

> 
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
> ---
>  drivers/gpu/drm/xe/xe_vm.c | 8 +++-----
>  include/uapi/drm/xe_drm.h  | 1 +
>  2 files changed, 4 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
> index a7e7a0b24099..0a3b9c0ad772 100644
> --- a/drivers/gpu/drm/xe/xe_vm.c
> +++ b/drivers/gpu/drm/xe/xe_vm.c
> @@ -2687,12 +2687,13 @@ static int vm_bind_ioctl_ops_execute(struct xe_vm *vm,
>  #ifdef TEST_VM_ASYNC_OPS_ERROR
>  #define SUPPORTED_FLAGS	\
>  	(FORCE_ASYNC_OP_ERROR | DRM_XE_VM_BIND_FLAG_READONLY | \
> -	 DRM_XE_VM_BIND_FLAG_IMMEDIATE | DRM_XE_VM_BIND_FLAG_NULL | 0xffff)
> +	 DRM_XE_VM_BIND_FLAG_IMMEDIATE | DRM_XE_VM_BIND_FLAG_NULL | \
> +	 DRM_XE_VM_BIND_FLAG_DUMPABLE | 0xffff)
>  #else
>  #define SUPPORTED_FLAGS	\
>  	(DRM_XE_VM_BIND_FLAG_READONLY | \
>  	 DRM_XE_VM_BIND_FLAG_IMMEDIATE | DRM_XE_VM_BIND_FLAG_NULL | \
> -	 0xffff)
> +	 DRM_XE_VM_BIND_FLAG_DUMPABLE | 0xffff)
>  #endif
>  #define XE_64K_PAGE_MASK 0xffffull
>  #define ALL_DRM_XE_SYNCS_FLAGS (DRM_XE_SYNCS_FLAG_WAIT_FOR_OP)
> @@ -2919,9 +2920,6 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
>  		u16 pat_index = bind_ops[i].pat_index;
>  		u16 coh_mode;
>  
> -		if (!obj)
> -			continue;
> -
>  		gem_obj = drm_gem_object_lookup(file, obj);
>  		if (XE_IOCTL_DBG(xe, !gem_obj)) {
>  			err = -ENOENT;
> diff --git a/include/uapi/drm/xe_drm.h b/include/uapi/drm/xe_drm.h
> index 50bbea0992d9..0f975f57f3e5 100644
> --- a/include/uapi/drm/xe_drm.h
> +++ b/include/uapi/drm/xe_drm.h
> @@ -930,6 +930,7 @@ struct drm_xe_vm_bind_op {
>  #define DRM_XE_VM_BIND_FLAG_READONLY	(1 << 0)
>  #define DRM_XE_VM_BIND_FLAG_IMMEDIATE	(1 << 1)
>  #define DRM_XE_VM_BIND_FLAG_NULL	(1 << 2)
> +#define DRM_XE_VM_BIND_FLAG_DUMPABLE	(1 << 3)
>  	/** @flags: Bind flags */
>  	__u32 flags;
>  



More information about the Intel-xe mailing list