genirq: Provide basic NMI management for interrupt lines
authorJulien Thierry <julien.thierry@arm.com>
Thu, 31 Jan 2019 14:53:58 +0000 (14:53 +0000)
committerMarc Zyngier <marc.zyngier@arm.com>
Tue, 5 Feb 2019 14:36:57 +0000 (14:36 +0000)
commitb525903c254dab2491410f0f23707691b7c2c317
tree11bad762c8aae79bfa042e47d263362f8d288b20
parent49a57857aeea06ca831043acbb0fa5e0f50602fd
genirq: Provide basic NMI management for interrupt lines

Add functionality to allocate interrupt lines that will deliver IRQs
as Non-Maskable Interrupts. These allocations are only successful if
the irqchip provides the necessary support and allows NMI delivery for the
interrupt line.

Interrupt lines allocated for NMI delivery must be enabled/disabled through
enable_nmi/disable_nmi_nosync to keep their state consistent.

To treat a PERCPU IRQ as NMI, the interrupt must not be shared nor threaded,
the irqchip directly managing the IRQ must be the root irqchip and the
irqchip cannot be behind a slow bus.

Signed-off-by: Julien Thierry <julien.thierry@arm.com>
Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
include/linux/interrupt.h
include/linux/irq.h
kernel/irq/debugfs.c
kernel/irq/internals.h
kernel/irq/manage.c