• Frederic Weisbecker's avatar
    rcu/nocb: Re-offload support · 254e11ef
    Frederic Weisbecker authored
    
    
    To re-offload the callback processing off of a CPU, it is necessary to
    clear SEGCBLIST_SOFTIRQ_ONLY, set SEGCBLIST_OFFLOADED, and then notify
    both the CB and GP kthreads so that they both set their own bit flag and
    start processing the callbacks remotely.  The re-offloading worker is
    then notified that it can stop the RCU_SOFTIRQ handler (or rcuc kthread,
    as the case may be) from processing the callbacks locally.
    
    Ordering must be carefully enforced so that the callbacks that used to be
    processed locally without locking will have the same ordering properties
    when they are invoked by the nocb CB and GP kthreads.
    
    This commit makes this change.
    
    Cc: Josh Triplett <josh@joshtriplett.org>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Cc: Lai Jiangshan <jiangshanlai@gmail.com>
    Cc: Joel Fernandes <joel@joelfernandes.org>
    Cc: Neeraj Upadhyay <neeraju@codeaurora.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Inspired-by: default avatarPaul E. McKenney <paulmck@kernel.org>
    Tested-by: default avatarBoqun Feng <boqun.feng@gmail.com>
    Signed-off-by: default avatarFrederic Weisbecker <frederic@kernel.org>
    [ paulmck: Export rcu_nocb_cpu_offload(). ]
    Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
    254e11ef
tree_plugin.h 88.3 KB