aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/rcu/tree.c
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>2018-04-13 20:11:44 -0400
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2018-05-15 13:28:07 -0400
commit5b4c11d54b1b8d0714702006e00441ada59889a9 (patch)
tree49e052b1402d46a7a283f29913c045ee6e36b153 /kernel/rcu/tree.c
parent4317228ad9b86f094d70c951f9210a8a9b2816be (diff)
rcu: Add leaf-node macros
This commit adds rcu_first_leaf_node() that returns a pointer to the first leaf rcu_node structure in the specified RCU flavor and an rcu_is_leaf_node() that returns true iff the specified rcu_node structure is a leaf. This commit also uses these macros where appropriate. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Tested-by: Nicholas Piggin <npiggin@gmail.com>
Diffstat (limited to 'kernel/rcu/tree.c')
-rw-r--r--kernel/rcu/tree.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index c4db0e20b035..b22d2e1ca5c0 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -2398,7 +2398,7 @@ rcu_report_qs_rnp(unsigned long mask, struct rcu_state *rsp,
2398 return; 2398 return;
2399 } 2399 }
2400 WARN_ON_ONCE(oldmask); /* Any child must be all zeroed! */ 2400 WARN_ON_ONCE(oldmask); /* Any child must be all zeroed! */
2401 WARN_ON_ONCE(rnp->level != rcu_num_lvls - 1 && 2401 WARN_ON_ONCE(!rcu_is_leaf_node(rnp) &&
2402 rcu_preempt_blocked_readers_cgp(rnp)); 2402 rcu_preempt_blocked_readers_cgp(rnp));
2403 rnp->qsmask &= ~mask; 2403 rnp->qsmask &= ~mask;
2404 trace_rcu_quiescent_state_report(rsp->name, rnp->gpnum, 2404 trace_rcu_quiescent_state_report(rsp->name, rnp->gpnum,
@@ -4056,7 +4056,7 @@ static void __init rcu_init_one(struct rcu_state *rsp)
4056 4056
4057 init_swait_queue_head(&rsp->gp_wq); 4057 init_swait_queue_head(&rsp->gp_wq);
4058 init_swait_queue_head(&rsp->expedited_wq); 4058 init_swait_queue_head(&rsp->expedited_wq);
4059 rnp = rsp->level[rcu_num_lvls - 1]; 4059 rnp = rcu_first_leaf_node(rsp);
4060 for_each_possible_cpu(i) { 4060 for_each_possible_cpu(i) {
4061 while (i > rnp->grphi) 4061 while (i > rnp->grphi)
4062 rnp++; 4062 rnp++;