[PATCH] ARM: kexec: EOI active and mask all interrupts in kexec crash path

Russell King - ARM Linux linux at arm.linux.org.uk
Wed Jan 18 10:07:24 EST 2012


On Wed, Jan 18, 2012 at 03:01:25PM +0000, Will Deacon wrote:
> 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.

So, what happens if we fault in an interrupt handler, we have
panic_on_oops set, and we have panic configured to automatically
reboot after a period?

I think we actually want this to happen at boot to make sure that the
CPU interfaces are properly initialized each time the kernel is brought
up.

> @@ -53,6 +54,28 @@ void machine_crash_nonpanic_core(void *unused)
>  		cpu_relax();
>  }
>  
> +static void machine_kexec_mask_interrupts(void) {

Coding style error.



More information about the linux-arm-kernel mailing list