[Intel-xe] [PATCH] fixup! drm/xe: Memory allocations are tile-based, not GT-based

Matthew Brost matthew.brost at intel.com
Tue Nov 28 11:34:05 UTC 2023


On Tue, Nov 28, 2023 at 09:55:59AM -0800, Brian Welty wrote:
> Fix a missed conversion of GT to tile in vma_is_valid().
> Best is to update the function to take a tile argument.
> 
> This bug causes page faults to not complete successfully from media
> engines and when the PTE had been invalidated prior.
> (Caught by igt at xe_exec_fault_mode and INVALIDATE tests.)
> 
> Signed-off-by: Brian Welty <brian.welty at intel.com>

I believe I have the same change on list too [1].

Anyways let's get yours merged, with that:
Reviewed-by: Matthew Brost <matthew.brost at intel.com>

[1] https://patchwork.freedesktop.org/patch/566225/?series=125608&rev=2

> ---
>  drivers/gpu/drm/xe/xe_gt_pagefault.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_gt_pagefault.c b/drivers/gpu/drm/xe/xe_gt_pagefault.c
> index 03c1ab0ab0ca..1e083dda0679 100644
> --- a/drivers/gpu/drm/xe/xe_gt_pagefault.c
> +++ b/drivers/gpu/drm/xe/xe_gt_pagefault.c
> @@ -64,10 +64,10 @@ static bool access_is_atomic(enum access_type access_type)
>  	return access_type == ACCESS_TYPE_ATOMIC;
>  }
>  
> -static bool vma_is_valid(struct xe_gt *gt, struct xe_vma *vma)
> +static bool vma_is_valid(struct xe_tile *tile, struct xe_vma *vma)
>  {
> -	return BIT(gt_to_tile(gt)->id) & vma->tile_present &&
> -		!(BIT(gt->info.id) & vma->usm.tile_invalidated);
> +	return BIT(tile->id) & vma->tile_present &&
> +		!(BIT(tile->id) & vma->usm.tile_invalidated);
>  }
>  
>  static bool vma_matches(struct xe_vma *vma, u64 page_addr)
> @@ -169,7 +169,7 @@ static int handle_pagefault(struct xe_gt *gt, struct pagefault *pf)
>  	atomic = access_is_atomic(pf->access_type);
>  
>  	/* Check if VMA is valid */
> -	if (vma_is_valid(gt, vma) && !atomic)
> +	if (vma_is_valid(tile, vma) && !atomic)
>  		goto unlock_vm;
>  
>  	/* TODO: Validate fault */
> @@ -215,7 +215,7 @@ static int handle_pagefault(struct xe_gt *gt, struct pagefault *pf)
>  
>  	if (xe_vma_is_userptr(vma))
>  		ret = xe_vma_userptr_check_repin(vma);
> -	vma->usm.tile_invalidated &= ~BIT(gt_to_tile(gt)->id);
> +	vma->usm.tile_invalidated &= ~BIT(tile->id);
>  
>  unlock_dma_resv:
>  	drm_exec_fini(&exec);
> -- 
> 2.38.0
> 


More information about the Intel-xe mailing list