Commit 0471ed20 authored by Thomas Hellström's avatar Thomas Hellström
Browse files

drm/xe: Use drm_gpusvm_scan_mm()



Use drm_gpusvm_scan_mm() to avoid unnecessarily calling into
drm_pagemap_populate_mm();

v3:
- New patch.

Signed-off-by: default avatarThomas Hellström <thomas.hellstrom@linux.intel.com>
Reviewed-by: default avatarMatthew Brost <matthew.brost@intel.com>
Reviewed-by: default avatarHimal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Link: https://patch.msgid.link/20251219113320.183860-22-thomas.hellstrom@linux.intel.com
parent f1d08a58
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -1590,11 +1590,23 @@ struct drm_pagemap *xe_vma_resolve_pagemap(struct xe_vma *vma, struct xe_tile *t
int xe_svm_alloc_vram(struct xe_svm_range *range, const struct drm_gpusvm_ctx *ctx,
		      struct drm_pagemap *dpagemap)
{
	struct xe_device *xe = range_to_vm(&range->base)->xe;
	struct xe_vm *vm = range_to_vm(&range->base);
	enum drm_gpusvm_scan_result migration_state;
	struct xe_device *xe = vm->xe;

	xe_assert(range_to_vm(&range->base)->xe, range->base.pages.flags.migrate_devmem);
	range_debug(range, "ALLOCATE VRAM");

	migration_state = drm_gpusvm_scan_mm(&range->base,
					     xe_svm_private_page_owner(vm, false),
					     dpagemap->pagemap);

	if (migration_state == DRM_GPUSVM_SCAN_EQUAL) {
		if (IS_ENABLED(CONFIG_DRM_XE_DEBUG_VM))
			drm_dbg(dpagemap->drm, "Already migrated!\n");
		return 0;
	}

	if (IS_ENABLED(CONFIG_DRM_XE_DEBUG_VM))
		drm_dbg(&xe->drm, "Request migration to device memory on \"%s\".\n",
			dpagemap->drm->unique);