]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/xe/vm: Add a couple of VM debug printouts
authorThomas Hellström <thomas.hellstrom@linux.intel.com>
Fri, 19 Dec 2025 11:33:13 +0000 (12:33 +0100)
committerThomas Hellström <thomas.hellstrom@linux.intel.com>
Tue, 23 Dec 2025 09:00:48 +0000 (10:00 +0100)
Add debug printouts that are valueable for pagemap prefetch,
migration and page collection.

v2:
- Add additional debug prinouts around migration and page collection.
- Require CONFIG_DRM_XE_DEBUG_VM.

Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com> #v1
Link: https://patch.msgid.link/20251219113320.183860-18-thomas.hellstrom@linux.intel.com
drivers/gpu/drm/xe/xe_svm.c
drivers/gpu/drm/xe/xe_vm.c

index c4997ab4e029ce2286b5a7655905c0687e8de2b0..43af813276b8059b4e108a4fc0b4cf349a3b71f4 100644 (file)
@@ -1271,6 +1271,10 @@ get_pages:
        if (err) {
                range_debug(range, "PAGE FAULT - FAIL PAGE COLLECT");
                goto out;
+       } else if (IS_ENABLED(CONFIG_DRM_XE_DEBUG_VM)) {
+               drm_dbg(&vm->xe->drm, "After page collect data location is %sin \"%s\".\n",
+                       xe_svm_range_has_pagemap(range, dpagemap) ? "" : "NOT ",
+                       dpagemap ? dpagemap->drm->unique : "System.");
        }
 
        xe_svm_range_get_pages_us_stats_incr(gt, range, get_pages_start);
@@ -1566,9 +1570,15 @@ 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;
+
        xe_assert(range_to_vm(&range->base)->xe, range->base.pages.flags.migrate_devmem);
        range_debug(range, "ALLOCATE VRAM");
 
+       if (IS_ENABLED(CONFIG_DRM_XE_DEBUG_VM))
+               drm_dbg(&xe->drm, "Request migration to device memory on \"%s\".\n",
+                       dpagemap->drm->unique);
+
        return drm_pagemap_populate_mm(dpagemap, xe_svm_range_start(range),
                                       xe_svm_range_end(range),
                                       range->base.gpusvm->mm,
index 808b44fb0569121cf03ed5b6500c9634652ebad2..a07d8b53de66f0e8a37728d54818b7c035c2add2 100644 (file)
@@ -2931,6 +2931,13 @@ static int prefetch_ranges(struct xe_vm *vm, struct xe_vma_op *op)
                if (!dpagemap)
                        xe_svm_range_migrate_to_smem(vm, svm_range);
 
+               if (IS_ENABLED(CONFIG_DRM_XE_DEBUG_VM)) {
+                       drm_dbg(&vm->xe->drm,
+                               "Prefetch pagemap is %s start 0x%016lx end 0x%016lx\n",
+                               dpagemap ? dpagemap->drm->unique : "system",
+                               xe_svm_range_start(svm_range), xe_svm_range_end(svm_range));
+               }
+
                if (xe_svm_range_needs_migrate_to_vram(svm_range, vma, dpagemap)) {
                        err = xe_svm_alloc_vram(svm_range, &ctx, dpagemap);
                        if (err) {