Re: [OSADL QA 3.18.9-rt5 #1]
From: Steven Rostedt <rostedt@goodmis.org>
Date: 2015-05-13 16:34:30
From: Steven Rostedt <rostedt@goodmis.org>
Date: 2015-05-13 16:34:30
On Fri, 10 Apr 2015 14:36:34 +0200 Sebastian Andrzej Siewior [off-list ref] 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); }