[PATCH v2 11/12] mm: make userland page table freeing RCU-safe
Lorenzo Stoakes (ARM)
ljs at kernel.org
Wed Sep 9 09:44:16 PDT 2026
On Wed, Sep 09, 2026 at 10:15:13AM +0100, Kiryl Shutsemau wrote:
> On Tue, Sep 08, 2026 at 01:32:20PM +0100, Lorenzo Stoakes (ARM) wrote:
> > Now every architecture has been converted to support
> > CONFIG_MMU_GATHER_RCU_TABLE_FREE, this configuration option no longer makes
> > any sense to keep around.
> >
> > Therefore remove it, and remove all the dead code that existed for
> > !CONFIG_MMU_GATHER_RCU_TABLE_FREE architectures previously.
> >
> > Additionally, CONFIG_MMU_GATHER_TABLE_FREE is no longer necessary, as all
> > architectures instead use CONFIG_HAVE_ARCH_TLB_REMOVE_TABLE when a custom
> > __tlb_remove_table() is required, so remove this too.
> >
> > A number of architectures only enabled CONFIG_MMU_GATHER_RCU_TABLE_FREE if
> > CONFIG_MMU was set, however the mmu_gather logic only actually does
> > something meaningful if CONFIG_MMU is set (mmu_gather.c is only compiled in
> > this case, for instance).
> >
> > As a result, there's no need to gate any of this logic on CONFIG_MMU
> > explicitly.
> >
> > CONFIG_PT_RECLAIM however does have a strict dependency on CONFIG_MMU, so
> > make this dependency explicit.
> >
> > Additionally, correct comments to remove references to non-RCU page table
> > gathering and make it clear that this is not 'semi-RCU', nor has it been
> > since commit 1fb3d8c20bfa ("mm/mmu_gather: replace IPI with
> > synchronize_rcu() when batch allocation fails").
> >
> > With this change in place the kernel policy is now that all page tables are
>
> You missed s/all/userspace/ from v1.
Hmm I thought I got this... will fix on respin!
>
> > freed after an RCU grace period, and thus it is now safe to unconditionally
> > perform page table walks under RCU, safe in the knowledge that page tables
> > will not be freed underneath the walker.
>
>
> > @@ -151,24 +148,15 @@
> > * This might be useful if your architecture has size specific TLB
> > * invalidation instructions.
> > *
> > - * MMU_GATHER_TABLE_FREE
> > - *
> > - * This provides tlb_remove_table(), to be used instead of tlb_remove_page()
> > - * for page directores (__p*_free_tlb()).
> > - *
> > - * Useful if your architecture has non-page page directories.
> > + * Page directories (__p*_free_tlb()) are always freed via tlb_remove_table(),
> > + * after an RCU grace period (see mm/mmu_gather.c).
> > *
> > - * When used, an architecture is expected to provide __tlb_remove_table() or
> > - * use the generic __tlb_remove_table(), which does the actual freeing of these
> > - * pages.
> > + * This serialises against software page-table walkers, including architectures
> > + * which do not use IPIs for remote TLB invalidates.
>
> Indentation is broken.
Ugh I thought I fixed this before I respun too, doh!
Will fix.
>
> --
> Kiryl Shutsemau / Kirill A. Shutemov
--
Cheers, Lorenzo
More information about the linux-snps-arc
mailing list