Re: [PATCH v8 09/14] powerpc: move has_transparent_hugepage() out of THP guard
From: Christophe Leroy (CS GROUP)
Date: Tue Oct 06 2026 - 00:48:33 EST
Le 05/10/2026 à 22:40, Luiz Capitulino a écrit :
On 10/5/26 12:52 AM, Christophe Leroy (CS GROUP) wrote:
Hi,
Don't forget <linuxppc-dev@xxxxxxxxxxxxxxxx> when you address powerpc architecture.
Will do.
Le 03/10/2026 à 17:44, Luiz Capitulino a écrit :
On 10/2/26 3:28 PM, David Hildenbrand (Arm) wrote:
On 9/18/26 03:45, Luiz Capitulino wrote:
A future commit will introduce a kernel API to allow for checking if the
CPU supports PMD-sized pages. This API will be based on the
has_transparent_hugepage() implementation but will be orthogonal to THP
and therefore must work when CONFIG_TRANSPARENT_HUGEPAGE=n.
Move its definition out of the THP guard.
Signed-off-by: Luiz Capitulino <luizcap@xxxxxxxxxx>
---
arch/powerpc/include/asm/book3s/64/hash-4k.h | 2 +-
arch/powerpc/include/asm/book3s/64/hash-64k.h | 2 +-
arch/powerpc/include/asm/book3s/64/pgtable.h | 18 ++++++++ +---------
arch/powerpc/include/asm/book3s/64/radix.h | 14 +++++++-------
arch/powerpc/mm/book3s64/hash_pgtable.c | 4 ++--
5 files changed, 20 insertions(+), 20 deletions(-)
diff --git a/arch/powerpc/include/asm/book3s/64/hash-4k.h b/arch/ powerpc/include/asm/book3s/64/hash-4k.h
index 8e5bd9902bed..79511e6abfca 100644
--- a/arch/powerpc/include/asm/book3s/64/hash-4k.h
+++ b/arch/powerpc/include/asm/book3s/64/hash-4k.h
@@ -165,9 +165,9 @@ extern void hash__pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp,
extern pgtable_t hash__pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp);
extern pmd_t hash__pmdp_huge_get_and_clear(struct mm_struct *mm,
unsigned long addr, pmd_t *pmdp);
-extern int hash__has_transparent_hugepage(void);
#endif
+extern int hash__has_transparent_hugepage(void);
#endif /* !__ASSEMBLER__ */
#endif /* _ASM_POWERPC_BOOK3S_64_HASH_4K_H */
diff --git a/arch/powerpc/include/asm/book3s/64/hash-64k.h b/arch/ powerpc/include/asm/book3s/64/hash-64k.h
index 7deb3a66890b..a4a44a112ff9 100644
--- a/arch/powerpc/include/asm/book3s/64/hash-64k.h
+++ b/arch/powerpc/include/asm/book3s/64/hash-64k.h
@@ -278,9 +278,9 @@ extern void hash__pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp,
extern pgtable_t hash__pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp);
extern pmd_t hash__pmdp_huge_get_and_clear(struct mm_struct *mm,
unsigned long addr, pmd_t *pmdp);
-extern int hash__has_transparent_hugepage(void);
Without some of these helpers in place, I assume actually using PMD leafs
without THP would require some more work. (which is not the goal of this series,
just asking).
Yes, you're right.
I do wonder whether the architecture should instead simply say "not supported"
if !CONFIG_TRANSPARENT_HUGEPAGE?
That should still enable your series: using mTHP without PMD support.
Yes, it would. However, I think this introduces an inconsistency.
powerpc has two types of MMU (HASH and RADIX) with different page layout. MMU type is selected at boottime based on the capabilities of the CPU. For transparent page you have:
static inline int has_transparent_hugepage(void)
{
if (radix_enabled())
return radix__has_transparent_hugepage();
return hash__has_transparent_hugepage();
}
Right and, unless I'm misunderstanding your comment, this supports my
position that the new arch_has_pmd_leaves() API is all about reporting a
hardware capability and not tied to THP support.
Yes my comment was in reaction of comment below, I wanted to say that CONFIG_TRANSPARENT_HUGEPAGE is not always enough to tell if a powerpc actually has transparent hugepages or not.
>>>> I do wonder whether the architecture should instead simply say "not
>>>> supported"
>>>> if !CONFIG_TRANSPARENT_HUGEPAGE?
>>>>
>>>> That should still enable your series: using mTHP without PMD support.