[RFC PATCH 00/12] rcu/nocb: De-offload and re-offload support v2

From: Frederic Weisbecker
Date: Mon Sep 21 2020 - 08:44:01 EST


This is the second attempt to make rcu-nocb mutable at runtime. See
v1 there: https://lwn.net/Articles/820544/

This time a new approach, as per Paul's suggestion, is to ensure that
callbacks are still served locally until nocb kthreads are fully ready
or fully asleep. This is using a state machine implemented with a mask
(see patch 3/12 for details).

There is still some small polishing to do, as can be seen in the last
patches, to make sure that local callbacks processing is correctly
handled outside of strict softirq (or rcuc) mode.



HEAD: 6abe8408307eaeb03b4a0470945943c1decbc4b3


Frederic Weisbecker (12):
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: De-offloading CB kthread
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: Process batch locally as long as offloading isn't complete
rcu: Locally accelerate callbacks as long as offloading isn't complete
rcu: Nocb (de)activate through sysfs

include/linux/rcu_segcblist.h | 119 ++++++++++++++++-
include/linux/rcupdate.h | 4 +
kernel/cpu.c | 23 ++++
kernel/rcu/rcu_segcblist.c | 13 +-
kernel/rcu/rcu_segcblist.h | 45 ++++++-
kernel/rcu/tree.c | 32 ++---
kernel/rcu/tree.h | 2 +
kernel/rcu/tree_plugin.h | 297 +++++++++++++++++++++++++++++++++++++++---
8 files changed, 491 insertions(+), 44 deletions(-)