Refresh tested on real ChromeOS userspace and hardware, passes boot time tests and rcuscale tests. Fixes on top of v3: - Fix boot issues due to a race in the lazy RCU logic which caused a missed wakeup of the RCU GP thread, causing synchronize_rcu() to stall. - Fixed trace_rcu_callback tracepoint I tested power previously [1], I am in the process of testing power again but I wanted share my latest code as others who are testing power as well could use the above fixes. [1] https://lore.kernel.org/all/20220713213237.1596225-1-joel@xxxxxxxxxxxxxxxxx/ Joel Fernandes (Google) (13): rcu: Introduce call_rcu_lazy() API implementation rcuscale: Add laziness and kfree tests fs: Move call_rcu() to call_rcu_lazy() in some paths rcutorture: Add test code for call_rcu_lazy() debug: Toggle lazy at runtime and change flush jiffies cred: Move call_rcu() to call_rcu_lazy() security: Move call_rcu() to call_rcu_lazy() net/core: Move call_rcu() to call_rcu_lazy() kernel: Move various core kernel usages to call_rcu_lazy() lib: Move call_rcu() to call_rcu_lazy() i915: Move call_rcu() to call_rcu_lazy() fork: Move thread_stack_free_rcu to call_rcu_lazy rcu/tree: Move trace_rcu_callback() before bypassing Vineeth Pillai (1): rcu: shrinker for lazy rcu drivers/gpu/drm/i915/gem/i915_gem_object.c | 2 +- fs/dcache.c | 4 +- fs/eventpoll.c | 2 +- fs/file_table.c | 2 +- fs/inode.c | 2 +- include/linux/rcu_segcblist.h | 1 + include/linux/rcupdate.h | 6 + include/linux/sched/sysctl.h | 3 + kernel/cred.c | 2 +- kernel/exit.c | 2 +- kernel/fork.c | 6 +- kernel/pid.c | 2 +- kernel/rcu/Kconfig | 8 + kernel/rcu/rcu.h | 12 + kernel/rcu/rcu_segcblist.c | 15 +- kernel/rcu/rcu_segcblist.h | 20 +- kernel/rcu/rcuscale.c | 74 ++++- kernel/rcu/rcutorture.c | 60 +++- kernel/rcu/tree.c | 139 ++++++---- kernel/rcu/tree.h | 10 +- kernel/rcu/tree_nocb.h | 260 +++++++++++++++--- kernel/sysctl.c | 17 ++ kernel/time/posix-timers.c | 2 +- lib/radix-tree.c | 2 +- lib/xarray.c | 2 +- net/core/dst.c | 2 +- security/security.c | 2 +- security/selinux/avc.c | 4 +- .../selftests/rcutorture/configs/rcu/CFLIST | 1 + .../selftests/rcutorture/configs/rcu/TREE11 | 18 ++ .../rcutorture/configs/rcu/TREE11.boot | 8 + 31 files changed, 567 insertions(+), 123 deletions(-) create mode 100644 tools/testing/selftests/rcutorture/configs/rcu/TREE11 create mode 100644 tools/testing/selftests/rcutorture/configs/rcu/TREE11.boot -- 2.37.2.609.g9ff673ca1a-goog