[PATCH v5 13/23] drm/xe/svm: Support DRM_XE_SVM_ATTR_PAT memory attribute

Ghimiray, Himal Prasad himal.prasad.ghimiray at intel.com
Wed Jul 23 16:55:05 UTC 2025


Need change in commit
s/DRM_XE_SVM_ATTR_PAT/DRM_XE_SVM_MEM_RANGE_ATTR_PAT
will fix in next version.

On 22-07-2025 19:05, Himal Prasad Ghimiray wrote:
> This attributes sets the pat_index for the svm used vma range, which is
> utilized to ascertain the coherence.
> 
> v2 (Matthew Brost)
> - Pat index sanity check
> 
> Cc: Matthew Brost <matthew.brost at intel.com>
> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray at intel.com>
> Reviewed-by: Matthew Brost <matthew.brost at intel.com>
> ---
>   drivers/gpu/drm/xe/xe_vm_madvise.c | 25 +++++++++++++++++++++++--
>   1 file changed, 23 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_vm_madvise.c b/drivers/gpu/drm/xe/xe_vm_madvise.c
> index 17959257ee1d..1dc4d19a5f2a 100644
> --- a/drivers/gpu/drm/xe/xe_vm_madvise.c
> +++ b/drivers/gpu/drm/xe/xe_vm_madvise.c
> @@ -9,6 +9,7 @@
>   #include <drm/xe_drm.h>
>   
>   #include "xe_bo.h"
> +#include "xe_pat.h"
>   #include "xe_pt.h"
>   #include "xe_svm.h"
>   
> @@ -111,7 +112,13 @@ static void madvise_pat_index(struct xe_device *xe, struct xe_vm *vm,
>   			      struct xe_vma **vmas, int num_vmas,
>   			      struct drm_xe_madvise *op)
>   {
> -	/* Implementation pending */
> +	int i;
> +
> +	xe_assert(vm->xe, op->type == DRM_XE_MEM_RANGE_ATTR_PAT);
> +
> +	for (i = 0; i < num_vmas; i++)
> +		vmas[i]->attr.pat_index = op->pat_index.val;
> +
>   }
>   
>   typedef void (*madvise_func)(struct xe_device *xe, struct xe_vm *vm,
> @@ -219,8 +226,22 @@ static bool madvise_args_are_sane(struct xe_device *xe, const struct drm_xe_madv
>   
>   		break;
>   	case DRM_XE_MEM_RANGE_ATTR_PAT:
> -		/*TODO: Add valid pat check */
> +	{
> +		u16 coh_mode = xe_pat_index_get_coh_mode(xe, args->pat_index.val);
> +
> +		if (XE_IOCTL_DBG(xe, !coh_mode))
> +			return false;
> +
> +		if (XE_WARN_ON(coh_mode > XE_COH_AT_LEAST_1WAY))
> +			return false;
> +
> +		if (XE_IOCTL_DBG(xe, args->pat_index.pad))
> +			return false;
> +
> +		if (XE_IOCTL_DBG(xe, args->pat_index.reserved))
> +			return false;
>   		break;
> +	}
>   	default:
>   		if (XE_IOCTL_DBG(xe, 1))
>   			return false;



More information about the Intel-xe mailing list