rcu: Remove rcu_data_p pointer to default rcu_data structure
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Tue, 3 Jul 2018 22:54:39 +0000 (15:54 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Thu, 30 Aug 2018 23:02:51 +0000 (16:02 -0700)
The rcu_data_p pointer references the default set of per-CPU rcu_data
structures, that is, those that call_rcu() uses, as opposed to
call_rcu_bh() and sometimes call_rcu_sched().  But there is now only one
set of per-CPU rcu_data structures, so that one set is by definition
the default, which means that the rcu_data_p pointer no longer serves
any useful purpose.  This commit therefore removes it.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
kernel/rcu/tree.c
kernel/rcu/tree_plugin.h

index e3cdec5..b650b0c 100644 (file)
@@ -85,7 +85,6 @@ struct rcu_state rcu_state = {
        .ofl_lock = __SPIN_LOCK_UNLOCKED(rcu_state.ofl_lock),
 };
 
-static struct rcu_data __percpu *const rcu_data_p = &rcu_data;
 LIST_HEAD(rcu_struct_flavors);
 
 /* Dump rcu_node combining tree at boot to verify correct setup. */
index 329d580..18175ca 100644 (file)
@@ -302,11 +302,11 @@ static void rcu_preempt_ctxt_queue(struct rcu_node *rnp, struct rcu_data *rdp)
 static void rcu_qs(void)
 {
        RCU_LOCKDEP_WARN(preemptible(), "rcu_qs() invoked with preemption enabled!!!\n");
-       if (__this_cpu_read(rcu_data_p->cpu_no_qs.s)) {
+       if (__this_cpu_read(rcu_data.cpu_no_qs.s)) {
                trace_rcu_grace_period(TPS("rcu_preempt"),
-                                      __this_cpu_read(rcu_data_p->gp_seq),
+                                      __this_cpu_read(rcu_data.gp_seq),
                                       TPS("cpuqs"));
-               __this_cpu_write(rcu_data_p->cpu_no_qs.b.norm, false);
+               __this_cpu_write(rcu_data.cpu_no_qs.b.norm, false);
                barrier(); /* Coordinate with rcu_flavor_check_callbacks(). */
                current->rcu_read_unlock_special.b.need_qs = false;
        }
@@ -805,8 +805,8 @@ static void rcu_flavor_check_callbacks(int user)
 
        /* If GP is oldish, ask for help from rcu_read_unlock_special(). */
        if (t->rcu_read_lock_nesting > 0 &&
-           __this_cpu_read(rcu_data_p->core_needs_qs) &&
-           __this_cpu_read(rcu_data_p->cpu_no_qs.b.norm) &&
+           __this_cpu_read(rcu_data.core_needs_qs) &&
+           __this_cpu_read(rcu_data.cpu_no_qs.b.norm) &&
            !t->rcu_read_unlock_special.b.need_qs &&
            time_after(jiffies, rsp->gp_start + HZ))
                t->rcu_read_unlock_special.b.need_qs = true;