rcu: Switch force_qs_rnp() to for_each_leaf_node_cpu_mask()
authorPaul E. McKenney <paulmck@kernel.org>
Wed, 30 Oct 2019 16:37:11 +0000 (09:37 -0700)
committerPaul E. McKenney <paulmck@kernel.org>
Fri, 24 Jan 2020 18:33:51 +0000 (10:33 -0800)
Currently, force_qs_rnp() uses a for_each_leaf_node_possible_cpu()
loop containing a check of the current CPU's bit in ->qsmask.
This works, but this commit saves three lines by instead using
for_each_leaf_node_cpu_mask(), which combines the functionality of
for_each_leaf_node_possible_cpu() and leaf_node_cpu_bit().  This commit
also replaces the use of the local variable "bit" with rdp->grpmask.

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
kernel/rcu/tree.c

index bbb60ed..d950764 100644 (file)
@@ -2298,14 +2298,11 @@ static void force_qs_rnp(int (*f)(struct rcu_data *rdp))
                        raw_spin_unlock_irqrestore_rcu_node(rnp, flags);
                        continue;
                }
-               for_each_leaf_node_possible_cpu(rnp, cpu) {
-                       unsigned long bit = leaf_node_cpu_bit(rnp, cpu);
-                       if ((rnp->qsmask & bit) != 0) {
-                               rdp = per_cpu_ptr(&rcu_data, cpu);
-                               if (f(rdp)) {
-                                       mask |= bit;
-                                       rcu_disable_urgency_upon_qs(rdp);
-                               }
+               for_each_leaf_node_cpu_mask(rnp, cpu, rnp->qsmask) {
+                       rdp = per_cpu_ptr(&rcu_data, cpu);
+                       if (f(rdp)) {
+                               mask |= rdp->grpmask;
+                               rcu_disable_urgency_upon_qs(rdp);
                        }
                }
                if (mask != 0) {