Juri Lelli has reported that threaded IRQs don't go along well with full dynticks.
The tick never manages to stop due to the following endless loop: * Timer tick raises timer softirq * Ksoftirqd wakes up, restarts the tick (2 tasks in the runqueue) * Timer tick raises timer softirq * Ksoftirqd wakes up, etc... The main issue here is that the tick fires the timer tick unconditionally, whether timers have expired or not. This set is a proposal to lower that. The 1st patch is actually a bugfix for a theoretical issue that I haven't observed in practice. But who knows? Patch 2 is a consolidation. Patch 3 and 4 are optimizations. The rest is about timer softirqs. git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks.git timers/softirq HEAD: d0567dd5546d1f32eca3772a431488f8b0ac26a1 Thanks, Frederic --- Frederic Weisbecker (10): timer: Prevent base->clk from moving backward timer: Move trigger_dyntick_cpu() to enqueue_timer() timer: Simplify LVL_START() and calc_index() timer: Optimize _next_timer_interrupt() level iteration timers: Always keep track of next expiry timer: Reuse next expiry cache after nohz exit timer: Expand clk forward logic beyond nohz timer: Spare timer softirq until next expiry timer: Remove must_forward_clk timer: Lower base clock forwarding threshold kernel/time/timer.c | 179 +++++++++++++++++++--------------------------------- 1 file changed, 64 insertions(+), 115 deletions(-)