rcu: Remove full memory barrier on boot time eqs sanity check
authorFrederic Weisbecker <frederic@kernel.org>
Wed, 15 May 2024 12:53:30 +0000 (14:53 +0200)
committerPaul E. McKenney <paulmck@kernel.org>
Fri, 28 Jun 2024 13:44:12 +0000 (06:44 -0700)
When the boot CPU initializes the per-CPU data on behalf of all possible
CPUs, a sanity check is performed on each of them to make sure none is
initialized in an extended quiescent state.

This check involves a full memory barrier which is useless at this early
boot stage.

Do a plain access instead.

Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Reviewed-by: Boqun Feng <boqun.feng@gmail.com>
Reviewed-by: Neeraj Upadhyay <neeraj.upadhyay@kernel.org>
kernel/rcu/tree.c

index da5718da280db298708478e350ba886642b4b3da..57d813781749f56c2ae2c155c1c22137428d661a 100644 (file)
@@ -4786,7 +4786,7 @@ rcu_boot_init_percpu_data(int cpu)
        rdp->grpmask = leaf_node_cpu_bit(rdp->mynode, cpu);
        INIT_WORK(&rdp->strict_work, strict_work_handler);
        WARN_ON_ONCE(ct->dynticks_nesting != 1);
-       WARN_ON_ONCE(rcu_dynticks_in_eqs(rcu_dynticks_snap(cpu)));
+       WARN_ON_ONCE(rcu_dynticks_in_eqs(ct_dynticks_cpu(cpu)));
        rdp->barrier_seq_snap = rcu_state.barrier_sequence;
        rdp->rcu_ofl_gp_seq = rcu_state.gp_seq;
        rdp->rcu_ofl_gp_state = RCU_GP_CLEANED;