ARM: 7872/1: Support arch_irq_work_raise() via self IPIs
authorStephen Boyd <sboyd@codeaurora.org>
Tue, 29 Oct 2013 19:32:56 +0000 (20:32 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Thu, 7 Nov 2013 00:21:26 +0000 (00:21 +0000)
commitbf18525fd793101df42a1344ecc48b49b62e48c9
treef21c8dab2f929ff4b5410ef8355bfba10c34aa45
parent8d451442549a2696880288ba6325f9681451231b
ARM: 7872/1: Support arch_irq_work_raise() via self IPIs

By default, IRQ work is run from the tick interrupt (see
irq_work_run() in update_process_times()). When we're in full
NOHZ mode, restarting the tick requires the use of IRQ work and
if the only place we run IRQ work is in the tick interrupt we
have an unbreakable cycle. Implement arch_irq_work_raise() via
self IPIs to break this cycle and get the tick started again.
Note that we implement this via IPIs which are only available on
SMP builds. This shouldn't be a problem because full NOHZ is only
supported on SMP builds anyway.

Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Reviewed-by: Kevin Hilman <khilman@linaro.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/include/asm/hardirq.h
arch/arm/kernel/smp.c