Messages in this thread | | | From | (Eric W. Biederman) | Date | Wed, 17 Feb 2010 20:02:20 -0800 | Subject | Re: [PATCH 26/28] kdb,panic,debug_core: Allow the debug core to receive a panic before smp_send_stop() |
| |
Andrew Morton <akpm@linux-foundation.org> writes:
> On Fri, 12 Feb 2010 17:43:39 -0600 Jason Wessel <jason.wessel@windriver.com> wrote: > >> >> printk(KERN_EMERG "Kernel panic - not syncing: %s\n",buf); >> >> #ifdef CONFIG_DEBUG_BUGVERBOSE >> >> dump_stack(); >> >> @@ -91,8 +94,6 @@ NORET_TYPE void panic(const char * fmt, ...) >> >> */ >> >> smp_send_stop(); >> >> >> >> - atomic_notifier_call_chain(&panic_notifier_list, 0, buf); >> >> - >> >> bust_spinlocks(0); >> >> >> >> if (!panic_blink) >> >> >> > >> > So the notifier call now happens before all the printks and the kexec >> > and kmsg_dump handling. What effect does this have upon the code which >> > implements kexec and kmsg_dump? >> > >> > >> >> I certainly don't want to break kexec or alter any behavior, does that >> mean kgdb / kdb should hook the kexec for notification? >> >> I think ideally it is a end user's preference as to if they want in via >> kexec or the kernel debugger. Calling the smp_send_stop() prior to the >> notifier was a death sentence for the kernel debugger. >> >> Perhaps I can move the notifier before smp_send_stop()? > > Well. My question can be simplified to "does this break existing code"?
Yes. Removing the bust_spinlocks(1) and moving the panic notification up will measurably decrease the reliability of crash dump capture. I expect it will even result in dead_locks where we fail to print the panic message for people who are trying to debug via the console.
Eric
| |