Procházet zdrojové kódy

rcu: Refine diagnostics for lacking kthread for no-CBs callbacks

Some diagnostics under CONFIG_PROVE_RCU in rcu_nocb_cpu_needs_barrier()
assume that there can be no early-boot callbacks.  This commit therefore
qualifies the diagnostic with rcu_scheduler_fully_active to permit
early boot callbacks to avoid this splat.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Paul E. McKenney před 10 roky
rodič
revize
59f792d1ef
1 změnil soubory, kde provedl 2 přidání a 1 odebrání
  1. 2 1
      kernel/rcu/tree_plugin.h

+ 2 - 1
kernel/rcu/tree_plugin.h

@@ -1945,7 +1945,8 @@ static bool rcu_nocb_cpu_needs_barrier(struct rcu_state *rsp, int cpu)
 		rhp = ACCESS_ONCE(rdp->nocb_follower_head);
 		rhp = ACCESS_ONCE(rdp->nocb_follower_head);
 
 
 	/* Having no rcuo kthread but CBs after scheduler starts is bad! */
 	/* Having no rcuo kthread but CBs after scheduler starts is bad! */
-	if (!ACCESS_ONCE(rdp->nocb_kthread) && rhp) {
+	if (!ACCESS_ONCE(rdp->nocb_kthread) && rhp &&
+	    rcu_scheduler_fully_active) {
 		/* RCU callback enqueued before CPU first came online??? */
 		/* RCU callback enqueued before CPU first came online??? */
 		pr_err("RCU: Never-onlined no-CBs CPU %d has CB %p\n",
 		pr_err("RCU: Never-onlined no-CBs CPU %d has CB %p\n",
 		       cpu, rhp->func);
 		       cpu, rhp->func);