Re: [PATCH v1 4/4] mm/hugetlb: fix excessive IPI broadcasts when unsharing PMD tables using mmu_gather

From: David Hildenbrand (Red Hat)

Date: Sun Dec 07 2025 - 07:39:20 EST


On 12/7/25 13:24, Nadav Amit wrote:


On 7 Dec 2025, at 14:15, Nadav Amit <nadav.amit@xxxxxxxxx> wrote:


On 5 Dec 2025, at 23:35, David Hildenbrand (Red Hat) <david@xxxxxxxxxx> wrote:

@@ -400,6 +411,7 @@ static inline void __tlb_reset_range(struct mmu_gather *tlb)


@@ -400,6 +411,7 @@ static inline void __tlb_reset_range(struct mmu_gather *tlb)
tlb->cleared_pmds = 0;
tlb->cleared_puds = 0;
tlb->cleared_p4ds = 0;
+ tlb->unshared_tables = 0;
/*
* Do not reset mmu_gather::vma_* fields here, we do not
* call into tlb_start_vma() again to set them if there is an

I understand you don’t want to initialize fully_unshared_tables here, but
tlb_gather_mmu() needs to happen somewhere. So you probably want it to
take place in tlb_gather_mmu(), no?

To clarify my messed up response: the code needs to initialize fully_unshared_tables
somewhere during tlb_gather_mmu() invocation.

Good point, __tlb_gather_mmu() needs to initialize it explicitly!

Thanks a lot for the review, appreciated!

--
Cheers

David