Re: [RFC PATCH 3/3] powerpc/kho: exclude THP and HUGETLB_PAGE

Sourabh Jain <[email protected]>
Newsgroups org.ozlabs.lists.linuxppc-dev,org.infradead.lists.kexec,org.kernel.vger.linux-kernel
Message-ID <[email protected]>

On 21/08/26 17:04, Pratyush Yadav wrote:
> On Fri, Aug 21 2026, Sourabh Jain wrote:
>
>> Enabling CONFIG_KEXEC_HANDOVER together with CONFIG_TRANSPARENT_HUGEPAGE
>> or CONFIG_HUGETLB_PAGE on powerpc fails to build:
>>
>>      kernel/liveupdate/kexec_handover.c:49:39: error: expression in static assertion is not constant
>>         49 | static_assert(SCRATCH_ALIGNMENT_BYTES >= CMA_MIN_ALIGNMENT_BYTES);
>>      ./include/linux/build_bug.h:80:56: note: in definition of macro '__static_assert'
>>         80 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
>>            |                                                        ^~~~
>>      kernel/liveupdate/kexec_handover.c:49:1: note: in expansion of macro 'static_assert'
>>         49 | static_assert(SCRATCH_ALIGNMENT_BYTES >= CMA_MIN_ALIGNMENT_BYTES);
>>
>> CMA_MIN_ALIGNMENT_BYTES is derived from pageblock_order, which on
>> powerpc is not a compile-time constant when THP or HUGETLB_PAGE is
>> enabled -- powerpc can determine huge page size at runtime in that
>> configuration, so pageblock_order becomes a variable rather than a
>> constant expression. KHO's static_assert() on
>> SCRATCH_ALIGNMENT_BYTES >= CMA_MIN_ALIGNMENT_BYTES then fails to
>> compile, since it requires both sides to be constant expressions.
>>
>> Until CMA_MIN_ALIGNMENT_BYTES (or KHO's use of it) is made to handle
>> the non-constant pageblock_order case on powerpc, exclude
>> TRANSPARENT_HUGEPAGE and HUGETLB_PAGE from ARCH_SUPPORTS_KEXEC_HANDOVER
>> so the two can't be enabled together and hit this build failure.
> This should be a part of patch 2 I think. It is not a good idea to break
> the build in one patch and fix it in the next.

Agree. Since this is an RFC patch series, I kept it separate so that 
this issue could
be reviewed independently from patch 2. Going forward, I will merge them.


>
> That said, this is a debug check of sorts since SCRATCH_ALIGNMENT_BYTES
> is of MAX_ORDER_NR_PAGES, and pageblocks _should_ always be smaller of
> equal to this.
>
> Anyway, I don't think this is something you should gate by a config. I
> think you should either remove the static_assert(), or turn it into a
> runtime check.

Agreed. I will evaluate both options and decide which approach makes 
more sense.

Thanks for the review Pratyush.

- Sourabh Jain


>
> +Cc Michal.
>
>> Cc: Aditya Gupta <[email protected]>
>> Cc: Alexander Graf <[email protected]>
>> Cc: Andrew Morton <[email protected]>
>> Cc: Baoquan He <[email protected]>
>> Cc: Christophe Leroy (CS GROUP) <[email protected]>
>> Cc: Hari Bathini <[email protected]>
>> Cc: Madhavan Srinivasan <[email protected]>
>> Cc: Mahesh Salgaonkar <[email protected]>
>> Cc: Michael Ellerman <[email protected]>
>> Cc: Mike Rapoport <[email protected]>
>> Cc: Nicholas Piggin <[email protected]>
>> Cc: Pasha Tatashin <[email protected]>
>> Cc: Pratyush Yadav <[email protected]>
>> Cc: Ritesh Harjani (IBM) <[email protected]>
>> Cc: Shivang Upadhyay <[email protected]>
>> Cc: Shrikanth Hegde <[email protected]>
>> Cc: [email protected]
>> Cc: [email protected]
>> Signed-off-by: Sourabh Jain <[email protected]>
>> ---
>>   arch/powerpc/Kconfig | 1 +
>>   1 file changed, 1 insertion(+)
>>
>> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
>> index 61350d3e7a19..f68b9fc883ba 100644
>> --- a/arch/powerpc/Kconfig
>> +++ b/arch/powerpc/Kconfig
>> @@ -720,6 +720,7 @@ config ARCH_SUPPORTS_KEXEC_HANDOVER
>>   	def_bool y
>>   	depends on PPC64
>>   	depends on !CRASH_DUMP
>> +	depends on !TRANSPARENT_HUGEPAGE && !HUGETLB_PAGE
>>   
>>   config ARCH_SUPPORTS_CRASH_HOTPLUG
>>   	def_bool y
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.