lkml.org 
[lkml]   [2021]   [Jan]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 14/16] rcu/nocb: Only cancel nocb timer if not polling
    Date
    No need to disarm the nocb_timer if rcu_nocb is polling because it
    shouldn't be armed either.

    Signed-off-by: Frederic 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>
    ---
    kernel/rcu/tree_plugin.h | 10 +++++-----
    1 file changed, 5 insertions(+), 5 deletions(-)

    diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h
    index eb8614577a2c..b1f76f341c66 100644
    --- a/kernel/rcu/tree_plugin.h
    +++ b/kernel/rcu/tree_plugin.h
    @@ -2178,16 +2178,16 @@ static void nocb_gp_wait(struct rcu_data *my_rdp)
    my_rdp->nocb_gp_gp = needwait_gp;
    my_rdp->nocb_gp_seq = needwait_gp ? wait_gp_seq : 0;
    if (bypass) {
    - raw_spin_lock_irqsave(&my_rdp->nocb_gp_lock, flags);
    - // Avoid race with first bypass CB.
    - WRITE_ONCE(my_rdp->nocb_defer_wakeup, RCU_NOCB_WAKE_NOT);
    - del_timer(&my_rdp->nocb_timer);
    if (!rcu_nocb_poll) {
    + raw_spin_lock_irqsave(&my_rdp->nocb_gp_lock, flags);
    + // Avoid race with first bypass CB.
    + WRITE_ONCE(my_rdp->nocb_defer_wakeup, RCU_NOCB_WAKE_NOT);
    + del_timer(&my_rdp->nocb_timer);
    // At least one child with non-empty ->nocb_bypass, so set
    // timer in order to avoid stranding its callbacks.
    mod_timer(&my_rdp->nocb_bypass_timer, j + 2);
    + raw_spin_unlock_irqrestore(&my_rdp->nocb_gp_lock, flags);
    }
    - raw_spin_unlock_irqrestore(&my_rdp->nocb_gp_lock, flags);
    }
    if (rcu_nocb_poll) {
    /* Polling, so trace if first poll in the series. */
    --
    2.25.1
    \
     
     \ /
      Last update: 2021-01-28 18:19    [W:2.984 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site