[PATCH v1 4/5] drm/xe/migrate: Use order to calculate migration length
Matthew Brost
matthew.brost at intel.com
Fri Jul 18 04:27:44 UTC 2025
On Thu, Jul 17, 2025 at 03:38:26PM +0200, Francois Dugast wrote:
> Since GPU SVM can DMA map folios, it can no longer be assumed that the
> order is always 0 and that the mapping size is always PAGE_SIZE. Instead,
> to determinate the migration length, use the order associated with each
> DMA mapping, provided by drm_pagemap_device_addr.
>
Hmm, I think the interface should still define npages as the total
number of pages mapped, even if drm_pagemap_addr contains entries of
higher order. In the case of higher-order mappings, I’d expect
unpopulated entries based on the order of each individual entry.
So, I think we can drop this patch, but update kernel doc in similar way
I mentioned in the previous patches.
Matt
> Signed-off-by: Francois Dugast <francois.dugast at intel.com>
> Cc: Matthew Brost <matthew.brost at intel.com>
> ---
> drivers/gpu/drm/xe/xe_migrate.c | 14 ++++++++++++--
> 1 file changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_migrate.c b/drivers/gpu/drm/xe/xe_migrate.c
> index 33d67993f1f6..efbf8c0f41dc 100644
> --- a/drivers/gpu/drm/xe/xe_migrate.c
> +++ b/drivers/gpu/drm/xe/xe_migrate.c
> @@ -1724,7 +1724,12 @@ struct dma_fence *xe_migrate_to_vram(struct xe_migrate *m,
> struct drm_pagemap_device_addr *src_addr,
> u64 dst_addr)
> {
> - return xe_migrate_vram(m, npages * PAGE_SIZE, 0, src_addr, dst_addr,
> + unsigned long i, len = 0;
> +
> + for (i = 0; i < npages; i++)
> + len += PAGE_SIZE << src_addr[i].order;
> +
> + return xe_migrate_vram(m, len, 0, src_addr, dst_addr,
> XE_MIGRATE_COPY_TO_VRAM);
> }
>
> @@ -1745,7 +1750,12 @@ struct dma_fence *xe_migrate_from_vram(struct xe_migrate *m,
> u64 src_addr,
> struct drm_pagemap_device_addr *dst_addr)
> {
> - return xe_migrate_vram(m, npages * PAGE_SIZE, 0, dst_addr, src_addr,
> + unsigned long i, len = 0;
> +
> + for (i = 0; i < npages; i++)
> + len += PAGE_SIZE << dst_addr[i].order;
> +
> + return xe_migrate_vram(m, len, 0, dst_addr, src_addr,
> XE_MIGRATE_COPY_TO_SRAM);
> }
>
> --
> 2.43.0
>
More information about the Intel-xe
mailing list