]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
rcu: Remove unnecessary spinlock in rcu_boot_init_percpu_data()
authorLihao Liang <lianglihao@huawei.com>
Wed, 22 Nov 2017 19:00:55 +0000 (19:00 +0000)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Thu, 15 Feb 2018 23:40:36 +0000 (15:40 -0800)
Since rcu_boot_init_percpu_data() is only called at boot time,
there is no data race and spinlock is not needed.

Signed-off-by: Lihao Liang <lianglihao@huawei.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
kernel/rcu/tree.c

index 491bdf39f276cd9f162460899c7ca223956dcf04..66c73a214cff8b6dd63f6a6e27e8035414ede87b 100644 (file)
@@ -3636,12 +3636,9 @@ static void rcu_init_new_rnp(struct rcu_node *rnp_leaf)
 static void __init
 rcu_boot_init_percpu_data(int cpu, struct rcu_state *rsp)
 {
-       unsigned long flags;
        struct rcu_data *rdp = per_cpu_ptr(rsp->rda, cpu);
-       struct rcu_node *rnp = rcu_get_root(rsp);
 
        /* Set up local state, ensuring consistent view of global state. */
-       raw_spin_lock_irqsave_rcu_node(rnp, flags);
        rdp->grpmask = leaf_node_cpu_bit(rdp->mynode, cpu);
        rdp->dynticks = &per_cpu(rcu_dynticks, cpu);
        WARN_ON_ONCE(rdp->dynticks->dynticks_nesting != 1);
@@ -3649,7 +3646,6 @@ rcu_boot_init_percpu_data(int cpu, struct rcu_state *rsp)
        rdp->cpu = cpu;
        rdp->rsp = rsp;
        rcu_boot_init_nocb_percpu_data(rdp);
-       raw_spin_unlock_irqrestore_rcu_node(rnp, flags);
 }
 
 /*