[PATCH 00/16] rcu/nocb: De-offload and re-offload support v3

Frederic Weisbecker
2020-10-23T14:46:59Z

Hi,

This is the third attempt to make rcu-nocb mutable at runtime. See
v2 there: https://lwn.net/Articles/832031/

Many fixes included and rcutorture support:

03: Whitespace fix
04: Add "rcu/nocb: Always init segcblist on CPU up" (Thanks rcutorture!)
05: Add return value for failure on (de)offloading
06: Add "rcu/nocb: Don't deoffload an offline CPU with pending work" (Thanks Paul!)
12: Add "rcu/nocb: Only cond_resched() from actual offloaded batch processing" (Thanks rcutorture!)
14: Write a real and more self-confident changelog
15/16: Add rcutorture support (thanks Paul!)

My last remaining worry, as exposed in 13/16, is that __call_rcu_core()
isn't called during transition states. I need to see how I can handle
that.

git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks.git
rcu/nocb-toggle-v2

HEAD: 0247cd09fd48a38741e5cc6634810985b405baca

Thanks,
Frederic
---

Frederic Weisbecker (15):
rcu: Implement rcu_segcblist_is_offloaded() config dependent
rcu: Turn enabled/offload states into a common flag
rcu: Provide basic callback offloading state machine bits
rcu/nocb: Always init segcblist on CPU up
rcu: De-offloading CB kthread
rcu/nocb: Don't deoffload an offline CPU with pending work
rcu: De-offloading GP kthread
rcu: Re-offload support
rcu: Shutdown nocb timer on de-offloading
rcu: Flush bypass before setting SEGCBLIST_SOFTIRQ_ONLY
rcu: Set SEGCBLIST_SOFTIRQ_ONLY at the very last stage of de-offloading
rcu/nocb: Only cond_resched() from actual offloaded batch processing
rcu: Process batch locally as long as offloading isn't complete
rcu: Locally accelerate callbacks as long as offloading isn't complete
tools/rcutorture: Support nocb toggle in TREE01

Paul E. McKenney (1):
rcutorture: Test runtime toggling of CPUs' callback offloading

Documentation/admin-guide/kernel-parameters.txt | 8 +
include/linux/rcu_segcblist.h | 119 +++++++-
include/linux/rcupdate.h | 4 +
kernel/rcu/rcu_segcblist.c | 13 +-
kernel/rcu/rcu_segcblist.h | 45 ++-
kernel/rcu/rcutorture.c | 86 +++++-
kernel/rcu/tree.c | 47 +--
kernel/rcu/tree.h | 2 +
kernel/rcu/tree_plugin.h | 330 +++++++++++++++++++--
.../selftests/rcutorture/configs/rcu/TREE01.boot | 4 +-
10 files changed, 603 insertions(+), 55 deletions(-)