• Frederic Weisbecker's avatar
    rcu/nocb: Prepare state machine for a new step · 213d56bf
    Frederic Weisbecker authored
    Currently SEGCBLIST_SOFTIRQ_ONLY is a bit of an exception among the
    segcblist flags because it is an exclusive state that doesn't mix up
    with the other flags. Remove it in favour of:
    
    _ A flag specifying that rcu_core() needs to perform callbacks execution
      and acceleration
    
    and
    
    _ A flag specifying we want the nocb lock to be held in any needed
      circumstances
    
    This clarifies the code and is more flexible: It allows to have a state
    where rcu_core() runs with locking while offloading hasn't started yet.
    This is a necessary step to prepare for triggering rcu_core() at the
    very beginning of the de-offloading process so that rcu_core() won't
    dismiss work while being preempted by the de-offloading process, at
    least not without a pending subsequent rcu_core() that will quickly
    catch up.
    Reviewed-by: default avatarValentin Schneider <Valentin.Schneider@arm.com>
    Tested-by: default avatarValentin Schneider <valentin.schneider@arm.com>
    Tested-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: default avatarFrederic Weisbecker <frederic@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Cc: Josh Triplett <josh@joshtriplett.org>
    Cc: Joel Fernandes <joel@joelfernandes.org>
    Cc: Boqun Feng <boqun.feng@gmail.com>
    Cc: Neeraj Upadhyay <neeraju@codeaurora.org>
    Cc: Uladzislau Rezki <urezki@gmail.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
    213d56bf
rcu_segcblist.h 4.93 KB