Re: [PATCH 06/17] mm/sparse-vmemmap: support section-based vmemmap accounting

From: Muchun Song

Date: Thu Jul 16 2026 - 02:49:21 EST


Sorry, there is some problem issue with my email, let me sent again.

> On Jul 16, 2026, at 14:23, Mike Rapoport <rppt@xxxxxxxxxx> wrote:
>
> On Wed, Jul 15, 2026 at 10:44:51PM +0800, Muchun Song wrote:
>>> On Jul 15, 2026, at 13:08, Mike Rapoport <rppt@xxxxxxxxxx> wrote:
>>>
>>>> section_nr_vmemmap_pages() is used to account the vmemmap pages consumed by a
>>>> memory section, but it currently only understands the ordinary case and the
>>>> pgmap-provided optimization case. That is not enough for section-based vmemmap
>>>> optimization, where the compound page order is carried by the memory section
>>>> itself and tail vmemmap pages may be shared.
>>>>
>>>> Make the helper report the actual vmemmap footprint of a section, so it can be
>>>> used as the common accounting path for both ordinary and optimized sections.
>>>>
>>>> Teach section_nr_vmemmap_pages() to use the section order when there is no
>>>> pgmap, and to account only the vmemmap pages that are actually needed for an
>>>> optimizable section. This keeps the accounting consistent with section-based
>>>> vmemmap optimization.
>>>>
>>>> Signed-off-by: Muchun Song <songmuchun@xxxxxxxxxxxxx>
>>>>
>>>> diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
>>>> index 6fa6e7f0abf9..41a1ebbe5e85 100644
>>>> --- a/include/linux/mmzone.h
>>>> +++ b/include/linux/mmzone.h
>>>> @@ -2403,6 +2403,14 @@ static inline unsigned int section_order(const struct mem_section *section)
>>>> }
>>>> #endif
>>>>
>>>> +static inline bool section_vmemmap_optimizable(const struct mem_section *section)
>>>> +{
>>>> + if (!is_power_of_2(sizeof(struct page)))
>>>> + return false;
>>>> +
>>>> + return section_order(section) >= OPTIMIZABLE_FOLIO_MIN_ORDER;
>>>
>>> Like with page_vmemmap_optimizable() I think it's not obvious that
>>> section_order() is enough to gate vmemmap optimization.
>>
>> page_vmemmap_optimizable() checks the optimizability of an individual page.
>> section_vmemmap_optimizable() checks whether the optimization can be applied
>> to a section. Some people may think that section_vmemmap_optimizable() checks
>> the optimizability of all pages within an entire section. You are referring
>> to that ambiguity, right?
>>
>> What do you think about renaming it to section_vmemmap_optimization_eligible()?
>> Would that clear up the ambiguity? Or should we add a comment to
>> section_vmemmap_optimizableto explain its purpose?
>
> The name is fine, IMHO.
> What I meant is that it would be clearer if there was a check for
> HUGETLB_PAGE_OPTIMIZE_VMEMMAP.

Thanks for your clarification, Mike.

Muchun.

>
> --
> Sincerely yours,
> Mike.