Messages in this thread | | | From | Frederic Weisbecker <> | Subject | [PATCH 00/16] rcu/nocb: De-offload and re-offload support v3 | Date | Fri, 23 Oct 2020 16:46:33 +0200 |
| |
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(-)
| |