summaryrefslogtreecommitdiffstats
path: root/kernel/rcu
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>2017-06-27 05:37:51 +0200
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2017-07-25 22:04:48 +0200
commit21cc248384aeb0375b3cac164c276c78c503291a (patch)
tree1664e977eef3f4392ec835d7e4b406136f19204e /kernel/rcu
parentrcu: Eliminate rcu_state ->orphan_lock (diff)
downloadlinux-21cc248384aeb0375b3cac164c276c78c503291a.tar.xz
linux-21cc248384aeb0375b3cac164c276c78c503291a.zip
rcu: Advance callbacks after migration
When migrating callbacks from a newly offlined CPU, we are already holding the root rcu_node structure's lock, so it costs almost nothing to advance and accelerate the newly migrated callbacks. This patch therefore makes this advancing and acceleration happen. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'kernel/rcu')
-rw-r--r--kernel/rcu/tree.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index 58ab489eca66..f9f01aeb5add 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -3935,6 +3935,7 @@ static void rcu_migrate_callbacks(int cpu, struct rcu_state *rsp)
rcu_advance_cbs(rsp, rnp_root, rdp); /* Leverage recent GPs. */
rcu_send_cbs_to_orphanage(cpu, rsp, rnp, rdp);
rcu_adopt_orphan_cbs(rsp, flags);
+ rcu_advance_cbs(rsp, rnp_root, my_rdp); /* Assign GP to pending CBs. */
raw_spin_unlock_irqrestore_rcu_node(rnp_root, flags);
WARN_ONCE(rcu_segcblist_n_cbs(&rdp->cblist) != 0 ||
!rcu_segcblist_empty(&rdp->cblist),