[PATCH v5 18/20] drm/xe/svm: Add xe_svm_range_find_or_insert_start()
Himal Prasad Ghimiray
himal.prasad.ghimiray at intel.com
Tue Apr 29 10:42:31 UTC 2025
xe_svm_range_find_or_insert_start() is wrapper function
for drm_gpusvm_range_find_or_insert_start() in xe_svm.c
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray at intel.com>
---
drivers/gpu/drm/xe/xe_svm.c | 24 ++++++++++++++++++++++++
drivers/gpu/drm/xe/xe_svm.h | 8 ++++++++
2 files changed, 32 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c
index 55c5373b7989..8334733b49a6 100644
--- a/drivers/gpu/drm/xe/xe_svm.c
+++ b/drivers/gpu/drm/xe/xe_svm.c
@@ -674,6 +674,30 @@ bool xe_svm_range_validate_and_evict(struct xe_vm *vm,
return ret;
}
+/**
+ * xe_svm_range_find_or_insert_start - Find an address for range find/allocate
+ * @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 0.
+ *
+ * Return: The starting address of the VMA within the range, or 0 if no VMA is found
+ */
+u64 xe_svm_range_find_or_insert_start(struct xe_vm *vm, u64 start, u64 end, struct xe_vma *vma)
+{
+ u64 ret;
+
+ ret = drm_gpusvm_range_find_or_insert_start(&vm->svm.gpusvm,
+ max(start, xe_vma_start(vma)),
+ min(end, xe_vma_end(vma)));
+ return ret == ULONG_MAX ? 0 : ret;
+}
+
#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 e6f71ad0b17b..b23b394d3fd5 100644
--- a/drivers/gpu/drm/xe/xe_svm.h
+++ b/drivers/gpu/drm/xe/xe_svm.h
@@ -87,6 +87,8 @@ bool xe_svm_range_validate_and_evict(struct xe_vm *vm,
struct xe_svm_range *range,
u8 tile_mask, bool devmem_only);
+u64 xe_svm_range_find_or_insert_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
@@ -288,6 +290,12 @@ bool xe_svm_range_validate_and_evict(struct xe_vm *vm,
return false;
}
+static inline
+u64 xe_svm_range_find_or_insert_start(struct xe_vm *vm, u64 addr, u64 end, struct xe_vma *vma)
+{
+ return 0;
+}
+
#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