diff options
author | Paul E. McKenney <paulmck@linux.ibm.com> | 2019-07-13 12:27:03 -0700 |
---|---|---|
committer | Paul E. McKenney <paulmck@linux.ibm.com> | 2019-08-13 14:38:24 -0700 |
commit | 6aacd88d1721e12b013ae4ccf4f17609bd5091f3 (patch) | |
tree | 15dcb403eacbcb4303839d90291da14a73e42804 /kernel/rcu | |
parent | d1b222c6be1f8bfc77099e034219732ecaeaaf96 (diff) |
rcu/nocb: EXP Check use and usefulness of ->nocb_lock_contended
Signed-off-by: Paul E. McKenney <paulmck@linux.ibm.com>
Diffstat (limited to 'kernel/rcu')
-rw-r--r-- | kernel/rcu/tree_plugin.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h index 12b14d7a2cf2..97c730753a6d 100644 --- a/kernel/rcu/tree_plugin.h +++ b/kernel/rcu/tree_plugin.h @@ -1515,6 +1515,7 @@ static void rcu_nocb_bypass_lock(struct rcu_data *rdp) if (raw_spin_trylock(&rdp->nocb_bypass_lock)) return; atomic_inc(&rdp->nocb_lock_contended); + WARN_ON_ONCE(smp_processor_id() != rdp->cpu); smp_mb__after_atomic(); /* atomic_inc() before lock. */ raw_spin_lock(&rdp->nocb_bypass_lock); smp_mb__before_atomic(); /* atomic_dec() after lock. */ @@ -1533,7 +1534,8 @@ static void rcu_nocb_bypass_lock(struct rcu_data *rdp) */ static void rcu_nocb_wait_contended(struct rcu_data *rdp) { - while (atomic_read(&rdp->nocb_lock_contended)) + WARN_ON_ONCE(smp_processor_id() != rdp->cpu); + while (WARN_ON_ONCE(atomic_read(&rdp->nocb_lock_contended))) cpu_relax(); } |