]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Fix handling of NMIs from unknown sources (BMC, hypervisor)
authorEric van Gyzen <vangyzen@FreeBSD.org>
Sun, 26 Apr 2020 00:41:29 +0000 (00:41 +0000)
committerEric van Gyzen <vangyzen@FreeBSD.org>
Sun, 26 Apr 2020 00:41:29 +0000 (00:41 +0000)
commitba0ced82eab1bd9664aa7304a7daeb6f1d20ab78
treeecf27d0771231e90ccd444791ba09e6e2a1a1e3c
parentcb761bb2fb40a9b318b5583110791b4d9669b1c0
Fix handling of NMIs from unknown sources (BMC, hypervisor)

Release kernels have no KDB backends enabled, so they discard an NMI
if it is not due to a hardware failure.  This includes NMIs from
IPMI BMCs and hypervisors.

Furthermore, the interaction of panic_on_nmi, kdb_on_nmi, and
debugger_on_panic is confusing.

Respond to all NMIs according to panic_on_nmi and debugger_on_panic.
Remove kdb_on_nmi.  Expand the meaning of panic_on_nmi by making
it a bitfield.  There are currently two bits: one for NMIs due to
hardware failure, and one for all others.  Leave room for more.

If panic_on_nmi and debugger_on_panic are both true, don't actually panic,
but directly enter the debugger, to allow someone to leave the debugger
and [hopefully] resume normal execution.

Reviewed by: kib
MFC after: 2 weeks
Relnotes: yes: machdep.kdb_on_nmi is gone; machdep.panic_on_nmi changed
Sponsored by: Dell EMC Isilon
Differential Revision: https://reviews.freebsd.org/D24558
sys/kern/kern_shutdown.c
sys/sys/kdb.h
sys/x86/x86/cpu_machdep.c