The second loop in drm_pagemap_migrate_to_devmem() checks `page_pgmap(src_page) == pagemap && !can_migrate_same_pagemap` to skip pages already on the target pagemap. However, this condition is always false at this point: if can_migrate_same_pagemap is false and any own pages exist, the first loop already returns -EBUSY before reaching here.
Signed-off-by: Zhaoyu Liu <[email protected]> --- drivers/gpu/drm/drm_pagemap.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/drm_pagemap.c b/drivers/gpu/drm/drm_pagemap.c index 15c78eca180b..6842eadee6df 100644 --- a/drivers/gpu/drm/drm_pagemap.c +++ b/drivers/gpu/drm/drm_pagemap.c @@ -730,8 +730,6 @@ int drm_pagemap_migrate_to_devmem(struct drm_pagemap_devmem *devmem_allocation, if (err) goto err_aborted_migration; - own_pages = 0; - for (i = 0; i < npages;) { unsigned long j; struct page *page = pfn_to_page(migrate.dst[i]); @@ -744,12 +742,7 @@ int drm_pagemap_migrate_to_devmem(struct drm_pagemap_devmem *devmem_allocation, struct drm_pagemap_zdd *src_zdd = drm_pagemap_page_zone_device_data(src_page); - if (page_pgmap(src_page) == pagemap && - !mdetails->can_migrate_same_pagemap) { - migrate.dst[i] = 0; - own_pages++; - goto next; - } + /* Own or peer device private page */ cur.dpagemap = src_zdd->dpagemap; cur.ops = src_zdd->devmem_allocation->ops; cur.device = cur.dpagemap->drm->dev; @@ -786,7 +779,6 @@ int drm_pagemap_migrate_to_devmem(struct drm_pagemap_devmem *devmem_allocation, goto err_finalize; } -next: i += NR_PAGES(order); } @@ -797,8 +789,6 @@ int drm_pagemap_migrate_to_devmem(struct drm_pagemap_devmem *devmem_allocation, if (err) goto err_finalize; - drm_WARN_ON(dpagemap->drm, !!own_pages); - dma_fence_put(devmem_allocation->pre_migrate_fence); devmem_allocation->pre_migrate_fence = NULL; @@ -822,7 +812,7 @@ int drm_pagemap_migrate_to_devmem(struct drm_pagemap_devmem *devmem_allocation, i += nr_pages; } - if (!err && migrated_pages < npages - own_pages) { + if (!err && migrated_pages < npages) { drm_dbg(dpagemap->drm, "Raced while finalizing migration.\n"); err = -EBUSY; } -- 2.34.1
