| From: Peter Xu <peterx@redhat.com> |
| Subject: mm/arm: use macros to define pmd/pud helpers |
| Date: Mon, 18 Mar 2024 16:03:56 -0400 |
| |
| It's already confusing that ARM 2-level v.s. 3-level defines SECT bit |
| differently on pmd/puds. Always use a macro which is much clearer. |
| |
| Link: https://lkml.kernel.org/r/20240318200404.448346-7-peterx@redhat.com |
| Signed-off-by: Peter Xu <peterx@redhat.com> |
| Cc: Russell King <linux@armlinux.org.uk> |
| Cc: Shawn Guo <shawnguo@kernel.org> |
| Cc: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> |
| Cc: Bjorn Andersson <andersson@kernel.org> |
| Cc: Arnd Bergmann <arnd@arndb.de> |
| Cc: Konrad Dybcio <konrad.dybcio@linaro.org> |
| Cc: Fabio Estevam <festevam@denx.de> |
| Cc: Alistair Popple <apopple@nvidia.com> |
| Cc: Andreas Larsson <andreas@gaisler.com> |
| Cc: "Aneesh Kumar K.V" <aneesh.kumar@kernel.org> |
| Cc: Borislav Petkov <bp@alien8.de> |
| Cc: Catalin Marinas <catalin.marinas@arm.com> |
| Cc: Christophe Leroy <christophe.leroy@csgroup.eu> |
| Cc: Dave Hansen <dave.hansen@linux.intel.com> |
| Cc: David S. Miller <davem@davemloft.net> |
| Cc: Ingo Molnar <mingo@redhat.com> |
| Cc: Jason Gunthorpe <jgg@nvidia.com> |
| Cc: Lucas Stach <l.stach@pengutronix.de> |
| Cc: Mark Salter <msalter@redhat.com> |
| Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org> |
| Cc: Michael Ellerman <mpe@ellerman.id.au> |
| Cc: Mike Rapoport (IBM) <rppt@kernel.org> |
| Cc: Muchun Song <muchun.song@linux.dev> |
| Cc: Naoya Horiguchi <nao.horiguchi@gmail.com> |
| Cc: "Naveen N. Rao" <naveen.n.rao@linux.ibm.com> |
| Cc: Nicholas Piggin <npiggin@gmail.com> |
| Cc: Thomas Gleixner <tglx@linutronix.de> |
| Cc: Will Deacon <will@kernel.org> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| arch/arm/include/asm/pgtable-2level.h | 4 ++-- |
| arch/arm/include/asm/pgtable-3level-hwdef.h | 1 + |
| arch/arm/include/asm/pgtable-3level.h | 4 ++-- |
| 3 files changed, 5 insertions(+), 4 deletions(-) |
| |
| --- a/arch/arm/include/asm/pgtable-2level.h~mm-arm-use-macros-to-define-pmd-pud-helpers |
| +++ a/arch/arm/include/asm/pgtable-2level.h |
| @@ -213,8 +213,8 @@ static inline pmd_t *pmd_offset(pud_t *p |
| |
| #define pmd_pfn(pmd) (__phys_to_pfn(pmd_val(pmd) & PHYS_MASK)) |
| |
| -#define pmd_leaf(pmd) (pmd_val(pmd) & 2) |
| -#define pmd_bad(pmd) (pmd_val(pmd) & 2) |
| +#define pmd_leaf(pmd) (pmd_val(pmd) & PMD_TYPE_SECT) |
| +#define pmd_bad(pmd) pmd_leaf(pmd) |
| #define pmd_present(pmd) (pmd_val(pmd)) |
| |
| #define copy_pmd(pmdpd,pmdps) \ |
| --- a/arch/arm/include/asm/pgtable-3level.h~mm-arm-use-macros-to-define-pmd-pud-helpers |
| +++ a/arch/arm/include/asm/pgtable-3level.h |
| @@ -112,7 +112,7 @@ |
| #ifndef __ASSEMBLY__ |
| |
| #define pud_none(pud) (!pud_val(pud)) |
| -#define pud_bad(pud) (!(pud_val(pud) & 2)) |
| +#define pud_bad(pud) (!(pud_val(pud) & PUD_TABLE_BIT)) |
| #define pud_present(pud) (pud_val(pud)) |
| #define pmd_table(pmd) ((pmd_val(pmd) & PMD_TYPE_MASK) == \ |
| PMD_TYPE_TABLE) |
| @@ -137,7 +137,7 @@ static inline pmd_t *pud_pgtable(pud_t p |
| return __va(pud_val(pud) & PHYS_MASK & (s32)PAGE_MASK); |
| } |
| |
| -#define pmd_bad(pmd) (!(pmd_val(pmd) & 2)) |
| +#define pmd_bad(pmd) (!(pmd_val(pmd) & PMD_TABLE_BIT)) |
| |
| #define copy_pmd(pmdpd,pmdps) \ |
| do { \ |
| --- a/arch/arm/include/asm/pgtable-3level-hwdef.h~mm-arm-use-macros-to-define-pmd-pud-helpers |
| +++ a/arch/arm/include/asm/pgtable-3level-hwdef.h |
| @@ -14,6 +14,7 @@ |
| * + Level 1/2 descriptor |
| * - common |
| */ |
| +#define PUD_TABLE_BIT (_AT(pmdval_t, 1) << 1) |
| #define PMD_TYPE_MASK (_AT(pmdval_t, 3) << 0) |
| #define PMD_TYPE_FAULT (_AT(pmdval_t, 0) << 0) |
| #define PMD_TYPE_TABLE (_AT(pmdval_t, 3) << 0) |
| _ |