diff options
| author | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2018-04-13 20:11:44 -0400 |
|---|---|---|
| committer | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2018-05-15 13:28:07 -0400 |
| commit | 5b4c11d54b1b8d0714702006e00441ada59889a9 (patch) | |
| tree | 49e052b1402d46a7a283f29913c045ee6e36b153 /kernel/rcu/tree.c | |
| parent | 4317228ad9b86f094d70c951f9210a8a9b2816be (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.c | 4 |
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++; |
