Hazard pointers appear to be a good fit for replacing refcount based lazy active mm tracking.
Highlight: will-it-scale context_switch1_threads nr threads (-t) speedup 24 +3% 48 +12% 96 +21% 192 +28% I'm curious to see what the build bots have to say about this. This series applies on top of v6.11.1. Signed-off-by: Mathieu Desnoyers <mathieu.desnoy...@efficios.com> Cc: Nicholas Piggin <npig...@gmail.com> Cc: Michael Ellerman <m...@ellerman.id.au> Cc: Greg Kroah-Hartman <gre...@linuxfoundation.org> Cc: Sebastian Andrzej Siewior <bige...@linutronix.de> Cc: "Paul E. McKenney" <paul...@kernel.org> Cc: Will Deacon <w...@kernel.org> Cc: Boqun Feng <boqun.f...@gmail.com> Cc: Alan Stern <st...@rowland.harvard.edu> Cc: John Stultz <jstu...@google.com> Cc: Neeraj Upadhyay <neeraj.upadh...@amd.com> Cc: Boqun Feng <boqun.f...@gmail.com> Cc: Frederic Weisbecker <frede...@kernel.org> Cc: Joel Fernandes <j...@joelfernandes.org> Cc: Josh Triplett <j...@joshtriplett.org> Cc: Uladzislau Rezki <ure...@gmail.com> Cc: Steven Rostedt <rost...@goodmis.org> Cc: Lai Jiangshan <jiangshan...@gmail.com> Cc: Zqiang <qiang.zhang1...@gmail.com> Cc: Ingo Molnar <mi...@redhat.com> Cc: Waiman Long <long...@redhat.com> Cc: Mark Rutland <mark.rutl...@arm.com> Cc: Thomas Gleixner <t...@linutronix.de> Cc: Vlastimil Babka <vba...@suse.cz> Cc: maged.mich...@gmail.com Cc: Mateusz Guzik <mjgu...@gmail.com> Cc: Jonas Oberhauser <jonas.oberhau...@huaweicloud.com> Cc: r...@vger.kernel.org Cc: linux...@kvack.org Cc: l...@lists.linux.dev Mathieu Desnoyers (4): compiler.h: Introduce ptr_eq() to preserve address dependency Documentation: RCU: Refer to ptr_eq() hp: Implement Hazard Pointers sched+mm: Use hazard pointers to track lazy active mm existence Documentation/RCU/rcu_dereference.rst | 38 ++++++- Documentation/mm/active_mm.rst | 9 +- arch/Kconfig | 32 ------ arch/powerpc/Kconfig | 1 - arch/powerpc/mm/book3s64/radix_tlb.c | 23 +--- include/linux/compiler.h | 63 +++++++++++ include/linux/hp.h | 154 ++++++++++++++++++++++++++ include/linux/mm_types.h | 3 - include/linux/sched/mm.h | 71 +++++------- kernel/Makefile | 2 +- kernel/exit.c | 4 +- kernel/fork.c | 47 ++------ kernel/hp.c | 46 ++++++++ kernel/sched/sched.h | 8 +- lib/Kconfig.debug | 10 -- 15 files changed, 346 insertions(+), 165 deletions(-) create mode 100644 include/linux/hp.h create mode 100644 kernel/hp.c -- 2.39.2