]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/xe/migrate: don't misalign current bytes
authorMatthew Auld <matthew.auld@intel.com>
Fri, 10 Oct 2025 16:20:21 +0000 (17:20 +0100)
committerLucas De Marchi <lucas.demarchi@intel.com>
Thu, 16 Oct 2025 05:48:48 +0000 (22:48 -0700)
If current bytes exceeds the max copy size, ensure the clamped size
still accounts for the XE_CACHELINE_BYTES alignment, otherwise we
trigger the assert in xe_migrate_vram with the size now being out of
alignment.

Fixes: 8c2d61e0e916 ("drm/xe/migrate: don't overflow max copy size")
Link: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/6212
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Cc: Stuart Summers <stuart.summers@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://lore.kernel.org/r/20251010162020.190962-2-matthew.auld@intel.com
(cherry picked from commit 641bcf8731d21b56760e3646a39a65f471e9efd1)
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
drivers/gpu/drm/xe/xe_migrate.c

index 569869a2b3398527ef0b5d0d5eabef95df3c1c4e..a36ce7dce8cc0e05b4c7c95b56e6bf9ab3c470ad 100644 (file)
@@ -2113,7 +2113,9 @@ int xe_migrate_access_memory(struct xe_migrate *m, struct xe_bo *bo,
                if (current_bytes & ~PAGE_MASK) {
                        int pitch = 4;
 
-                       current_bytes = min_t(int, current_bytes, S16_MAX * pitch);
+                       current_bytes = min_t(int, current_bytes,
+                                             round_down(S16_MAX * pitch,
+                                                        XE_CACHELINE_BYTES));
                }
 
                __fence = xe_migrate_vram(m, current_bytes,