]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/xe: Fix incorrect migration of backed-up object to VRAM
authorThomas Hellström <thomas.hellstrom@linux.intel.com>
Thu, 28 Aug 2025 13:48:37 +0000 (15:48 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 9 Sep 2025 17:02:32 +0000 (19:02 +0200)
commit 379b3c983fc0257c183052278832ac68e3ccd33b upstream.

If an object is backed up to shmem it is incorrectly identified
as not having valid data by the move code. This means moving
to VRAM skips the -EMULTIHOP step and the bo is cleared. This
causes all sorts of weird behaviour on DGFX if an already evicted
object is targeted by the shrinker.

Fix this by using ttm_tt_is_swapped() to identify backed-up
objects.

Closes: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/5996
Fixes: 00c8efc3180f ("drm/xe: Add a shrinker for xe bos")
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Matthew Auld <matthew.auld@intel.com>
Cc: <stable@vger.kernel.org> # v6.15+
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/20250828134837.5709-1-thomas.hellstrom@linux.intel.com
(cherry picked from commit 1047bd82794a1eab64d643f196d09171ce983f44)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/gpu/drm/xe/xe_bo.c

index 74635b444122d71ba14eda7839ab3f3f6cd19171..50326e756f897521a0d66f80e356b7893629feff 100644 (file)
@@ -803,8 +803,7 @@ static int xe_bo_move(struct ttm_buffer_object *ttm_bo, bool evict,
                return ret;
        }
 
-       tt_has_data = ttm && (ttm_tt_is_populated(ttm) ||
-                             (ttm->page_flags & TTM_TT_FLAG_SWAPPED));
+       tt_has_data = ttm && (ttm_tt_is_populated(ttm) || ttm_tt_is_swapped(ttm));
 
        move_lacks_source = !old_mem || (handle_system_ccs ? (!bo->ccs_cleared) :
                                         (!mem_type_is_vram(old_mem_type) && !tt_has_data));