• Frederic Weisbecker's avatar
    rcu: Remove superfluous full memory barrier upon first EQS snapshot · 9a7e73c9
    Frederic Weisbecker authored
    When the grace period kthread checks the extended quiescent state
    counter of a CPU, full ordering is necessary to ensure that either:
    
    * If the GP kthread observes the remote target in an extended quiescent
      state, then that target must observe all accesses prior to the current
      grace period, including the current grace period sequence number, once
      it exits that extended quiescent state.
    
    or:
    
    * If the GP kthread observes the remote target NOT in an extended
      quiescent state, then the target further entering in an extended
      quiescent state must observe all accesses prior to the current
      grace period, including the current grace period sequence number, once
      it enters that extended quiescent state.
    
    This ordering is enforced through a full memory barrier placed right
    before taking the first EQS snapshot. However this is superfluous
    because the snapshot is taken while holding the target's rnp lock which
    provides the necessary ordering through its chain of
    smp_mb__after_unlock_lock().
    
    Remove the needless explicit barrier before the snapshot and put a
    comment about the implicit barrier newly relied upon here.
    Signed-off-by: default avatarFrederic Weisbecker <frederic@kernel.org>
    Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
    Reviewed-by: default avatarBoqun Feng <boqun.feng@gmail.com>
    Reviewed-by: default avatarNeeraj Upadhyay <neeraj.upadhyay@kernel.org>
    Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
    9a7e73c9
tree.c 183 KB