summaryrefslogtreecommitdiff
path: root/arch/h8300/Kconfig
diff options
context:
space:
mode:
authorSteven Rostedt <rostedt@goodmis.org>2014-01-31 17:07:57 (GMT)
committerScott Wood <scottwood@freescale.com>2015-02-13 22:20:47 (GMT)
commitdda72462814a74e75e3e33f8c579d73f0778ca2b (patch)
tree6bf9c4ff774cf930aa59d497a36abc2851841bef /arch/h8300/Kconfig
parent1bcad3c36c33203eeda7e45895d88e51d540567e (diff)
downloadlinux-fsl-qoriq-dda72462814a74e75e3e33f8c579d73f0778ca2b.tar.xz
timer/rt: Always raise the softirq if there's irq_work to be done
It was previously discovered that some systems would hang on boot up with a previous version of 3.12-rt. This was due to RCU using irq_work, and RT defers the irq_work to a softirq. But if there's no active timers, the softirq will not be raised, and RCU work will not get done, causing the system to hang. The fix was to check that if there was no active timers but irq_work to be done, then we should raise the softirq. But this fix was not 100% correct. It left out the case that there were active timers that were not expired yet. This would have the softirq not get raised even if there was irq work to be done. If there is irq_work to be done, then we must raise the timer softirq regardless of if there is active timers or whether they are expired or not. The softirq can handle those cases. But we can never ignore irq_work. As it is only PREEMPT_RT_FULL that requires irq_work to be done in the softirq, we can pull out the check in the active_timers condition, and make the code a bit cleaner by having the irq_work check separate, and put the code in with the other #ifdef PREEMPT_RT. If there is irq_work to be done, there's no need to check the active timers or if they are expired. Just raise the time softirq and be done with it. Otherwise, we can do the timer checks just like we do with non -rt. Signed-off-by: Steven Rostedt <rostedt@goodmis.org> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Diffstat (limited to 'arch/h8300/Kconfig')
0 files changed, 0 insertions, 0 deletions