Linux makes per-VMA locks unconditional on all configs
The change lets binder and TCP drop mmap_lock fallbacks, and Andrew Morton has queued the series for testing.
Dave Hansen and Suren Baghdasaryan have advanced a series that makes per-VMA locks available in every Linux kernel configuration, ending the architecture opt-in that limited them to selected SMP and MMU builds.
Per-VMA locks let code lock a single virtual memory area instead of taking the process-wide mmap lock, which reduces contention under parallel fault and reclaim traffic. For years they were gated by a Kconfig marker that mainly signaled whether an architecture used them in its fault handler, not whether the mechanism actually worked. The underlying primitives (RCU, maple trees, refcounts) already function without SMP or an MMU, so the series enables the locks everywhere. The cost is a modest size increase for the VMA and mm structures on no-MMU and uniprocessor builds; the authors chose a uniform implementation over special-casing those configs for now.
Universal availability unlocks simpler callers. The series adds a helper that looks up and read-locks a VMA without holding mmap_lock on the fast path, waiting for writers rather than failing and forcing a fallback. Binder's reclaim path and TCP zerocopy drop their dual-path mmap_lock fallbacks as a result, cutting complexity and conditional compilation. On no-MMU systems the read path still falls back to mmap_lock by design, because those builds do not write-lock VMAs; binder and TCP zerocopy are already MMU-only, so the cleanups do not change their behavior there.
Andrew Morton has applied the work to his testing tree after more than two weeks on the list, calling it adequately reviewed, and asked for a refresh plus further acks from binder and networking maintainers.