From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from va-2-30.ptr.blmpb.com (va-2-30.ptr.blmpb.com [209.127.231.30]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C2FAF2C21D9 for ; Thu, 6 Aug 2026 12:01:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.127.231.30 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786017702; cv=none; b=VVpJLBCCRocVrFQ5Kd5dQzJI8bTYzhn22j9/4UBQTYNZ6dcaGKqXO+p8FyXtDljQ3uGD9sZAQY7Xt7ddDKbkHcwjyavEPk/cC6DRQ+WR7boP29P5ZFbrUm/xN+L1yl7Ucf0ERdKt/fZY6NeT+8RoSf0DwAag/dRsCnfubPT4Wts= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786017702; c=relaxed/simple; bh=IVimmFdZSQJYQZMmWIMqDPuCMabsQs0yIuZ/AZavlF4=; h=Content-Type:Cc:Mime-Version:Content-Disposition:From:Message-Id: To:Subject:Date; b=k5HQkI6BnTYXs7hBoShNGvAbkqEaRBLF4SY9TBj82ZY0Bd0H/4CG3S4BshvVhii4rrWhvQfvjseUsOXMH0o38mY4bLYZsx1v/xUxN2GwXYWTtETxngt6Wop+ROeJfFqZdYbyynwvafuSCZi8jzMYSEIeITQLDFmpP+L+N8u98FQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=picoheart.com; spf=pass smtp.mailfrom=picoheart.com; dkim=pass (2048-bit key) header.d=picoheart.com header.i=@picoheart.com header.b=xOVSYSS/; arc=none smtp.client-ip=209.127.231.30 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=picoheart.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=picoheart.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=picoheart.com header.i=@picoheart.com header.b="xOVSYSS/" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; s=feishu2604151535; d=picoheart.com; t=1786017687; h=from:subject: mime-version:from:date:message-id:subject:to:cc:reply-to:content-type: mime-version:in-reply-to:message-id; bh=AoJmxuBMw6iXTcmAismV7WTvr+lLAU35/6ICxLrNJNo=; b=xOVSYSS/3zGnGIsVbyxoyy13n6/04HlHx0aJNDkybJsgy2acegkn6H8IDQ8TyCEp7XvdZT 4YirrPY0B21oJJvHlXvN5mtoXGYOp6HA31JEvmrOsSpczEOBPaoyppUONh0frjyKZM6UPY r3ObJjhnHvVpiImejUhyLrdYqF1Dk+qd55q/FJBYwzVOiF6JB3mTxP8nqk8ih6mHWWWLge 0ycW35EK6Esk9Odv6AGgG+WyPdRl5FDvmoLH3KlDxaSLpRQENGNiWu6na5So0xh/xNd80l EZO+AdqA6+k18GlPp4YqmRatwk4Lcgfl7/80TCz3yMKy717/9l3BSiN2yRDjrQ== Content-Type: text/plain; charset=UTF-8 X-Original-From: Zhaoyu Liu Content-Transfer-Encoding: 7bit Cc: , Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 Content-Disposition: inline From: "Zhaoyu Liu" Message-Id: Received: from hostpc ([183.129.139.234]) by smtp.feishu.cn with ESMTPS; Thu, 06 Aug 2026 20:01:25 +0800 X-Lms-Return-Path: To: , , , , , Subject: [PATCH] drm/pagemap: no need to recheck own pagemap in migrate_to_devmem Date: Thu, 6 Aug 2026 20:01:22 +0800 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 --- 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