[PATCH 3/6] x86, nmi: Add boot line option 'panic_on_unrecovered_nmi' and 'panic_on_io_nmi'

Don Zickus
2014-05-15T19:26:46Z

These options are accessable through /proc/sys/kernel but not on the command
line. The main use is for on board controllers (iLO, DRAC, BMC) to be able
to issue an external NMI to bring down a hung box.

This just makes configuring a box a little easier.

Signed-off-by: Don Zickus <dzickus@redhat.com>
---
Documentation/kernel-parameters.txt | 9 +++++++++
arch/x86/kernel/nmi.c | 14 ++++++++++++++
2 files changed, 23 insertions(+), 0 deletions(-)

diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index b6c67d5..a4056b5 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -2339,6 +2339,15 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
timeout < 0: reboot immediately
Format: <timeout>

+ panic_on_unrecovered_nmi [X86]
+ Force a machine to panic if an unrecoverable NMI is
+ unclaimed. This covers SERR or UNKONWN NMI cases.
+
+ panic_on_io_nmi [X86]
+ Force a machine to panic if an IO NMI is unclaimed.
+ This covers external NMIs with no handlers associated
+ with them.
+
parkbd.port= [HW] Parallel port number the keyboard adapter is
connected to, default is 0.
Format: <parport#>
diff --git a/arch/x86/kernel/nmi.c b/arch/x86/kernel/nmi.c
index b7c6f6b..0467f42 100644
--- a/arch/x86/kernel/nmi.c
+++ b/arch/x86/kernel/nmi.c
@@ -87,6 +87,20 @@ static int __init setup_unknown_nmi_panic(char *str)
}
__setup("unknown_nmi_panic", setup_unknown_nmi_panic);

+static int __init setup_panic_on_unrecovered_nmi(char *str)
+{
+ panic_on_unrecovered_nmi = 1;
+ return 1;
+}
+__setup("panic_on_unrecovered_nmi", setup_panic_on_unrecovered_nmi);
+
+static int __init setup_panic_on_io_nmi(char *str)
+{
+ panic_on_io_nmi = 1;
+ return 1;
+}
+__setup("panic_on_io_nmi", setup_panic_on_io_nmi);
+
#define nmi_to_desc(type) (&nmi_desc[type])

static u64 nmi_longest_ns = 1 * NSEC_PER_MSEC;
--
1.7.1