crash_kexec in oops_end() and panic()
Daniel Walker
danielwa at cisco.com
Wed Jun 7 09:20:51 PDT 2017
Hi,
These two paths seem to be duplicating each other. We have an issue
where we're using mtdoops to collect kernel logs on oops and panic, we
also have a crash kernel (which also collects these logs). mtdoops saves
logs differently for oops and panic, since oops isn't always fatal it
schedules a write to the flash. Since panic() is always fatal is writes
the logs immediately. In oops_end() the crash kernel runs immediately
while still signaling an OOPS condition to mtdoops. Since mtdoops
schedules a write to flash later, there is no later since the crash
kernel runs immediately, we end up without getting the logs
I'm wondering what the significance is to have these two paths ?
oops_end() could just call into panic() or a modified panic_with_regs()
then we would collapse multiple paths. There is what I would call a hack
in kexec_should_crash() which checks if there are
crash_kexec_post_notifiers and it runs panic() if they exist. This
wouldn't be needed if we always called panic() . I also wonder if there
are other things in panic() which we should be running , but don't get
run because of these two paths.
Any info appreciated.
Daniel
More information about the kexec
mailing list