From patchwork Mon Mar 3 07:26:03 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Qi Zheng X-Patchwork-Id: 13998259 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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2AC2EC282C5 for ; Mon, 3 Mar 2025 07:26:42 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 700A0280008; Mon, 3 Mar 2025 02:26:41 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 689AB280007; Mon, 3 Mar 2025 02:26:41 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4DB71280008; Mon, 3 Mar 2025 02:26:41 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 2CB0D280007 for ; Mon, 3 Mar 2025 02:26:41 -0500 (EST) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id D8D8AA17DD for ; Mon, 3 Mar 2025 07:26:40 +0000 (UTC) X-FDA: 83179407360.27.FB5B457 Received: from mail-pj1-f48.google.com (mail-pj1-f48.google.com [209.85.216.48]) by imf15.hostedemail.com (Postfix) with ESMTP id 34989A0005 for ; Mon, 3 Mar 2025 07:26:38 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=L9ae0j7f; spf=pass (imf15.hostedemail.com: domain of zhengqi.arch@bytedance.com designates 209.85.216.48 as permitted sender) smtp.mailfrom=zhengqi.arch@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740986799; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=wKqMp2ldkM6onLRqmB7AQD5dXslJ0Fc9YwwNhjL6y0w=; b=noEMvHoJpPWHBo6Hptha/7ogpKXloDAywSGoCvZSoTuuXI1DZIEeKZQ8yuHXlEQ+ZgmOsA tWuGUQ87BN+rMukbrLOaRUhmhFUb84VKExEA0eASbi8FbsdIVSH5BzCxhvnI8z4TFU3Jli 52/gUhcEQ5VeiCUctqpESPA/dUOy1Js= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740986799; a=rsa-sha256; cv=none; b=7Eq/0WIYaA8v7rgP9ThHuvY1pfbKc8p0AefXaAyiW5MPmA4JZlkY9SmBXP7uo+MzU5SC2b U5eQMfbbabhwX9hwu+688VGN3FLo5ozUUkB9yNTe7VW8xwo1XWXpzgsUL9hdybeViYkhWk 7fnZlqVEmmHIAy3l/dw9uB/952RMgC8= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=L9ae0j7f; spf=pass (imf15.hostedemail.com: domain of zhengqi.arch@bytedance.com designates 209.85.216.48 as permitted sender) smtp.mailfrom=zhengqi.arch@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com Received: by mail-pj1-f48.google.com with SMTP id 98e67ed59e1d1-2fe821570e4so5837404a91.0 for ; Sun, 02 Mar 2025 23:26:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1740986797; x=1741591597; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wKqMp2ldkM6onLRqmB7AQD5dXslJ0Fc9YwwNhjL6y0w=; b=L9ae0j7fyAs1+ZtSv0QbWo5ycGjGFgW5CPLC7GKKRv88vWarwlpt1z8XdeRczu/I01 dWZLRvn3T4E1td3hvDLAU97MM9O07FjKs6N29pwTPfIsILeZB8wa4Z9zfGiPtsqkJlbP aU4ptuImrbnjYd2rc8kLzqlcxW0Wzqjzs+o/VI1Hd7RKJzL8Z+de56vyX45ojRVbigeH loEEfKh/jzf9IrMo+Z1IRNbclrT+jUwa1BMgPWqha6qCtVwmRMs9/00/timoTOfUxBnw 34l3qxUX/ONzWCsdA+94p5sacpBqZF6IpxMAp+5BJnG3dWwrMx3+b4Iv4WZYJr2S1xD+ yEGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740986797; x=1741591597; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wKqMp2ldkM6onLRqmB7AQD5dXslJ0Fc9YwwNhjL6y0w=; b=r6Oc4n91jkgrTOPCrW+iI0jrDseyJKZ+AIMr2YyAbuFG+dTSWo0oJctp1oBNaejXSr RCCyC3tFcBy+gVrYZxJ3qlXkI5AX1qidrd5IbFRSvyjwNKYQ36l6oTQNGBUMQSRNN6Jn /W2qyH9ebAnIwC9dcr+o+oW+XnTdOIQEVEwueCWfLj1DeUPx/FdeqHyh2CfpDvQygc4o VNwO15OP8sQ6HOwIeR3rionMRTc0XMw/1B/Q+VbmGxng8jUJOOuR0ESqTGz9ipvFFKuT 6XSqkoQlSbVqVgTBdP9pn2/J12fX2rLRsbxez9RePtpqCPABxSdU0nLcwi2ZC7CsKADJ mRng== X-Gm-Message-State: AOJu0Yxu3Za5Ngp3/YNmge+nQTD7bhY228Ax6BbK4oQJNUcglV9TPYY2 mb45PCuawKRfQzllM3VNNnEfNF3TUc6+vrZ42DNOBpn6pjp5+FsJqLUPlRVVFKY= X-Gm-Gg: ASbGnct9765y//l1BJQL0x29ATK6wKHj3scJHFxCcyq6woLIRUmZRkVcuMBKQAbdB63 ja+VM8F3f+tOeYY0AOyd9w687EZqf/3hXlpsnB5VPYLm+vNknEsXETnGReOF84lxtIOBlrFchqv ab2SEI7Ub7BGL73PAJyiIC8+XhPT9mTc6oErsnjjy32wMoOJYSqqcIiiApEGkDZMlZ/7E0g+KVb Bu7+JBRZz0M/NpyT5+mMXgQASN7cRpdEHmKiaJGTXY2frHE3gagHHKCFrSmluvctCFEA87sTmRw yfSYX1iSfHaLyNOuulbiyHTLvzkK0Fbh705+X4ctgTGYQ5Eed9bRPyOBt0jygP10RIotvYIk6T4 dB0DJBw== X-Google-Smtp-Source: AGHT+IHY/mguPL5YJZdh+hkpdyJ3sc0BaAvd1rDPiW9eR/qaACJ5BQlxWj/zL9j3Gfy9PeYzz+4/5A== X-Received: by 2002:a17:90a:f948:b0:2fe:d766:ad87 with SMTP id 98e67ed59e1d1-2fed766af9cmr12568619a91.7.1740986796693; Sun, 02 Mar 2025 23:26:36 -0800 (PST) Received: from G7HT0H2MK4.bytedance.net ([63.216.146.178]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fea676c06asm8211638a91.16.2025.03.02.23.26.26 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Sun, 02 Mar 2025 23:26:35 -0800 (PST) From: Qi Zheng To: peterz@infradead.org, kevin.brodsky@arm.com, riel@surriel.com, vishal.moola@gmail.com, david@redhat.com, jannh@google.com, hughd@google.com, willy@infradead.org, yuzhao@google.com, muchun.song@linux.dev, akpm@linux-foundation.org, will@kernel.org, aneesh.kumar@kernel.org, npiggin@gmail.com, arnd@arndb.de, dave.hansen@linux.intel.com, rppt@kernel.org, alexghiti@rivosinc.com Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org, loongarch@lists.linux.dev, linux-m68k@lists.linux-m68k.org, linux-mips@vger.kernel.org, linux-openrisc@vger.kernel.org, linux-sh@vger.kernel.org, linux-um@lists.infradead.org, Qi Zheng , Geert Uytterhoeven Subject: [PATCH v2 3/6 update] mm: pgtable: convert some architectures to use tlb_remove_ptdesc() Date: Mon, 3 Mar 2025 15:26:03 +0800 Message-ID: <20250303072603.45423-1-zhengqi.arch@bytedance.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <19db3e8673b67bad2f1df1ab37f1c89d99eacfea.1740454179.git.zhengqi.arch@bytedance.com> References: <19db3e8673b67bad2f1df1ab37f1c89d99eacfea.1740454179.git.zhengqi.arch@bytedance.com> MIME-Version: 1.0 X-Stat-Signature: m81n16psjo5mwgcmgeuhh1k64sacfrre X-Rspamd-Queue-Id: 34989A0005 X-Rspam-User: X-Rspamd-Server: rspam01 X-HE-Tag: 1740986798-694510 X-HE-Meta: U2FsdGVkX19YGKkg9dR1VCSqNkNuMKzz9Fujj4xWXs2jV8kXF0ogyKbrN+fKmasSMX1dIC/b5O5G5WojWbqlMs2qB3aCUoWr7Zf/TRwtFG+KLkhCwR6zjA7KVHmasK1Dn0AkI5inhx0LJC5lEG3gH6DW0mKxwadjJ4+Nukvwmd/yKkeEfxNiH3InPtJbbIRZK3JH9bzUzs9kSZ3rrrgiBNMq0lII1hTMaV9pfiCG7LFwYHfEWlFYAqnewW4x1iIF2s5lfR4pf7tiltxJT5Xo51Y29/woxnU1+noSDB9/sP7hGqnFWhrHu5tfD+yycYzqFzBfAFvYwI3LH2B4vuL8e/7hFchKicEyyIZoOpdD/sGQ9tcPBL8Lbe/lamEUrHJnqCp1FSV4QnqBVfEg89nXbIHBJhwghmrAS4JJCRfpBRhhtPfvJcVYdNq/UchaoYouhOOhp+pFX/QAp6V/oZv4wUFnB7Bpfk8Vs8GGzEhuRInK6Y0NSBpaN62W4bZRpB+bT1useoYH43MyRZcpSkH9aFMnecEFPXb6TJBNqrdcLOHgJMKbwbKLR3ZvARZ4jgRcLmRQIgqLC6xI+rya4Bk5h9tzd4XW3pniQetAymI4QPj/zKz+Py/E6zr5+8dMtUccUzamAWcDUXxpzdQEGLwcthDmkrpjvsYNgDcKyCo0JF/+sY0dyIVfCLrh5/oN7hzu6bIaDPzDA27PGBfxuN8VgIctTc0YazrQRnbcb4SlBDWhebdGbDk/uImKeKcIdSsr2Po3YPGb7h3fikgNBwWFD9Zvm27T731dq2AZWfuTSdbuh6f4blVD2s+IjR7E0hSbMWf+ktijrj7WSkAiUNLSD/AlVqYeyJ5Ui9/6WUSYMKXs4tng/o0N6uUs7J89RsugP74R3yq7FqTR1pDz+tu77xR8lhO4kwici2hw7wrE60xh2HoLZIaPGH2UR5Gad61035Z02n9ph9YWM0SAvbn IJlA4v81 BrQQY/iMgy3Wj0a0i3/TRkx55+/ef+Uwn73nXfwE4nN5ptDu8yF06oZLe1EuD5gZveiPHjA827Jyq+yC0ZPiCR36dBLJhSp2l7nnn54L0DMQFKIK5ffXZ1xumTBoBbEfrLfcEtxXHVHhD6+fRjlF18T38LEIQLbMJFULz8q9zARCr08p4g2JlIBJuhAd6tZ/5NSE8BZltkKZvMiXr6VO0JRAmMODEF3bbPahUgSzW/tH09pzdCHsVqWDrEQPRD0WZTP8uaUjw1X7F6FgmWVA1EHbFrLJeyFBtXpPh6aKt24g3wNi5NlgFDBKaZVyGBIadex1CehUh6Z0CyXPYdUmxPVCvFoPuFW3+3kYXfExRFykhsfwgomhxQKL7tw5hBz82xbjrvOB9tRIvMoZECQ3w/pRBFBl09NpSnMkgEDtRUqOSWLYvSLlhyJttW4aiYLpKszBpE0tk1oWj1pvCxniUZVhoLZvVArbh/WJ4IOILsR6exRyxg/9UD51tfNx/alHAmYR7AhqQ02xD3grKWRMqnWnMdS3yv+ik95oMq9HfqUrwI4ir7wrBf7ktjCfcNNBHPdhOcTuKRHmpMQnkbl8uk6/D3qmq9eBR+fwYdsJgYQNEA/g= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Now, the nine architectures of csky, hexagon, loongarch, m68k, mips, nios2, openrisc, sh and um do not select CONFIG_MMU_GATHER_RCU_TABLE_FREE, and just call pagetable_dtor() + tlb_remove_page_ptdesc() (the wrapper of tlb_remove_page()). This is the same as the implementation of tlb_remove_{ptdesc|table}() under !CONFIG_MMU_GATHER_TABLE_FREE, so convert these architectures to use tlb_remove_ptdesc(). The ultimate goal is to make the architecture only use tlb_remove_ptdesc() or tlb_remove_table() for page table pages. Signed-off-by: Qi Zheng Suggested-by: Peter Zijlstra (Intel) Reviewed-by: Kevin Brodsky Acked-by: Geert Uytterhoeven # m68k --- Changes in v2 update: - remove the do { ... } while construct. (Geert Uytterhoeven) - collect the Reviewed-by and Acked-by. arch/csky/include/asm/pgalloc.h | 7 ++----- arch/hexagon/include/asm/pgalloc.h | 7 ++----- arch/loongarch/include/asm/pgalloc.h | 7 ++----- arch/m68k/include/asm/sun3_pgalloc.h | 7 ++----- arch/mips/include/asm/pgalloc.h | 7 ++----- arch/nios2/include/asm/pgalloc.h | 7 ++----- arch/openrisc/include/asm/pgalloc.h | 7 ++----- arch/sh/include/asm/pgalloc.h | 7 ++----- arch/um/include/asm/pgalloc.h | 21 ++++++--------------- 9 files changed, 22 insertions(+), 55 deletions(-) diff --git a/arch/csky/include/asm/pgalloc.h b/arch/csky/include/asm/pgalloc.h index bf8400c28b5a3..11055c5749686 100644 --- a/arch/csky/include/asm/pgalloc.h +++ b/arch/csky/include/asm/pgalloc.h @@ -61,11 +61,8 @@ static inline pgd_t *pgd_alloc(struct mm_struct *mm) return ret; } -#define __pte_free_tlb(tlb, pte, address) \ -do { \ - pagetable_dtor(page_ptdesc(pte)); \ - tlb_remove_page_ptdesc(tlb, page_ptdesc(pte)); \ -} while (0) +#define __pte_free_tlb(tlb, pte, address) \ + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) extern void pagetable_init(void); extern void mmu_init(unsigned long min_pfn, unsigned long max_pfn); diff --git a/arch/hexagon/include/asm/pgalloc.h b/arch/hexagon/include/asm/pgalloc.h index 1ee5f5f157ca7..937a11ef4c33c 100644 --- a/arch/hexagon/include/asm/pgalloc.h +++ b/arch/hexagon/include/asm/pgalloc.h @@ -87,10 +87,7 @@ static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd, max_kernel_seg = pmdindex; } -#define __pte_free_tlb(tlb, pte, addr) \ -do { \ - pagetable_dtor((page_ptdesc(pte))); \ - tlb_remove_page_ptdesc((tlb), (page_ptdesc(pte))); \ -} while (0) +#define __pte_free_tlb(tlb, pte, addr) \ + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) #endif diff --git a/arch/loongarch/include/asm/pgalloc.h b/arch/loongarch/include/asm/pgalloc.h index 7211dff8c969e..73629c1b8328e 100644 --- a/arch/loongarch/include/asm/pgalloc.h +++ b/arch/loongarch/include/asm/pgalloc.h @@ -55,11 +55,8 @@ static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm) return pte; } -#define __pte_free_tlb(tlb, pte, address) \ -do { \ - pagetable_dtor(page_ptdesc(pte)); \ - tlb_remove_page_ptdesc((tlb), page_ptdesc(pte)); \ -} while (0) +#define __pte_free_tlb(tlb, pte, address) \ + tlb_remove_ptdesc((tlb), page_ptdesc(pte)); #ifndef __PAGETABLE_PMD_FOLDED diff --git a/arch/m68k/include/asm/sun3_pgalloc.h b/arch/m68k/include/asm/sun3_pgalloc.h index 80afc3a187249..1e21c758b774e 100644 --- a/arch/m68k/include/asm/sun3_pgalloc.h +++ b/arch/m68k/include/asm/sun3_pgalloc.h @@ -17,11 +17,8 @@ extern const char bad_pmd_string[]; -#define __pte_free_tlb(tlb, pte, addr) \ -do { \ - pagetable_dtor(page_ptdesc(pte)); \ - tlb_remove_page_ptdesc((tlb), page_ptdesc(pte)); \ -} while (0) +#define __pte_free_tlb(tlb, pte, addr) \ + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd, pte_t *pte) { diff --git a/arch/mips/include/asm/pgalloc.h b/arch/mips/include/asm/pgalloc.h index 26c7a6ede983c..bbca420c96d3c 100644 --- a/arch/mips/include/asm/pgalloc.h +++ b/arch/mips/include/asm/pgalloc.h @@ -48,11 +48,8 @@ static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd) extern void pgd_init(void *addr); extern pgd_t *pgd_alloc(struct mm_struct *mm); -#define __pte_free_tlb(tlb, pte, address) \ -do { \ - pagetable_dtor(page_ptdesc(pte)); \ - tlb_remove_page_ptdesc((tlb), page_ptdesc(pte)); \ -} while (0) +#define __pte_free_tlb(tlb, pte, address) \ + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) #ifndef __PAGETABLE_PMD_FOLDED diff --git a/arch/nios2/include/asm/pgalloc.h b/arch/nios2/include/asm/pgalloc.h index 12a536b7bfbd4..db122b093a8be 100644 --- a/arch/nios2/include/asm/pgalloc.h +++ b/arch/nios2/include/asm/pgalloc.h @@ -28,10 +28,7 @@ static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd, extern pgd_t *pgd_alloc(struct mm_struct *mm); -#define __pte_free_tlb(tlb, pte, addr) \ - do { \ - pagetable_dtor(page_ptdesc(pte)); \ - tlb_remove_page_ptdesc((tlb), (page_ptdesc(pte))); \ - } while (0) +#define __pte_free_tlb(tlb, pte, addr) \ + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) #endif /* _ASM_NIOS2_PGALLOC_H */ diff --git a/arch/openrisc/include/asm/pgalloc.h b/arch/openrisc/include/asm/pgalloc.h index 3372f4e6ab4b5..3f110931d8f6e 100644 --- a/arch/openrisc/include/asm/pgalloc.h +++ b/arch/openrisc/include/asm/pgalloc.h @@ -64,10 +64,7 @@ extern inline pgd_t *pgd_alloc(struct mm_struct *mm) extern pte_t *pte_alloc_one_kernel(struct mm_struct *mm); -#define __pte_free_tlb(tlb, pte, addr) \ -do { \ - pagetable_dtor(page_ptdesc(pte)); \ - tlb_remove_page_ptdesc((tlb), (page_ptdesc(pte))); \ -} while (0) +#define __pte_free_tlb(tlb, pte, addr) \ + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) #endif diff --git a/arch/sh/include/asm/pgalloc.h b/arch/sh/include/asm/pgalloc.h index 96d938fdf2244..6fe7123d38fa9 100644 --- a/arch/sh/include/asm/pgalloc.h +++ b/arch/sh/include/asm/pgalloc.h @@ -32,10 +32,7 @@ static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd, set_pmd(pmd, __pmd((unsigned long)page_address(pte))); } -#define __pte_free_tlb(tlb, pte, addr) \ -do { \ - pagetable_dtor(page_ptdesc(pte)); \ - tlb_remove_page_ptdesc((tlb), (page_ptdesc(pte))); \ -} while (0) +#define __pte_free_tlb(tlb, pte, addr) \ + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) #endif /* __ASM_SH_PGALLOC_H */ diff --git a/arch/um/include/asm/pgalloc.h b/arch/um/include/asm/pgalloc.h index f0af23c3aeb2b..826ec44b58cdb 100644 --- a/arch/um/include/asm/pgalloc.h +++ b/arch/um/include/asm/pgalloc.h @@ -25,27 +25,18 @@ */ extern pgd_t *pgd_alloc(struct mm_struct *); -#define __pte_free_tlb(tlb, pte, address) \ -do { \ - pagetable_dtor(page_ptdesc(pte)); \ - tlb_remove_page_ptdesc((tlb), (page_ptdesc(pte))); \ -} while (0) +#define __pte_free_tlb(tlb, pte, address) \ + tlb_remove_ptdesc((tlb), page_ptdesc(pte)) #if CONFIG_PGTABLE_LEVELS > 2 -#define __pmd_free_tlb(tlb, pmd, address) \ -do { \ - pagetable_dtor(virt_to_ptdesc(pmd)); \ - tlb_remove_page_ptdesc((tlb), virt_to_ptdesc(pmd)); \ -} while (0) +#define __pmd_free_tlb(tlb, pmd, address) \ + tlb_remove_ptdesc((tlb), virt_to_ptdesc(pmd)) #if CONFIG_PGTABLE_LEVELS > 3 -#define __pud_free_tlb(tlb, pud, address) \ -do { \ - pagetable_dtor(virt_to_ptdesc(pud)); \ - tlb_remove_page_ptdesc((tlb), virt_to_ptdesc(pud)); \ -} while (0) +#define __pud_free_tlb(tlb, pud, address) \ + tlb_remove_ptdesc((tlb), virt_to_ptdesc(pud)) #endif #endif