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
