tick: broadcast: Prevent livelock from event handler
authorThomas Gleixner <tglx@linutronix.de>
Tue, 5 May 2015 08:00:13 +0000 (10:00 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Tue, 5 May 2015 08:25:23 +0000 (10:25 +0200)
commit2951d5c031a3aaefa31b688fbf229e75692f4786
tree572e5e41e8a640d5362708f84c93d8fb28ab13f8
parent30fbd59057004f97f45467124693f22e8b6f3e16
tick: broadcast: Prevent livelock from event handler

With the removal of the hrtimer softirq the switch to highres/nohz
mode happens in the tick interrupt. That leads to a livelock when the
per cpu event handler is directly called from the broadcast handler
under broadcast lock because broadcast lock needs to be taken for the
highres/nohz switch as well.

Solve this by calling the cpu local handler outside the broadcast_lock
held region.

Fixes: c6eb3f70d448 "hrtimer: Get rid of hrtimer softirq"
Reported-and-tested-by: Borislav Petkov <bp@alien8.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/time/tick-broadcast.c