• Frederic Weisbecker's avatar
    rcu/nocb: Invoke rcu_core() at the start of deoffloading · fbb94cbd
    Frederic Weisbecker authored
    On PREEMPT_RT, if rcu_core() is preempted by the de-offloading process,
    some work, such as callbacks acceleration and invocation, may be left
    unattended due to the volatile checks on the offloaded state.
    
    In the worst case this work is postponed until the next rcu_pending()
    check that can take a jiffy to reach, which can be a problem in case
    of callbacks flooding.
    
    Solve that with invoking rcu_core() early in the de-offloading process.
    This way any work dismissed by an ongoing rcu_core() call fooled by
    a preempting deoffloading process will be caught up by a nearby future
    recall to rcu_core(), this time fully aware of the de-offloading state.
    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: Valentin Schneider <valentin.schneider@arm.com>
    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>
    fbb94cbd
rcu_segcblist.c 20 KB