aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/rcutree_plugin.h
diff options
context:
space:
mode:
authorPaul E. McKenney <paul.mckenney@linaro.org>2012-05-05 22:10:35 -0400
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2012-06-06 23:43:27 -0400
commitfd4b352687fd8604d49c190c4c9ea9e369fd42d5 (patch)
tree1e20de9090f7d74eef642ac263dd71da0b494d7d /kernel/rcutree_plugin.h
parent8f5af6f1f2d09fe5eac86a5dc1731a5917c1503a (diff)
rcu: Update RCU_FAST_NO_HZ tracing for lazy callbacks
In the current code, a short dyntick-idle interval (where there is at least one non-lazy callback on the CPU) and a long dyntick-idle interval (where there are only lazy callbacks on the CPU) are traced identically, which can be less than helpful. This commit therefore emits different event traces in these two cases. Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Tested-by: Heiko Carstens <heiko.carstens@de.ibm.com> Tested-by: Pascal Chapperon <pascal.chapperon@wanadoo.fr>
Diffstat (limited to 'kernel/rcutree_plugin.h')
-rw-r--r--kernel/rcutree_plugin.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h
index 2411000d9869..5449f02c4820 100644
--- a/kernel/rcutree_plugin.h
+++ b/kernel/rcutree_plugin.h
@@ -2165,15 +2165,17 @@ static void rcu_prepare_for_idle(int cpu)
2165 !rcu_pending(cpu) && 2165 !rcu_pending(cpu) &&
2166 !local_softirq_pending()) { 2166 !local_softirq_pending()) {
2167 /* Can we go dyntick-idle despite still having callbacks? */ 2167 /* Can we go dyntick-idle despite still having callbacks? */
2168 trace_rcu_prep_idle("Dyntick with callbacks");
2169 per_cpu(rcu_dyntick_drain, cpu) = 0; 2168 per_cpu(rcu_dyntick_drain, cpu) = 0;
2170 per_cpu(rcu_dyntick_holdoff, cpu) = jiffies; 2169 per_cpu(rcu_dyntick_holdoff, cpu) = jiffies;
2171 if (rcu_cpu_has_nonlazy_callbacks(cpu)) 2170 if (rcu_cpu_has_nonlazy_callbacks(cpu)) {
2171 trace_rcu_prep_idle("Dyntick with callbacks");
2172 per_cpu(rcu_idle_gp_timer_expires, cpu) = 2172 per_cpu(rcu_idle_gp_timer_expires, cpu) =
2173 jiffies + RCU_IDLE_GP_DELAY; 2173 jiffies + RCU_IDLE_GP_DELAY;
2174 else 2174 } else {
2175 per_cpu(rcu_idle_gp_timer_expires, cpu) = 2175 per_cpu(rcu_idle_gp_timer_expires, cpu) =
2176 jiffies + RCU_IDLE_LAZY_GP_DELAY; 2176 jiffies + RCU_IDLE_LAZY_GP_DELAY;
2177 trace_rcu_prep_idle("Dyntick with lazy callbacks");
2178 }
2177 tp = &per_cpu(rcu_idle_gp_timer, cpu); 2179 tp = &per_cpu(rcu_idle_gp_timer, cpu);
2178 mod_timer_pinned(tp, per_cpu(rcu_idle_gp_timer_expires, cpu)); 2180 mod_timer_pinned(tp, per_cpu(rcu_idle_gp_timer_expires, cpu));
2179 per_cpu(rcu_nonlazy_posted_snap, cpu) = 2181 per_cpu(rcu_nonlazy_posted_snap, cpu) =