From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 08A93D3E787 for ; Sun, 14 Dec 2025 06:57:00 +0000 (UTC) Received: from boromir.ozlabs.org (localhost [127.0.0.1]) by lists.ozlabs.org (Postfix) with ESMTP id 4dTYs7331Nz2yD4; Sun, 14 Dec 2025 17:56:59 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; arc=none smtp.remote-ip=172.234.252.31 ARC-Seal: i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1765695419; cv=none; b=LeKU3U4K32ra/yLwfJvpNUdptIqxHBOl2nACAareoN0wfgbhM/sUEx+SJ6cd7bnC4VwwiXDr/bke7+0Stpce0UMzWZrQyohjbAaJ/B+KOjeRTzI906BdIpT1EXQgL50MyOuFZP15PtQdisKVXEYd6UEHjMOiMEgaGGuwD0O37pTO/UGAfrqW3LQOUuONc46VfriDHM9hiQUslvPPBOcdC6NQY6XO18h69SRgrCLkft1catswpWFgKRXMdcdwKbGYq33Nxgb5AlXsQXVdmQy4YPE0S8MDcG3P9h+LpLr2ArC5k6i2S7h8PgnbnCX6lZrjjxNgLgnBvfi6suLkEe7k9Q== ARC-Message-Signature: i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1765695419; c=relaxed/relaxed; bh=apGqneViZBsG0Sxhjrh0GEOqlCJn9cs/szQcSZ3tuEE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cWJxIq1vd+JGnvpHi5ogNXxXdAmWA9r1f1I0rnhECzcCwar76bw4uybaqIAxQOf4dx6cETVWEPSV3d+nyTdl2wkmK4+C/s0iRPYYdH2Tubd7LZc7sXDG0DxYpIvzSWNFfLPl8rEyKaL6vmeL6VnypL5Ob3cFu1R17QFNaOiJIrVHpYZwEuX/Ak/99xq/Rj02lfNsAA3i5JYO3zDue2LrWw677Fjg4SLy2Y/efU0U+Pvfs4winltsgnBsDYAgbcU1g9QDMdtbtRgQaevax/n/+/ceBfW5aABEXENHk4cdB2bUZuQVAPNlsKTFADXg13EaF/bZub1wFvFlVSOJXLDIXA== ARC-Authentication-Results: i=1; lists.ozlabs.org; dmarc=pass (p=quarantine dis=none) header.from=kernel.org; dkim=pass (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20201202 header.b=c/af4ehC; dkim-atps=neutral; spf=pass (client-ip=172.234.252.31; helo=sea.source.kernel.org; envelope-from=alexs@kernel.org; receiver=lists.ozlabs.org) smtp.mailfrom=kernel.org Authentication-Results: lists.ozlabs.org; dmarc=pass (p=quarantine dis=none) header.from=kernel.org Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20201202 header.b=c/af4ehC; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=kernel.org (client-ip=172.234.252.31; helo=sea.source.kernel.org; envelope-from=alexs@kernel.org; receiver=lists.ozlabs.org) Received: from sea.source.kernel.org (sea.source.kernel.org [172.234.252.31]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4dTYs64h7Lz2xqf for ; Sun, 14 Dec 2025 17:56:58 +1100 (AEDT) Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id CF1C0401ED; Sun, 14 Dec 2025 06:56:25 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3F724C4CEF1; Sun, 14 Dec 2025 06:56:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1765695385; bh=rNokNUbqhtDAZzRvGy68XrNneuZAbKP4ZIJlFMKF+7U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=c/af4ehCIryGWDPXN8wqNy/88J0nXqpVQGHfqT2+toiUwTP+C5J5RtU9Geyw2VF0p QklRyp0qRhxs2uNnXKsuFbrGQWuVRKkwOznqKwNyMQ08nPkeKu8AT+vSKcJWGZRbJO SWUiE+ata5yHDPcug0nZnZ9bCIjH71HjJJpZNSNn2ivRvv+Io94l2TRfBiZK2mBtHo hkL5VrDGRW4/PzdFMq9L3tNB1EnsVC8laoIofiC/y2FO28Zz5QyMKGgbNBL7ThA2xf 2G5seFkvmZm6EfVw5Y8/g6FTtlsCMWO9JubLhTHribjDG3T2/qZGR26d+3tpea+B2I 7q/v9Rx2Ou0Fg== From: alexs@kernel.org To: Madhavan Srinivasan , Michael Ellerman , Nicholas Piggin , Christophe Leroy , Alexander Gordeev , Gerald Schaefer , Heiko Carstens , Vasily Gorbik , Christian Borntraeger , Sven Schnelle , "David S . Miller" , Andreas Larsson , Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Zi Yan , Baolin Wang , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Lance Yang , Matthew Brost , Joshua Hahn , Rakie Kim , Byungchul Park , Gregory Price , Ying Huang , Alistair Popple , Thomas Huth , Will Deacon , Matthew Wilcox , Magnus Lindholm , linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, linux-mm@kvack.org Cc: Alex Shi , Juergen Gross , Jason Gunthorpe Subject: [RFC PATCH 2/2] mm/pgtable: convert pgtable_trans_huge_withdraw to ptdesc Date: Sun, 14 Dec 2025 14:55:46 +0800 Message-ID: <20251214065546.156209-2-alexs@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251214065546.156209-1-alexs@kernel.org> References: <20251214065546.156209-1-alexs@kernel.org> X-Mailing-List: linuxppc-dev@lists.ozlabs.org List-Id: List-Help: List-Owner: List-Post: List-Archive: , List-Subscribe: , , List-Unsubscribe: Precedence: list MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Alex Shi Following the last function change in pgtable_trans_huge_deposit(). this time we convert the return value for pgtable_trans_huge_withdraw() In future, we could do further to convert more pgtable_t to ptdesc struct and then replace the pgtable_t to ptdesc* except s390/powerpc/sparc archs. Signed-off-by: Alex Shi Cc: linux-mm@kvack.org Cc: sparclinux@vger.kernel.org Cc: linux-s390@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org Cc: Juergen Gross Cc: Matthew Wilcox Cc: Magnus Lindholm Cc: Thomas Huth Cc: Alistair Popple Cc: Jason Gunthorpe Cc: Lance Yang Cc: Barry Song Cc: Dev Jain Cc: Ryan Roberts Cc: Nico Pache Cc: Baolin Wang Cc: Zi Yan Cc: Michal Hocko Cc: Suren Baghdasaryan Cc: Mike Rapoport Cc: Vlastimil Babka Cc: Liam R. Howlett Cc: Lorenzo Stoakes Cc: David Hildenbrand Cc: Andrew Morton Cc: Andreas Larsson Cc: David S. Miller Cc: Sven Schnelle Cc: Christian Borntraeger Cc: Vasily Gorbik Cc: Heiko Carstens Cc: Gerald Schaefer Cc: Alexander Gordeev Cc: Christophe Leroy Cc: Nicholas Piggin Cc: Michael Ellerman Cc: Madhavan Srinivasan --- arch/powerpc/include/asm/book3s/64/pgtable.h | 8 ++++---- arch/s390/include/asm/pgtable.h | 2 +- arch/s390/mm/pgtable.c | 4 ++-- arch/sparc/include/asm/pgtable_64.h | 2 +- arch/sparc/mm/tlb.c | 4 ++-- include/linux/pgtable.h | 3 ++- mm/huge_memory.c | 15 +++++++-------- mm/pgtable-generic.c | 4 ++-- 8 files changed, 21 insertions(+), 21 deletions(-) diff --git a/arch/powerpc/include/asm/book3s/64/pgtable.h b/arch/powerpc/include/asm/book3s/64/pgtable.h index f10736af296d..3485de5178b5 100644 --- a/arch/powerpc/include/asm/book3s/64/pgtable.h +++ b/arch/powerpc/include/asm/book3s/64/pgtable.h @@ -1328,12 +1328,12 @@ static inline void pgtable_trans_huge_deposit(struct mm_struct *mm, } #define __HAVE_ARCH_PGTABLE_WITHDRAW -static inline pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, - pmd_t *pmdp) +static inline struct ptdesc *pgtable_trans_huge_withdraw(struct mm_struct *mm, + pmd_t *pmdp) { if (radix_enabled()) - return radix__pgtable_trans_huge_withdraw(mm, pmdp); - return hash__pgtable_trans_huge_withdraw(mm, pmdp); + return page_ptdesc(radix__pgtable_trans_huge_withdraw(mm, pmdp)); + return page_ptdesc(hash__pgtable_trans_huge_withdraw(mm, pmdp)); } #define __HAVE_ARCH_PMDP_INVALIDATE diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h index e45cb52a923a..5f7fab7b121b 100644 --- a/arch/s390/include/asm/pgtable.h +++ b/arch/s390/include/asm/pgtable.h @@ -1754,7 +1754,7 @@ void pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp, struct ptdesc *pgtable); #define __HAVE_ARCH_PGTABLE_WITHDRAW -pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp); +struct ptdesc *pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp); #define __HAVE_ARCH_PMDP_SET_ACCESS_FLAGS static inline int pmdp_set_access_flags(struct vm_area_struct *vma, diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c index c301af71b3ec..6e53a30dd3ae 100644 --- a/arch/s390/mm/pgtable.c +++ b/arch/s390/mm/pgtable.c @@ -534,7 +534,7 @@ void pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp, pmd_huge_pte(mm, pmdp) = pgtable; } -pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp) +struct ptdesc *pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp) { struct list_head *lh; pgtable_t pgtable; @@ -555,7 +555,7 @@ pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp) set_pte(ptep, __pte(_PAGE_INVALID)); ptep++; set_pte(ptep, __pte(_PAGE_INVALID)); - return pgtable; + return page_ptdesc(pgtable); } #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ diff --git a/arch/sparc/include/asm/pgtable_64.h b/arch/sparc/include/asm/pgtable_64.h index 4b7f7113a1b3..29fc86175300 100644 --- a/arch/sparc/include/asm/pgtable_64.h +++ b/arch/sparc/include/asm/pgtable_64.h @@ -995,7 +995,7 @@ void pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp, struct ptdesc *pgtable); #define __HAVE_ARCH_PGTABLE_WITHDRAW -pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp); +struct ptdesc *pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp); #endif /* diff --git a/arch/sparc/mm/tlb.c b/arch/sparc/mm/tlb.c index 5dfee57d2440..8b00b62c06bd 100644 --- a/arch/sparc/mm/tlb.c +++ b/arch/sparc/mm/tlb.c @@ -284,7 +284,7 @@ void pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp, pmd_huge_pte(mm, pmdp) = pgtable; } -pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp) +struct ptdesc *pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp) { struct list_head *lh; pgtable_t pgtable; @@ -303,6 +303,6 @@ pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp) pte_val(pgtable[0]) = 0; pte_val(pgtable[1]) = 0; - return pgtable; + return page_ptdesc(pgtable); } #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ diff --git a/include/linux/pgtable.h b/include/linux/pgtable.h index a5b1e3f7452a..4b20b3d7aaec 100644 --- a/include/linux/pgtable.h +++ b/include/linux/pgtable.h @@ -1021,7 +1021,8 @@ extern void pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp, #endif #ifndef __HAVE_ARCH_PGTABLE_WITHDRAW -extern pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp); +extern struct ptdesc *pgtable_trans_huge_withdraw(struct mm_struct *mm, + pmd_t *pmdp); #endif #ifndef arch_needs_pgtable_deposit diff --git a/mm/huge_memory.c b/mm/huge_memory.c index ff74bd70690d..6f6cdb3ae888 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -2334,7 +2334,7 @@ static inline void zap_deposited_table(struct mm_struct *mm, pmd_t *pmd) { pgtable_t pgtable; - pgtable = pgtable_trans_huge_withdraw(mm, pmd); + pgtable = ptdesc_page(pgtable_trans_huge_withdraw(mm, pmd)); pte_free(mm, pgtable); mm_dec_nr_ptes(mm); } @@ -2492,10 +2492,9 @@ bool move_huge_pmd(struct vm_area_struct *vma, unsigned long old_addr, VM_BUG_ON(!pmd_none(*new_pmd)); if (pmd_move_must_withdraw(new_ptl, old_ptl, vma)) { - pgtable_t pgtable; + struct ptdesc *pgtable; pgtable = pgtable_trans_huge_withdraw(mm, old_pmd); - pgtable_trans_huge_deposit(mm, new_pmd, - page_ptdesc(pgtable)); + pgtable_trans_huge_deposit(mm, new_pmd, pgtable); } pmd = move_soft_dirty_pmd(pmd); if (vma_has_uffd_without_event_remap(vma)) @@ -2710,7 +2709,7 @@ int move_pages_huge_pmd(struct mm_struct *mm, pmd_t *dst_pmd, pmd_t *src_pmd, pm struct page *src_page; struct folio *src_folio; spinlock_t *src_ptl, *dst_ptl; - pgtable_t src_pgtable; + struct ptdesc *src_pgtable; struct mmu_notifier_range range; int err = 0; @@ -2801,7 +2800,7 @@ int move_pages_huge_pmd(struct mm_struct *mm, pmd_t *dst_pmd, pmd_t *src_pmd, pm set_pmd_at(mm, dst_addr, dst_pmd, _dst_pmd); src_pgtable = pgtable_trans_huge_withdraw(mm, src_pmd); - pgtable_trans_huge_deposit(mm, dst_pmd, page_ptdesc(src_pgtable)); + pgtable_trans_huge_deposit(mm, dst_pmd, src_pgtable); unlock_ptls: double_pt_unlock(src_ptl, dst_ptl); /* unblock rmap walks */ @@ -2962,7 +2961,7 @@ static void __split_huge_zero_page_pmd(struct vm_area_struct *vma, */ old_pmd = pmdp_huge_clear_flush(vma, haddr, pmd); - pgtable = pgtable_trans_huge_withdraw(mm, pmd); + pgtable = ptdesc_page(pgtable_trans_huge_withdraw(mm, pmd)); pmd_populate(mm, &_pmd, pgtable); pte = pte_offset_map(&_pmd, haddr); @@ -3169,7 +3168,7 @@ static void __split_huge_pmd_locked(struct vm_area_struct *vma, pmd_t *pmd, * Withdraw the table only after we mark the pmd entry invalid. * This's critical for some architectures (Power). */ - pgtable = pgtable_trans_huge_withdraw(mm, pmd); + pgtable = ptdesc_page(pgtable_trans_huge_withdraw(mm, pmd)); pmd_populate(mm, &_pmd, pgtable); pte = pte_offset_map(&_pmd, haddr); diff --git a/mm/pgtable-generic.c b/mm/pgtable-generic.c index 220844a81e38..a95d9309215e 100644 --- a/mm/pgtable-generic.c +++ b/mm/pgtable-generic.c @@ -179,7 +179,7 @@ void pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp, #ifndef __HAVE_ARCH_PGTABLE_WITHDRAW /* no "address" argument so destroys page coloring of some arch */ -pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp) +struct ptdesc *pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp) { struct ptdesc *pgtable; @@ -191,7 +191,7 @@ pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp) struct ptdesc, pt_list); if (pmd_huge_pte(mm, pmdp)) list_del(&pgtable->pt_list); - return ptdesc_page(pgtable); + return pgtable; } #endif -- 2.43.0