On Fri, 11 Sep 2026 20:36:47 +0100 "Lorenzo Stoakes (ARM)" <[email protected]> wrote:
> The majority of architectures in the kernel defer page table freeing until > an RCU grace period has elapsed, this series converts all remaining > architectures to do so too and eliminates CONFIG_MMU_GATHER_RCU_TABLE_FREE > altogether. Thanks, I've updated mm.git's mm-unstable branch to this version. > v3: > * Added Kiryl's tag to series (thanks! :) > * Corrected commit message, comment indentation in 11/12 as per Kiryl. > * Corrected 12/12 documentation as per Kiryl. Here's how v3 altered mm.git: Documentation/mm/process_addrs.rst | 4 ++-- include/asm-generic/tlb.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) --- a/Documentation/mm/process_addrs.rst~b +++ a/Documentation/mm/process_addrs.rst @@ -541,8 +541,8 @@ We establish basic locking rules when in after an RCU grace period has elapsed. However, any entry found must be revalidated after the page table lock is taken (such as the :c:func:`!pmd_same` recheck performed by :c:func:`!pte_offset_map_lock`) - before it is acted upon. Changing an entry always requires the page table - lock. + before it is acted upon. Changing an entry requires the page table + lock and one of the locks that excludes teardown (mmap or VMA lock). * Reads from and writes to page table entries must be *appropriately* atomic. See the section on atomicity below for details. * Populating previously empty entries requires that the mmap or VMA locks are --- a/include/asm-generic/tlb.h~b +++ a/include/asm-generic/tlb.h @@ -151,8 +151,8 @@ * Page directories (__p*_free_tlb()) are always freed via tlb_remove_table(), * after an RCU grace period (see mm/mmu_gather.c). * - * This serialises against software page-table walkers, including architectures - * which do not use IPIs for remote TLB invalidates. + * This serialises against software page-table walkers, including architectures + * which do not use IPIs for remote TLB invalidates. * * An architecture is expected to provide __tlb_remove_table() (see * HAVE_ARCH_TLB_REMOVE_TABLE) or use the generic __tlb_remove_table(), which _
