Re: [PATCH v7 1/2] mm/mmu_gather: prepare to skip redundant sync IPIs
From: David Hildenbrand (Arm)
Date: Mon Mar 23 2026 - 07:12:39 EST
On 3/9/26 03:07, Lance Yang wrote:
> From: Lance Yang <lance.yang@xxxxxxxxx>
>
> When page table operations require synchronization with software/lockless
> walkers, they call tlb_remove_table_sync_{one,rcu}() after flushing the
> TLB (tlb->freed_tables or tlb->unshared_tables).
>
> On architectures where the TLB flush already sends IPIs to all target CPUs,
> the subsequent sync IPI broadcast is redundant. This is not only costly on
> large systems where it disrupts all CPUs even for single-process page table
> operations, but has also been reported to hurt RT workloads[1].
>
> Introduce tlb_table_flush_implies_ipi_broadcast() to check if the prior TLB
> flush already provided the necessary synchronization. When true, the sync
> calls can early-return.
>
> A few cases rely on this synchronization:
>
> 1) hugetlb PMD unshare[2]: The problem is not the freeing but the reuse
> of the PMD table for other purposes in the last remaining user after
> unsharing.
>
> 2) khugepaged collapse[3]: Ensure no concurrent GUP-fast before collapsing
> and (possibly) freeing the page table / re-depositing it.
>
> Currently always returns false (no behavior change). The follow-up patch
> will enable the optimization for x86.
>
> [1] https://lore.kernel.org/linux-mm/1b27a3fa-359a-43d0-bdeb-c31341749367@xxxxxxxxxx/
> [2] https://lore.kernel.org/linux-mm/6a364356-5fea-4a6c-b959-ba3b22ce9c88@xxxxxxxxxx/
> [3] https://lore.kernel.org/linux-mm/2cb4503d-3a3f-4f6c-8038-7b3d1c74b3c2@xxxxxxxxxx/
>
> Suggested-by: David Hildenbrand (Arm) <david@xxxxxxxxxx>
> Signed-off-by: Lance Yang <lance.yang@xxxxxxxxx>
> ---
Acked-by: David Hildenbrand (Arm) <david@xxxxxxxxxx>
--
Cheers,
David