Re: [PATCH] mm/hugetlb: avoid unnecessary TLB flush for empty folio list in vmemmap optimize

From: Muchun Song

Date: Tue Jun 30 2026 - 08:04:18 EST




> On Jun 30, 2026, at 19:38, Wentao Guan <guanwentao@xxxxxxxxxxxxx> wrote:
>
> __hugetlb_vmemmap_optimize_folios() unconditionally issues a final
> flush_tlb_all() in its out path. However, a TLB flush must be paired
> with an actual page table modification.
>
> When the input folio list is empty, neither PMD splitting nor PTE
> remapping takes place, so no page tables are modified and the flush is
> pure overhead. An empty list is reached in common paths such as
> gather_bootmem_prealloc_node() on nodes without bootmem gigantic pages,
> hugetlb_pages_alloc_boot_node() when no pages were allocated, and
> runtime allocation failure paths in set_max_huge_pages().
>
> Add an early return for empty lists. This restores the basic invariant
> that TLB flushes are only issued when page tables have been modified,
> and it also makes the NULL hstate passed by gather_bootmem_prealloc_node()
> on an empty list harmless.
>
> Assisted-by: kimi-cli:kimi-k2.7 code
> Assisted-by: Github Copilot:gpt-5.2 #Reported-by
>
> Fixes: 79359d6d24df ("hugetlb: perform vmemmap optimization on a list of pages")

Actually, this is an optimization, so it doesn't need a bugfix—unless it's a hot
path or causing a massive performance degradation, that's clearly not the case
here.

> Signed-off-by: Wentao Guan <guanwentao@xxxxxxxxxxxxx>

I actually have a local optimization that covers this, so LGTM:

Reviewed-by: Muchun Song <muchun.song@xxxxxxxxx>

Thanks.