diff options
author | Paul E. McKenney <paul.mckenney@linaro.org> | 2012-12-29 22:04:18 -0800 |
---|---|---|
committer | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2013-03-26 08:04:55 -0700 |
commit | b8462084a2a88a6a0489f9bb7d8b1bb95bc455ab (patch) | |
tree | c784b3be6b83d2f55cac528c6c877504c27078df /kernel/rcutree_plugin.h | |
parent | bd9f0686fc8c9a01c6850b1c611d1c9ad80b86d6 (diff) | |
download | linux-b8462084a2a88a6a0489f9bb7d8b1bb95bc455ab.tar.gz linux-b8462084a2a88a6a0489f9bb7d8b1bb95bc455ab.tar.bz2 linux-b8462084a2a88a6a0489f9bb7d8b1bb95bc455ab.zip |
rcu: Push lock release to rcu_start_gp()'s callers
If CPUs are to give prior notice of needed grace periods, it will be
necessary to invoke rcu_start_gp() without dropping the root rcu_node
structure's ->lock. This commit takes a second step in this direction
by moving the release of this lock to rcu_start_gp()'s callers.
Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'kernel/rcutree_plugin.h')
-rw-r--r-- | kernel/rcutree_plugin.h | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h index df50502eca2c..073ded26e259 100644 --- a/kernel/rcutree_plugin.h +++ b/kernel/rcutree_plugin.h @@ -2174,7 +2174,6 @@ static void rcu_nocb_wait_gp(struct rcu_data *rdp) unsigned long c; bool d; unsigned long flags; - unsigned long flags1; struct rcu_node *rnp = rdp->mynode; struct rcu_node *rnp_root = rcu_get_root(rdp->rsp); @@ -2236,8 +2235,8 @@ static void rcu_nocb_wait_gp(struct rcu_data *rdp) c, rnp->level, rnp->grplo, rnp->grphi, "Startedroot"); - local_save_flags(flags1); - rcu_start_gp(rdp->rsp, flags1); /* Rlses ->lock. */ + rcu_start_gp(rdp->rsp); + raw_spin_unlock(&rnp->lock); } /* Clean up locking and irq state. */ |