]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/xe: Pre-allocate system memory for pinned external bos in the pm notfier
authorThomas Hellström <thomas.hellstrom@linux.intel.com>
Thu, 18 Sep 2025 09:22:06 +0000 (11:22 +0200)
committerThomas Hellström <thomas.hellstrom@linux.intel.com>
Mon, 22 Sep 2025 12:30:06 +0000 (14:30 +0200)
Similarly to what we do for other pinned bos, pre-allocate
system memory for pinned external bos in the pm notifier,
where swapping is still possible.

This hasn't been needed until now when we're about to allow
pinning of exernal VRAM bos.

Cc: Matthew Auld <matthew.auld@intel.com>
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link: https://lore.kernel.org/r/20250918092207.54472-3-thomas.hellstrom@linux.intel.com
drivers/gpu/drm/xe/xe_bo_evict.c

index d5dbc51e8612d87687becfc620316a66ffe9af91..1a12675b2ea91420e1c1557706164a3ec627dff3 100644 (file)
@@ -73,6 +73,11 @@ int xe_bo_notifier_prepare_all_pinned(struct xe_device *xe)
                                            &xe->pinned.late.kernel_bo_present,
                                            xe_bo_notifier_prepare_pinned);
 
+       if (!ret)
+               ret = xe_bo_apply_to_pinned(xe, &xe->pinned.late.external,
+                                           &xe->pinned.late.external,
+                                           xe_bo_notifier_prepare_pinned);
+
        return ret;
 }
 
@@ -93,6 +98,10 @@ void xe_bo_notifier_unprepare_all_pinned(struct xe_device *xe)
        (void)xe_bo_apply_to_pinned(xe, &xe->pinned.late.kernel_bo_present,
                                    &xe->pinned.late.kernel_bo_present,
                                    xe_bo_notifier_unprepare_pinned);
+
+       (void)xe_bo_apply_to_pinned(xe, &xe->pinned.late.external,
+                                   &xe->pinned.late.external,
+                                   xe_bo_notifier_unprepare_pinned);
 }
 
 /**