aboutsummaryrefslogtreecommitdiff
path: root/arch/powerpc/crypto
diff options
context:
space:
mode:
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>2015-04-10 11:50:22 +0200
committerAnders Roxell <anders.roxell@linaro.org>2015-06-01 12:03:39 +0200
commit0545bb2edf4c723d64c106b8bcac7a965deec53b (patch)
treeefea82f7ce2a990b72cac7b17a689cf63714e85a /arch/powerpc/crypto
parent873c6bc22569e32fa14f6310599f9a42d172c1a7 (diff)
kernel/irq_work: fix no_hz deadlock
Invoking NO_HZ's irq_work callback from timer irq is not working very well if the callback decides to invoke hrtimer_cancel(): |hrtimer_try_to_cancel+0x55/0x5f |hrtimer_cancel+0x16/0x28 |tick_nohz_restart+0x17/0x72 |__tick_nohz_full_check+0x8e/0x93 |nohz_full_kick_work_func+0xe/0x10 |irq_work_run_list+0x39/0x57 |irq_work_tick+0x60/0x67 |update_process_times+0x57/0x67 |tick_sched_handle+0x4a/0x59 |tick_sched_timer+0x3b/0x64 |__run_hrtimer+0x7a/0x149 |hrtimer_interrupt+0x1cc/0x2c5 and here we deadlock while waiting for the lock which we are holding. To fix this I'm doing the same thing that upstream is doing: is the irq_work dedicated IRQ and use it only for what is marked as "hirq" which should only be the FULL_NO_HZ related work. Cc: stable-rt@vger.kernel.org Reported-by: Carsten Emde <C.Emde@osadl.org> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> [ Added back in_irq() check for non PREEMPT_RT configs ] Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'arch/powerpc/crypto')
0 files changed, 0 insertions, 0 deletions