Index: sys/x86/isa/nmi.c =================================================================== --- sys/x86/isa/nmi.c +++ sys/x86/isa/nmi.c @@ -37,7 +37,8 @@ #include __FBSDID("$FreeBSD$"); -#include +#include +#include #include #include @@ -45,10 +46,16 @@ #define NMI_PARITY (1 << 7) #define NMI_IOCHAN (1 << 6) +#define NMI_TIMER2 (1 << 5) #define ENMI_WATCHDOG (1 << 7) #define ENMI_BUSTIMER (1 << 6) #define ENMI_IOSTATUS (1 << 5) +static int panic_on_isa_timer2 = 0; +SYSCTL_INT(_machdep, OID_AUTO, panic_on_isa_timer2, CTLFLAG_RWTUN, + &panic_on_isa_timer2, 0, + "Panic on NMI for ISA timer2 signal (used by some IPMI boards)"); + /* * Handle a NMI, possibly a machine check. * return true to panic system, false to ignore. @@ -69,6 +76,11 @@ if (isa_port & NMI_IOCHAN) { log(LOG_CRIT, "I/O channel check, likely hardware failure."); + retval = 1; + } + + if ((isa_port & NMI_TIMER2) && panic_on_isa_timer2) { + log(LOG_CRIT, "ISA timer 2 signal received."); retval = 1; }