mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 05:02:12 +00:00
rcu: Use rcu_gp_kthread_wake() to wake up grace period kthreads
Commitabedf8e241
("rcu: Use simple wait queues where possible in rcutree") converts Tree RCU's wait queues to simple wait queues, but it incorrectly reverts the commit2aa792e6fa
("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: Jisheng Zhang <jszhang@marvell.com> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
This commit is contained in:
parent
bedc196915
commit
94d4477673
@ -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));
|
WARN_ON_ONCE(!rcu_gp_in_progress(rsp));
|
||||||
WRITE_ONCE(rsp->gp_flags, READ_ONCE(rsp->gp_flags) | RCU_GP_FLAG_FQS);
|
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);
|
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);
|
WRITE_ONCE(rsp->gp_flags, READ_ONCE(rsp->gp_flags) | RCU_GP_FLAG_FQS);
|
||||||
raw_spin_unlock_irqrestore_rcu_node(rnp_old, flags);
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user