obtaining a minidump from panic() called from NMI handler

Maksim Yevmenkin maksim.yevmenkin at gmail.com
Wed Jun 10 17:36:52 UTC 2015


hello,

i have a question about obtaining minidump as result of panic() being
called from nmi handler. basically, i have a way to trigger nmi, and,
i would like to panic() system and obtain a minidump.

i have modified isa_nmi() to appropriately inspect bits and return
non-zero return code. i have turned off machdep.kdb_on_nmi knob (set
it to zero). i have confirmed that amd64 trap() is called with correct
T_NMI type. i've also confirmed that panic() is called from amd64's
trap().

the issue i have is that system is rebooting too early. basically, it
looks like minidump is started, but, for whatever reason, other cpus
are not completely stopped (or may be they are panic()ing again) and
system just reboots without having complete the minidump.

the issue is not present when machdep.kdb_on_nmi is set to 1. in this
case, system drops into ddb prompt and 'call doadump' works as
expected. for various reasons i can not use ddb, and, would like to
have system save nmi triggered minidump completely unattended.

can someone please give me a clue as to what i should be looking into
to make this work?

thanks!
max


More information about the freebsd-current mailing list