On Thu, Dec 11, 2025 at 05:59:07PM +0100, Thomas Hellström wrote:
> Use drm_gpusvm_scan_mm() to avoid unnecessarily calling into
> drm_pagemap_populate_mm();
> 
> v3:
> - New patch.
> 
> Signed-off-by: Thomas Hellström <[email protected]>
> ---
>  drivers/gpu/drm/xe/xe_svm.c | 14 +++++++++++++-
>  1 file changed, 13 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c
> index 2fa73143fcd5..22281d69e26a 100644
> --- a/drivers/gpu/drm/xe/xe_svm.c
> +++ b/drivers/gpu/drm/xe/xe_svm.c
> @@ -1625,11 +1625,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;

LGTM, but I suggest adding something like CONFIG_DRM_XE_DEBUG_VM to the
SVM code in a follow-up. We get spammed a ton just running
xe_exec_system_allocator, with a reasonable DRM printk debug value.
IMO, it’s best to hide most of the debug in this function behind a
Kconfig. CONFIG_DRM_XE_DEBUG_VM would also select the SVM level debug.

Anyways:
Reviewed-by: Matthew Brost <[email protected]>

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

Reply via email to