alistair23-linux/arch/metag
James Hogan f6b30d32d2 metag: kick: add missing irq_enter/exit to kick_handler()
kick_handler() doesn't have an irq_enter/exit pair, but it's used for
handling SMP IPIs which require work to be done in softirqs, which are
invoked from irq_exit() when the hard irq nest count reaches 0.

The scheduler_ipi() callback in the IPI handler calls irq_enter/exit
itself, but this is inside kick_handler()'s spin lock critical section,
so if an invoked softirq issues an IPI the kick_handler() will be
re-entered on the same CPU and will deadlock.

This is easily fixed by adding the missing irq_enter/exit to
kick_handler() so that the hard irq nest count doesn't reach 0 until
after the spin lock has been released.

Ideally the spin lock protected handler list will also be replaced by a
lockless RCU protected list since it is certainly mostly read. That can
be done in a later change though.

Signed-off-by: James Hogan <james.hogan@imgtec.com>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
2013-07-02 14:12:08 +01:00
..
boot metag: tz1090: select and instantiate pinctrl-tz1090-pdc 2013-06-27 13:49:56 +01:00
configs metag: minimal TZ1090 (Comet) SoC infrastructure 2013-06-13 12:14:07 +01:00
include metag/traps: Mark die() as __noreturn to match the declaration. 2013-06-13 12:55:29 +01:00
kernel metag: kick: add missing irq_enter/exit to kick_handler() 2013-07-02 14:12:08 +01:00
lib
mm metag/mm/cache: Restrict scope for metag_lnkget_probe 2013-06-13 12:55:28 +01:00
oprofile metag: OProfile support 2013-03-15 13:21:05 +00:00
tbx
Kconfig Removal of GENERIC_GPIO for v3.10 2013-05-09 09:59:16 -07:00
Kconfig.debug
Kconfig.soc metag: tz1090: select and instantiate pinctrl-tz1090-pdc 2013-06-27 13:49:56 +01:00
Makefile metag: minimal TZ1090 (Comet) SoC infrastructure 2013-06-13 12:14:07 +01:00