[PATCH v2 11/12] mm: make userland page table freeing RCU-safe
Kiryl Shutsemau
kas at kernel.org
Wed Sep 9 02:15:13 PDT 2026
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.
> 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.
--
Kiryl Shutsemau / Kirill A. Shutemov
More information about the linux-snps-arc
mailing list