Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 94d44776 authored by Jisheng Zhang's avatar Jisheng Zhang Committed by Paul E. McKenney
Browse files

rcu: Use rcu_gp_kthread_wake() to wake up grace period kthreads



Commit abedf8e2 ("rcu: Use simple wait queues where possible in
rcutree") converts Tree RCU's wait queues to simple wait queues,
but it incorrectly reverts the commit 2aa792e6 ("rcu: Use
rcu_gp_kthread_wake() to wake up grace period kthreads").  This can
result in redundant self-wakeups.

This commit therefore replaces the simple wait-queue wakeups with
rcu_gp_kthread_wake(), thus avoiding the redundant wakeups.

Signed-off-by: default avatarJisheng Zhang <jszhang@marvell.com>
Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
parent bedc1969
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -2344,7 +2344,7 @@ static void rcu_report_qs_rsp(struct rcu_state *rsp, unsigned long flags)
	WARN_ON_ONCE(!rcu_gp_in_progress(rsp));
	WRITE_ONCE(rsp->gp_flags, READ_ONCE(rsp->gp_flags) | RCU_GP_FLAG_FQS);
	raw_spin_unlock_irqrestore_rcu_node(rcu_get_root(rsp), flags);
	swake_up(&rsp->gp_wq);  /* Memory barrier implied by swake_up() path. */
	rcu_gp_kthread_wake(rsp);
}

/*
@@ -2970,7 +2970,7 @@ static void force_quiescent_state(struct rcu_state *rsp)
	}
	WRITE_ONCE(rsp->gp_flags, READ_ONCE(rsp->gp_flags) | RCU_GP_FLAG_FQS);
	raw_spin_unlock_irqrestore_rcu_node(rnp_old, flags);
	swake_up(&rsp->gp_wq); /* Memory barrier implied by swake_up() path. */
	rcu_gp_kthread_wake(rsp);
}

/*