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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1C685C5475B for ; Wed, 6 Mar 2024 12:57:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 886946B0071; Wed, 6 Mar 2024 07:57:06 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 851C36B0072; Wed, 6 Mar 2024 07:57:06 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6A4AF6B0074; Wed, 6 Mar 2024 07:57:06 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 5964C6B0071 for ; Wed, 6 Mar 2024 07:57:06 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 2447640C1D for ; Wed, 6 Mar 2024 12:57:06 +0000 (UTC) X-FDA: 81866614452.14.BF7BB90 Received: from gandalf.ozlabs.org (gandalf.ozlabs.org [150.107.74.76]) by imf15.hostedemail.com (Postfix) with ESMTP id 949D0A0011 for ; Wed, 6 Mar 2024 12:57:03 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=ellerman.id.au header.s=201909 header.b=UfEtVolq; dmarc=none; spf=pass (imf15.hostedemail.com: domain of mpe@ellerman.id.au designates 150.107.74.76 as permitted sender) smtp.mailfrom=mpe@ellerman.id.au ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1709729824; 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-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=7qMkj855gnIh1UQkcFt0aaaoTWPFayqXkWGgolRjo9E=; b=0BAY9TRpEQ4uYVwG5r5r8iCOFkKCPu8m09y/Psa3Ev2fR73mrE13s6QkdFf+cv30BXacPe 3spyNHa92N+fs0U29+fQ5bVLX7u+IDYEhgdqtT0auwyDZLvqKSufNl1ODNPcCZFsYCWsXQ J8MOKKDh1m5Knrir4w7RV9tRg0HWVWM= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=ellerman.id.au header.s=201909 header.b=UfEtVolq; dmarc=none; spf=pass (imf15.hostedemail.com: domain of mpe@ellerman.id.au designates 150.107.74.76 as permitted sender) smtp.mailfrom=mpe@ellerman.id.au ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1709729824; a=rsa-sha256; cv=none; b=JRnOYG65cZ4fvL15dOSWN4YUIbC63Nx3kYhOoew+Bo9xfZrTDCmnK9iv3Biget5SaiuP/f E8fWu8LV2MYxnhRgJUDksuef8cUCzUglbIUOeSNRyOOSXpqO7RPvOj61Hlnbnjn1Hgzhnl cXhAf1yxOPw8siF17NOF1VItd0TxwtM= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ellerman.id.au; s=201909; t=1709729819; bh=7qMkj855gnIh1UQkcFt0aaaoTWPFayqXkWGgolRjo9E=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=UfEtVolq5MqXw9jCn/GeBb+IBQz1dQvJaH/0rnEilELcXz+ev5Hbtp9B7h7mEpBX6 Qz3f0JVrd097eeURWnaXC2C/GW5fBXQWNrwBK0QxwWX1YaRiQ6aIQQ0XFTkV+WzC5v GXYLf6FZmSDmamdgEA80gV9hcMOlFslVWN4X9wP38RFheO1qGLQawaGr7s8/LUFbMT gHkmLZS2HLXRCVJcdsFeWrt3RUA35VQsD9LPG6nt3TSnIA5kK6I5fFJLsrkNZ/vfmm hPS72F4Sajlz8pB2B5k39v9Xa14Hc85llYzAKp2qodd6KdX7Cyd3f5C9srqntJv+gy 0gOjJMv33jZmA== Received: from authenticated.ozlabs.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mail.ozlabs.org (Postfix) with ESMTPSA id 4TqXWY0xZyz4wc8; Wed, 6 Mar 2024 23:56:56 +1100 (AEDT) From: Michael Ellerman To: peterx@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org, Andrew Morton , Muchun Song , Jason Gunthorpe , peterx@redhat.com, Matthew Wilcox , Mike Rapoport , Christophe Leroy , x86@kernel.org, sparclinux@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Nicholas Piggin , "Aneesh Kumar K.V" , "Naveen N. Rao" Subject: Re: [PATCH RFC 09/13] mm/powerpc: Redefine pXd_huge() with pXd_leaf() In-Reply-To: <20240306104147.193052-10-peterx@redhat.com> References: <20240306104147.193052-1-peterx@redhat.com> <20240306104147.193052-10-peterx@redhat.com> Date: Wed, 06 Mar 2024 23:56:56 +1100 Message-ID: <87v85zo6w7.fsf@mail.lhotse> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 949D0A0011 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: j8qnrn6fkb8y76tox1t7skgraakz9wmo X-HE-Tag: 1709729823-792185 X-HE-Meta: U2FsdGVkX1+NCjdqT/KIWdJk7X0DLdW+jUy3X5mPOndi9zcdomaXtWTwf+ATjTkEt/YIybjaGgrIu4yMVLRgd9y8NUoQBgqPxVWIfGcCq1BSuo3O5tM4y/ULJbZ6v8UYIE1nfi3CSR7xGtA6IxAuY64Nhjid29E7V+/cOG2Yj9uA/ib+PH10MNpestHa/9z2ZHmnsQ9LuNWfrQ6pUDTZ3VsGONyKEcF45rRCMv3BMwb5oZEG12pyIaCPZlntTXw//HJV0jLLIfVmh6fE1E15NnNE6eF5i4wqw6FOobFB9b38RNWGb3ay09LOvvcFP8/zROj94W9AUeIEEK5TbEEyk0bJlFYC3ZII3j6oy/GRZYJ7qgR3fElnQjYHJMabBfo5+jNbsCJScIBey/eUeUcHS/j92p2DAyxk59grVXCD/El3qi3hYZaNmFRQ1saC2nGuyfTOWw+DTncX7tRBF/SglK6YV2noFjazib8Sj1fR3ixwycIGV6oI4+47ABgoMPJ48rGq5jhWGxGUxzUurV87T4uSWOIBOeBQY4DiCogKcYI1/4onYoydyC+kQN7pi+XCSZBs0dVOYUY3wQ3Cnzo6G5hO9nFg2Q/yQ4RO6VjEX3CAwjOFLhZYEXlU4es+o21lMNC6Be2Esb0ywFdUmZrvc/obtOw/dN0UymeXZpWmCmJ2s861hvEVgXQ6q4xZx78947QPJuihbvEApnngmvCdQPa1X+8PHbunkPhVTECwr7Cg06owfSfb1fEzJX1iyNx4zmZLk/LHSndVlomCeOU1Jnz+h1sQ48GgDLNvL8VHnCcvmkeb4d5R0vFT3r3CnV5w5Sr/rtZ/+03qIDJevB5A7Xk04cRPq1oHnl0Ou4W7QwG9JlHELd0d7PxQb4VEvmna8p/XrLAAR2A= 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: peterx@redhat.com writes: > From: Peter Xu > > PowerPC book3s 4K mostly has the same definition on both, except pXd_huge= () > constantly returns 0 for hash MMUs. AFAICT that is fine to be removed, > because pXd_huge() reflects a hugetlb entry, while it's own hugetlb pgtab= le > lookup function (__find_linux_pte() shared by all powerpc code) already u= se > pXd_leaf() irrelevant of the MMU type. It means pXd_leaf() should work a= ll > fine with hash MMU pgtables or something could already went wrong. Yes I think that's correct. 4K Hash MMU doesn't support any hugepage size at PMD or PUD level (the geometry is wrong), so pmd/pud_huge() were written with that in mind, ie. they are hard coded to return false. But it should be OK to use pmd/pud_leaf(), they will actually look for _PAGE_PTE, but it should never be set for 4K Hash. See eg. arch/powerpc/include/asm/book3s/64/hash-4k.h: static inline pmd_t hash__pmd_mkhuge(pmd_t pmd) { BUG(); return pmd; } > The goal should be that we will have one API pXd_leaf() to detect all kin= ds > of huge mappings. AFAICT we need to use the pXd_leaf() impl (rather than > pXd_huge() ones) to make sure ie. THPs on hash MMU will also return true. > > This helps to simplify a follow up patch to drop pXd_huge() treewide. > > Cc: Michael Ellerman > Cc: Nicholas Piggin > Cc: Christophe Leroy > Cc: "Aneesh Kumar K.V" > Cc: "Naveen N. Rao" > Cc: linuxppc-dev@lists.ozlabs.org > Signed-off-by: Peter Xu > --- > arch/powerpc/include/asm/book3s/64/pgtable-4k.h | 14 ++------------ > 1 file changed, 2 insertions(+), 12 deletions(-) > > diff --git a/arch/powerpc/include/asm/book3s/64/pgtable-4k.h b/arch/power= pc/include/asm/book3s/64/pgtable-4k.h > index 48f21820afe2..92545981bb49 100644 > --- a/arch/powerpc/include/asm/book3s/64/pgtable-4k.h > +++ b/arch/powerpc/include/asm/book3s/64/pgtable-4k.h > @@ -8,22 +8,12 @@ > #ifdef CONFIG_HUGETLB_PAGE > static inline int pmd_huge(pmd_t pmd) > { > - /* > - * leaf pte for huge page > - */ > - if (radix_enabled()) > - return !!(pmd_raw(pmd) & cpu_to_be64(_PAGE_PTE)); > - return 0; > + return pmd_leaf(pmd); > } >=20=20 > static inline int pud_huge(pud_t pud) > { > - /* > - * leaf pte for huge page > - */ > - if (radix_enabled()) > - return !!(pud_raw(pud) & cpu_to_be64(_PAGE_PTE)); > - return 0; > + return pud_leaf(pud); > } This doesn't actually compile though. arch/powerpc/include/asm/book3s/64/pgtable-4k.h:11:16: error: implicit de= claration of function =E2=80=98pmd_leaf=E2=80=99; did you mean =E2=80=98pgd= _clear=E2=80=99? [-Werror=3Dimplicit-function-declaration] etc. To make it compile we'd need to relocate the pmd/pud_leaf() definitions: diff --git a/arch/powerpc/include/asm/book3s/64/pgtable.h b/arch/powerpc/in= clude/asm/book3s/64/pgtable.h index df66dce8306f..fd7180fded75 100644 --- a/arch/powerpc/include/asm/book3s/64/pgtable.h +++ b/arch/powerpc/include/asm/book3s/64/pgtable.h @@ -262,6 +262,18 @@ extern unsigned long __kernel_io_end; extern struct page *vmemmap; extern unsigned long pci_io_base; + +#define pmd_leaf pmd_leaf +static inline bool pmd_leaf(pmd_t pmd) +{ + return !!(pmd_raw(pmd) & cpu_to_be64(_PAGE_PTE)); +} + +#define pud_leaf pud_leaf +static inline bool pud_leaf(pud_t pud) +{ + return !!(pud_raw(pud) & cpu_to_be64(_PAGE_PTE)); +} #endif /* __ASSEMBLY__ */ #include @@ -1436,20 +1448,5 @@ static inline bool is_pte_rw_upgrade(unsigned long o= ld_val, unsigned long new_va return false; } -/* - * Like pmd_huge(), but works regardless of config options - */ -#define pmd_leaf pmd_leaf -static inline bool pmd_leaf(pmd_t pmd) -{ - return !!(pmd_raw(pmd) & cpu_to_be64(_PAGE_PTE)); -} - -#define pud_leaf pud_leaf -static inline bool pud_leaf(pud_t pud) -{ - return !!(pud_raw(pud) & cpu_to_be64(_PAGE_PTE)); -} - #endif /* __ASSEMBLY__ */ #endif /* _ASM_POWERPC_BOOK3S_64_PGTABLE_H_ */ cheers