]> git.baikalelectronics.ru Git - kernel.git/commit
ARM: 7316/1: kexec: EOI active and mask all interrupts in kexec crash path
authorWill Deacon <will.deacon@arm.com>
Fri, 3 Feb 2012 13:48:01 +0000 (14:48 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sat, 24 Mar 2012 09:38:54 +0000 (09:38 +0000)
commit0e735dc4705f0b29a885ab7af7d02eff25cbf1b7
tree464a67fa3954cac8463748a649361fde82eaf3a0
parent7c5fb668ca9ef81feda560ee8d8f50cf9ff3e8da
ARM: 7316/1: kexec: EOI active and mask all interrupts in kexec crash path

The kexec machine crash code can be called in interrupt context via a
sysrq trigger made using the magic key combination. If the irq chip
dealing with the serial interrupt is using the fasteoi flow handler,
then we will never EOI the interrupt because the interrupt handler will
be fatal. In the case of a GIC, this results in the crash kernel not
receiving interrupts on that CPU interface.

This patch adds code (based on the PowerPC implementation) to EOI any
pending interrupts on the crash CPU before masking and disabling all
interrupts. Secondary cores are not a problem since they are placed into
a cpu_relax() loop via an IPI.

Reported-by: Lei Wen <leiwen@marvell.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/kernel/machine_kexec.c