]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/xe/migrate: fix batch buffer sizing
authorMatthew Auld <matthew.auld@intel.com>
Wed, 22 Oct 2025 16:38:33 +0000 (17:38 +0100)
committerMatthew Auld <matthew.auld@intel.com>
Thu, 23 Oct 2025 09:48:37 +0000 (10:48 +0100)
In xe_migrate_vram() the copy can straddle page boundaries, so the len
might look like a single page, but actually accounting for the offset
within the page we will need to emit more than one PTE. Otherwise in
some cases the batch buffer will be undersized leading to warnings
later.  We already have npages so use that instead.

Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://lore.kernel.org/r/20251022163836.191405-5-matthew.auld@intel.com
drivers/gpu/drm/xe/xe_migrate.c

index ce5543fa7a5212c9b5489477783b4037e9ac132d..fa87e0eddd09bb421c582da87cf1bb3425dcc229 100644 (file)
@@ -1894,7 +1894,7 @@ static struct dma_fence *xe_migrate_vram(struct xe_migrate *m,
 
        xe_assert(xe, npages * PAGE_SIZE <= MAX_PREEMPTDISABLE_TRANSFER);
 
-       batch_size += pte_update_cmd_size(len);
+       batch_size += pte_update_cmd_size(npages << PAGE_SHIFT);
        batch_size += EMIT_COPY_DW;
 
        bb = xe_bb_new(gt, batch_size, use_usm_batch);