Skip to content

Commit aca2991

Browse files
committed
rcu: Substitute lookup for bit-twiddling in sync_rcu_exp_select_node_cpus()
The code in sync_rcu_exp_select_node_cpus() calculates the current CPU's mask within its rcu_node structure's bitmasks, but this has already been computed in the ->grpmask field of that CPU's rcu_data structure. This commit therefore just uses this ->grpmask field. Signed-off-by: Paul E. McKenney <[email protected]>
1 parent 6cf539a commit aca2991

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

kernel/rcu/tree_exp.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -345,8 +345,8 @@ static void sync_rcu_exp_select_node_cpus(struct work_struct *wp)
345345
/* Each pass checks a CPU for identity, offline, and idle. */
346346
mask_ofl_test = 0;
347347
for_each_leaf_node_cpu_mask(rnp, cpu, rnp->expmask) {
348-
unsigned long mask = leaf_node_cpu_bit(rnp, cpu);
349348
struct rcu_data *rdp = per_cpu_ptr(&rcu_data, cpu);
349+
unsigned long mask = rdp->grpmask;
350350
int snap;
351351

352352
if (raw_smp_processor_id() == cpu ||
@@ -373,8 +373,8 @@ static void sync_rcu_exp_select_node_cpus(struct work_struct *wp)
373373

374374
/* IPI the remaining CPUs for expedited quiescent state. */
375375
for_each_leaf_node_cpu_mask(rnp, cpu, mask_ofl_ipi) {
376-
unsigned long mask = leaf_node_cpu_bit(rnp, cpu);
377376
struct rcu_data *rdp = per_cpu_ptr(&rcu_data, cpu);
377+
unsigned long mask = rdp->grpmask;
378378

379379
retry_ipi:
380380
if (rcu_dynticks_in_eqs_since(rdp, rdp->exp_dynticks_snap)) {

0 commit comments

Comments
 (0)