[PATCH 1/2] arm64: tlbflush: Don't broadcast if mm was only active on local cpu

Will Deacon will at kernel.org
Sun Jun 14 02:44:07 PDT 2026


On Thu, Jun 11, 2026 at 04:29:29PM +0100, Catalin Marinas wrote:
> On Tue, Jun 09, 2026 at 02:34:32PM -0700, sk at gentwo.org wrote:
> > From: Ryan Roberts <ryan.roberts at arm.com>
> > 
> > There are 3 variants of tlb flush that invalidate user mappings:
> > flush_tlb_mm(), flush_tlb_page() and __flush_tlb_range(). All of these
> > would previously unconditionally broadcast their tlbis to all cpus in
> > the inner shareable domain.
> > 
> > But this is a waste of effort if we can prove that the mm for which we
> > are flushing the mappings has only ever been active on the local cpu. In
> > that case, it is safe to avoid the broadcast and simply invalidate the
> > current cpu.
> > 
> > So let's track in mm_context_t::active_cpu either the mm has never been
> > active on any cpu, has been active on more than 1 cpu, or has been
> > active on precisely 1 cpu - and in that case, which one. We update this
> > when switching context, being careful to ensure that it gets updated
> > *before* installing the mm's pgtables. On the reader side, we ensure we
> > read *after* the previous write(s) to the pgtable(s) that necessitated
> > the tlb flush have completed. This guarrantees that if a cpu that is
> > doing a tlb flush sees it's own id in active_cpu, then the old pgtable
> > entry cannot have been seen by any other cpu and we can flush only the
> > local cpu.
> > 
> > Signed-off-by: Ryan Roberts <ryan.roberts at arm.com>
> > Reviewed-by: Catalin Marinas <catalin.marinas at arm.com>
> > Tested-by: Huang Ying <ying.huang at linux.alibaba.com>
> > [linu.cherian at arm.com: Adapted for v7.1 flush tlb API changes]
> > Signed-off-by: Linu Cherian <linu.cherian at arm.com>
> 
> Nit: if you repost someone's patch, please add your signed-off-by.

I have a feeling this patch is horribly broken, so I'll reply on the
original.

Will



More information about the linux-arm-kernel mailing list