aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>2015-09-29 11:59:32 -0400
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2015-12-04 15:27:31 -0500
commitf0f2e7d307fff226e0c1df5a07101a1216a46d8a (patch)
tree4f7f567e4e2518b9110e41af338d154aa9c30046
parent699d40352059e64a4d993af170272585c41988d0 (diff)
rcu: Avoid tick_nohz_active checks on NOCBs CPUs
Currently, rcu_prepare_for_idle() checks for tick_nohz_active, even on individual NOCBs CPUs, unless all CPUs are marked as NOCBs CPUs at build time. This check is pointless on NOCBs CPUs because they never have any callbacks posted, given that all of their callbacks are handed off to the corresponding rcuo kthread. There is a check for individually designated NOCBs CPUs, but it pointelessly follows the check for tick_nohz_active. This commit therefore moves the check for individually designated NOCBs CPUs up with the check for CONFIG_RCU_NOCB_CPU_ALL. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
-rw-r--r--kernel/rcu/tree_plugin.h7
1 files changed, 2 insertions, 5 deletions
diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h
index 42df93721e6f..8e9d4a4d0326 100644
--- a/kernel/rcu/tree_plugin.h
+++ b/kernel/rcu/tree_plugin.h
@@ -1513,7 +1513,8 @@ static void rcu_prepare_for_idle(void)
1513 struct rcu_state *rsp; 1513 struct rcu_state *rsp;
1514 int tne; 1514 int tne;
1515 1515
1516 if (IS_ENABLED(CONFIG_RCU_NOCB_CPU_ALL)) 1516 if (IS_ENABLED(CONFIG_RCU_NOCB_CPU_ALL) ||
1517 rcu_is_nocb_cpu(smp_processor_id()))
1517 return; 1518 return;
1518 1519
1519 /* Handle nohz enablement switches conservatively. */ 1520 /* Handle nohz enablement switches conservatively. */
@@ -1527,10 +1528,6 @@ static void rcu_prepare_for_idle(void)
1527 if (!tne) 1528 if (!tne)
1528 return; 1529 return;
1529 1530
1530 /* If this is a no-CBs CPU, no callbacks, just return. */
1531 if (rcu_is_nocb_cpu(smp_processor_id()))
1532 return;
1533
1534 /* 1531 /*
1535 * If a non-lazy callback arrived at a CPU having only lazy 1532 * If a non-lazy callback arrived at a CPU having only lazy
1536 * callbacks, invoke RCU core for the side-effect of recalculating 1533 * callbacks, invoke RCU core for the side-effect of recalculating