On Fri, 11 Sep 2026 20:36:47 +0100 "Lorenzo Stoakes (ARM)" [off-list ref] 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
_