diff mbox series

[1/8] rcu/exp: Remove full barrier upon main thread wakeup

Message ID 20240129232349.3170819-2-boqun.feng@gmail.com (mailing list archive)
State Accepted
Commit 04bd5331c88dd3eb0246e5f059e0ea86cf5b85eb
Headers show
Series RCU exp updates for v6.9 | expand

Commit Message

Boqun Feng Jan. 29, 2024, 11:23 p.m. UTC
From: Frederic Weisbecker <frederic@kernel.org>

When an expedited grace period is ending, care must be taken so that all
the quiescent states propagated up to the root are correctly ordered
against the wake up of the main expedited grace period workqueue.

This ordering is already carried through the root rnp locking augmented
by an smp_mb__after_unlock_lock() barrier.

Therefore the explicit smp_mb() placed before the wake up is not needed
and can be removed.

Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
 kernel/rcu/tree_exp.h | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

Comments

Frederic Weisbecker Jan. 30, 2024, 3:47 p.m. UTC | #1
Le Mon, Jan 29, 2024 at 03:23:39PM -0800, Boqun Feng a écrit :
> From: Frederic Weisbecker <frederic@kernel.org>
> 
> When an expedited grace period is ending, care must be taken so that all
> the quiescent states propagated up to the root are correctly ordered
> against the wake up of the main expedited grace period workqueue.
> 
> This ordering is already carried through the root rnp locking augmented
> by an smp_mb__after_unlock_lock() barrier.
> 
> Therefore the explicit smp_mb() placed before the wake up is not needed
> and can be removed.
> 
> Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>

[Offlist]

For further posting, don't forget to add your own SoB while posting patches :-)

Thanks!
Frederic Weisbecker Jan. 30, 2024, 3:48 p.m. UTC | #2
Le Tue, Jan 30, 2024 at 04:47:16PM +0100, Frederic Weisbecker a écrit :
> Le Mon, Jan 29, 2024 at 03:23:39PM -0800, Boqun Feng a écrit :
> > From: Frederic Weisbecker <frederic@kernel.org>
> > 
> > When an expedited grace period is ending, care must be taken so that all
> > the quiescent states propagated up to the root are correctly ordered
> > against the wake up of the main expedited grace period workqueue.
> > 
> > This ordering is already carried through the root rnp locking augmented
> > by an smp_mb__after_unlock_lock() barrier.
> > 
> > Therefore the explicit smp_mb() placed before the wake up is not needed
> > and can be removed.
> > 
> > Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
> > Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
> 
> [Offlist]

And yes that was not offlist, my fingers betrayed me!

> 
> For further posting, don't forget to add your own SoB while posting patches :-)
> 
> Thanks!
>
Boqun Feng Jan. 30, 2024, 6:42 p.m. UTC | #3
On Tue, Jan 30, 2024 at 04:48:41PM +0100, Frederic Weisbecker wrote:
> Le Tue, Jan 30, 2024 at 04:47:16PM +0100, Frederic Weisbecker a écrit :
> > Le Mon, Jan 29, 2024 at 03:23:39PM -0800, Boqun Feng a écrit :
> > > From: Frederic Weisbecker <frederic@kernel.org>
> > > 
> > > When an expedited grace period is ending, care must be taken so that all
> > > the quiescent states propagated up to the root are correctly ordered
> > > against the wake up of the main expedited grace period workqueue.
> > > 
> > > This ordering is already carried through the root rnp locking augmented
> > > by an smp_mb__after_unlock_lock() barrier.
> > > 
> > > Therefore the explicit smp_mb() placed before the wake up is not needed
> > > and can be removed.
> > > 
> > > Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
> > > Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
> > 
> > [Offlist]
> 
> And yes that was not offlist, my fingers betrayed me!
> 

Thanks for the reminder anyway ;-)

Regards,
Boqun

> > 
> > For further posting, don't forget to add your own SoB while posting patches :-)
> > 
> > Thanks!
> >
diff mbox series

Patch

diff --git a/kernel/rcu/tree_exp.h b/kernel/rcu/tree_exp.h
index 2ac440bc7e10..014ddf672165 100644
--- a/kernel/rcu/tree_exp.h
+++ b/kernel/rcu/tree_exp.h
@@ -198,10 +198,9 @@  static void __rcu_report_exp_rnp(struct rcu_node *rnp,
 		}
 		if (rnp->parent == NULL) {
 			raw_spin_unlock_irqrestore_rcu_node(rnp, flags);
-			if (wake) {
-				smp_mb(); /* EGP done before wake_up(). */
+			if (wake)
 				swake_up_one_online(&rcu_state.expedited_wq);
-			}
+
 			break;
 		}
 		mask = rnp->grpmask;