Re: Atomicity in KMS panic notifier

From: David Herrmann
Date: Tue May 06 2014 - 09:53:37 EST


Hi

On Tue, May 6, 2014 at 3:38 PM, Takashi Iwai <tiwai@xxxxxxx> wrote:
> At Tue, 6 May 2014 15:32:21 +0200,
> David Herrmann wrote:
>> fbcon is called through the VT or fbdev layer, which is called by
>> bust_spinlocks(1) via either unblank_screen() or console_unblank().
>
> You mean bust_spinlocks(0), right?
>
> void __attribute__((weak)) bust_spinlocks(int yes)
> {
> if (yes) {
> ++oops_in_progress;
> } else {
> #ifdef CONFIG_VT
> unblank_screen();
> #endif
> console_unblank();
> if (--oops_in_progress == 0)
> wake_up_klogd();
> }
> }
>
> bust_spinlocks(0) is called after the notifier chain, and it's almost
> at the end of panic().

Yes, it's called _after_ the panic-handlers but _before_
console_unlock() (see console_unblank() in printk.c). Therefore, we
call into set_config() before the serial drivers get the panic-message
(flushed via console_unlock()). If the serial drivers (or whatever you
use for debugging) register their own panic-handlers, then they're
fine of course.

Thanks
David
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/