[PATCH v6 18/20] drm/xe/svm: Add xe_svm_find_vma_start() helper
Matthew Brost
matthew.brost at intel.com
Wed Apr 30 16:35:30 UTC 2025
On Wed, Apr 30, 2025 at 05:49:10PM +0530, Himal Prasad Ghimiray wrote:
> Add helper xe_svm_find_vma_start() function to determine start of cpu
> vma in input range.
>
> 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_svm.c | 22 ++++++++++++++++++++++
> drivers/gpu/drm/xe/xe_svm.h | 8 ++++++++
> 2 files changed, 30 insertions(+)
>
> diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c
> index fff3a279e232..727c393d19b8 100644
> --- a/drivers/gpu/drm/xe/xe_svm.c
> +++ b/drivers/gpu/drm/xe/xe_svm.c
> @@ -684,6 +684,28 @@ bool xe_svm_range_validate(struct xe_vm *vm,
> return ret;
> }
>
> +/**
> + * xe_svm_find_vma_start - Find start of CPU VMA
> + * @vm: xe_vm pointer
> + * @start: start address
> + * @end: end address
> + * @vma: Pointer to struct xe_vma
> + *
> + *
> + * This function searches for a cpu vma, within the specified
> + * range [start, end] in the given VM. It adjusts the range based on the
> + * xe_vma start and end addresses. If no cpu VMA is found, it returns ULONG_MAX.
> + *
> + * Return: The starting address of the VMA within the range,
> + * or ULONG_MAX if no VMA is found
> + */
> +u64 xe_svm_find_vma_start(struct xe_vm *vm, u64 start, u64 end, struct xe_vma *vma)
> +{
> + return drm_gpusvm_find_vma_start(&vm->svm.gpusvm,
> + max(start, xe_vma_start(vma)),
> + min(end, xe_vma_end(vma)));
> +}
> +
> #if IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR)
> static struct xe_vram_region *tile_to_vr(struct xe_tile *tile)
> {
> diff --git a/drivers/gpu/drm/xe/xe_svm.h b/drivers/gpu/drm/xe/xe_svm.h
> index 3f8c82f9c363..fe9f6fcaeb3a 100644
> --- a/drivers/gpu/drm/xe/xe_svm.h
> +++ b/drivers/gpu/drm/xe/xe_svm.h
> @@ -89,6 +89,8 @@ bool xe_svm_range_validate(struct xe_vm *vm,
> struct xe_svm_range *range,
> u8 tile_mask, bool devmem_preferred);
>
> +u64 xe_svm_find_vma_start(struct xe_vm *vm, u64 addr, u64 end, struct xe_vma *vma);
> +
> /**
> * xe_svm_range_has_dma_mapping() - SVM range has DMA mapping
> * @range: SVM range
> @@ -295,6 +297,12 @@ bool xe_svm_range_validate(struct xe_vm *vm,
> return false;
> }
>
> +static inline
> +u64 xe_svm_find_vma_start(struct xe_vm *vm, u64 addr, u64 end, struct xe_vma *vma)
> +{
> + return ULONG_MAX;
> +}
> +
> #define xe_svm_assert_in_notifier(...) do {} while (0)
> #define xe_svm_range_has_dma_mapping(...) false
>
> --
> 2.34.1
>
More information about the Intel-xe
mailing list