• Frederic Weisbecker's avatar
    rcu/nocb: Unify timers · e75bcd48
    Frederic Weisbecker authored
    Now that ->nocb_timer and ->nocb_bypass_timer have become quite similar,
    this commit merges them together.  A new RCU_NOCB_WAKE_BYPASS wake level
    is introduced.  As a result, timers perform all kinds of deferred wake
    ups but other deferred wakeup callsites only handle non-bypass wakeups
    in order not to wake up rcuo too early.
    
    The timer also unconditionally executes a full barrier so as to order
    timer_pending() and callback enqueue although the path performing
    RCU_NOCB_WAKE_FORCE that makes use of it is debatable. It should also
    test against the rdp leader instead of the current rdp.
    
    This unconditional full barrier shouldn't bring visible overhead since
    these timers almost never fire.
    Signed-off-by: default avatarFrederic Weisbecker <frederic@kernel.org>
    Cc: Josh Triplett <josh@joshtriplett.org>
    Cc: Lai Jiangshan <jiangshanlai@gmail.com>
    Cc: Joel Fernandes <joel@joelfernandes.org>
    Cc: Neeraj Upadhyay <neeraju@codeaurora.org>
    Cc: Boqun Feng <boqun.feng@gmail.com>
    Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
    e75bcd48
rcu.h 24.3 KB