forked from Minki/linux
rcu: Move grace-period pre-init delay after pre-init
The main race with the early part of grace-period initialization appears to be with CPU hotplug. To more fully open this race window, this commit moves the rcu_gp_slow() from the beginning of the early initialization loop to follow that loop, thus widening the race window, especially for the rcu_node structures that are initialized last. This commit also expands rcutree.gp_preinit_delay from 3 to 12, giving the same overall delay in the grace period, but concentrated in the spot where it will do the most good. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
This commit is contained in:
parent
1f3e5f51b9
commit
f34f2f5852
@ -1900,7 +1900,6 @@ static bool rcu_gp_init(struct rcu_state *rsp)
|
|||||||
* will handle subsequent offline CPUs.
|
* will handle subsequent offline CPUs.
|
||||||
*/
|
*/
|
||||||
rcu_for_each_leaf_node(rsp, rnp) {
|
rcu_for_each_leaf_node(rsp, rnp) {
|
||||||
rcu_gp_slow(rsp, gp_preinit_delay);
|
|
||||||
spin_lock(&rsp->ofl_lock);
|
spin_lock(&rsp->ofl_lock);
|
||||||
raw_spin_lock_irq_rcu_node(rnp);
|
raw_spin_lock_irq_rcu_node(rnp);
|
||||||
if (rnp->qsmaskinit == rnp->qsmaskinitnext &&
|
if (rnp->qsmaskinit == rnp->qsmaskinitnext &&
|
||||||
@ -1945,6 +1944,7 @@ static bool rcu_gp_init(struct rcu_state *rsp)
|
|||||||
raw_spin_unlock_irq_rcu_node(rnp);
|
raw_spin_unlock_irq_rcu_node(rnp);
|
||||||
spin_unlock(&rsp->ofl_lock);
|
spin_unlock(&rsp->ofl_lock);
|
||||||
}
|
}
|
||||||
|
rcu_gp_slow(rsp, gp_preinit_delay); /* Races with CPU hotplug. */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set the quiescent-state-needed bits in all the rcu_node
|
* Set the quiescent-state-needed bits in all the rcu_node
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
rcutorture.onoff_interval=1 rcutorture.onoff_holdoff=30
|
rcutorture.onoff_interval=1 rcutorture.onoff_holdoff=30
|
||||||
rcutree.gp_preinit_delay=3
|
rcutree.gp_preinit_delay=12
|
||||||
rcutree.gp_init_delay=3
|
rcutree.gp_init_delay=3
|
||||||
rcutree.gp_cleanup_delay=3
|
rcutree.gp_cleanup_delay=3
|
||||||
rcutree.kthread_prio=2
|
rcutree.kthread_prio=2
|
||||||
|
Loading…
Reference in New Issue
Block a user