[PATCH] drm/xe: Assume large page size if VMA not yet bound

Rodrigo Vivi rodrigo.vivi at intel.com
Mon Feb 5 23:23:14 UTC 2024


On Mon, Feb 05, 2024 at 03:17:14PM -0800, Matthew Brost wrote:
> The calculation to determine max page size of a VMA during a REMAP
> operations assumes the VMA has been bound. This assumption is not true
> if the VMA is from an eariler operation in an array of binds. If a VMA
> has not been bound use the maximum page size which will ensure the
> previous / next REMAP operations are not incorrectly skipped.
> 
> Fixes: 8f33b4f054fc ("drm/xe: Avoid doing rebinds")
> Signed-off-by: Matthew Brost <matthew.brost at intel.com>
> ---
>  drivers/gpu/drm/xe/xe_vm.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
> index 7e29b816c4d4..ed594fa2f8da 100644
> --- a/drivers/gpu/drm/xe/xe_vm.c
> +++ b/drivers/gpu/drm/xe/xe_vm.c
> @@ -2200,8 +2200,10 @@ static u64 xe_vma_max_pte_size(struct xe_vma *vma)
>  		return SZ_1G;
>  	else if (vma->gpuva.flags & XE_VMA_PTE_2M)
>  		return SZ_2M;
> +	else if (vma->gpuva.flags & XE_VMA_PTE_4K)
> +		return SZ_4K;

I wonder if we should also have something like:
else if (vma->gpuva.flags & XE_VMA_PTE_1G)
     return SZ_1G;

drm_err("Something wrong with gpuva flags, using max known page anyway\n");
return SZ_1G;

but up to you...

Reviewed-by: Rodrigo Vivi <rodrigo.vivi at intel.com>

>  
> -	return SZ_4K;
> +	return SZ_1G;	/* Uninitialized, used max size */
>  }
>  
>  static u64 xe_vma_set_pte_size(struct xe_vma *vma, u64 size)
> -- 
> 2.34.1
> 


More information about the Intel-xe mailing list