Commit 696a02cc16b182dd78b1f395ae336f449cc90f11
Committed by
Paul E. McKenney
1 parent
c3ce910b14
Exists in
smarc-l5.0.0_1.0.0-ga
and in
5 other branches
rcu: Hold off RCU_FAST_NO_HZ after timer posted
This commit handles workloads that transition quickly between idle and non-idle, and where the CPU's callbacks cannot be invoked, but where RCU does not have anything immediate for the CPU to do. Without this patch, the RCU_FAST_NO_HZ code can be invoked repeatedly on each entry to idle. The commit sets the per-CPU rcu_dyntick_holdoff variable to hold off further attempts for a tick. Reported-by: "Abou Gazala, Neven M" <neven.m.abou.gazala@intel.com> Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Showing 1 changed file with 1 additions and 1 deletions Side-by-side Diff
kernel/rcutree_plugin.h
... | ... | @@ -2138,7 +2138,7 @@ |
2138 | 2138 | /* Can we go dyntick-idle despite still having callbacks? */ |
2139 | 2139 | trace_rcu_prep_idle("Dyntick with callbacks"); |
2140 | 2140 | per_cpu(rcu_dyntick_drain, cpu) = 0; |
2141 | - per_cpu(rcu_dyntick_holdoff, cpu) = jiffies - 1; | |
2141 | + per_cpu(rcu_dyntick_holdoff, cpu) = jiffies; | |
2142 | 2142 | if (rcu_cpu_has_nonlazy_callbacks(cpu)) |
2143 | 2143 | hrtimer_start(&per_cpu(rcu_idle_gp_timer, cpu), |
2144 | 2144 | rcu_idle_gp_wait, HRTIMER_MODE_REL); |