[PATCH v2 16/18] memblock: make HugeTLB bootmem allocation work with KHO

Pratyush Yadav pratyush at kernel.org
Mon Jun 15 06:35:39 PDT 2026


On Sun, Jun 14 2026, Mike Rapoport wrote:

> On Fri, 05 Jun 2026 20:34:49 +0200, Pratyush Yadav <pratyush at kernel.org> wrote:
>> Gigantic huge page allocation is somewhat broken currently when KHO is
>> used.
>> 
>> Firstly, they break KHO scratch size accounting. RSRV_KERN is used to
>> track how much memory is reserved for use by the kernel. Since
>> alloc_bootmem() calls the memblock_alloc*() APIs, the hugepages
>
> hugetlb::alloc_bootmem()

ACK.

>
>> [...]
>> First, it does not use mirrored memory for hugetlb. Mirrored memory is a
>> limited resource that is best saved for kernel data structures, not user
>> memory.
>> 
>> Second, if the memory found overlaps with KHO scratch areas, it discards
>> the memory and retries.
>
> This sentence is somewhat hard to parse.

Okay, let me retry:

    Second, if the free memory area found by memblock_find_in_range_node()
    is a part of a KHO scratch area, the free area is not used. Allocation
    is retried starting after the free area to ensure no hugepages come from
    KHO scratch.

Any better?

>
>>
>>
>> diff --git a/mm/memblock.c b/mm/memblock.c
>> index 6349c48154f4..131e54dd5d8d 100644
>> --- a/mm/memblock.c
>> +++ b/mm/memblock.c
>> @@ -1756,6 +1761,69 @@ void * __init memblock_alloc_try_nid_raw(
>> [ ... skip 51 lines ... ]
>> +		if (memblock_bottom_up())
>> +			start = addr + size;
>> +		else
>> +			start = addr - size;
>> +
>> +		goto retry;
>
> Hmm, two goto retry don't seem nice :/
> Although I can't see how to imporove it really.

Dunno, looked easy enough to understand to me.

>
> Maybe add a helper for going the node fallback?

There is a small downside. There will then be no way to know the
fallback was tried already, so if a retry is done because of scratch
overlap, the fallback needs to be done again.

I don't think it should be too bad, so if you still prefer this then I
can do it.

-- 
Regards,
Pratyush Yadav



More information about the kexec mailing list