On Fri, 10 Apr 2015 14:36:34 +0200 Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> wrote: > --- a/kernel/time/timer.c > +++ b/kernel/time/timer.c > @@ -1450,9 +1450,9 @@ void update_process_times(int user_tick) > scheduler_tick(); > run_local_timers(); > rcu_check_callbacks(cpu, user_tick); > -#ifdef CONFIG_IRQ_WORK > - if (in_irq()) > - irq_work_tick(); > + > +#if defined(CONFIG_IRQ_WORK) && !defined(CONFIG_PREEMPT_RT_FULL) > + irq_work_tick(); > #endif Found the bug. The above actually changes the code for !CONFIG_PREEMPT_RT_FULL. You still need to keep that if (in_irq()) check, otherwise you can call irq_work_tick() from softirq in non RT configs, which talking to Peter Zijlstra, is a no no. Note, my tests were failing on CONFIG_PREEMPT_LL (low latency). -- Steve > run_posix_cpu_timers(p); > } -- To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html