On (10/04/18 16:44), Sergey Senozhatsky wrote: > So... Just an idea. Can you try a very dirty hack? Forcibly increase > oops_in_progress in panic() before console_flush_on_panic(), so 8250 > serial8250_console_write() will use spin_trylock_irqsave() and maybe > avoid deadlock. E.g. something like below? [this is not a patch; just a theory]: --- diff --git a/kernel/panic.c b/kernel/panic.c index 8b2e002d52eb..188338a55d1c 100644 --- a/kernel/panic.c +++ b/kernel/panic.c @@ -233,7 +233,13 @@ void panic(const char *fmt, ...) if (_crash_kexec_post_notifiers) __crash_kexec(NULL); + /* + * Decrement oops_in_progress and let bust_spinlocks() to + * unblank_screen(), console_unblank() and wake_up_klogd() + */ bust_spinlocks(0); + /* Set oops_in_progress, so we can reenter serial console driver*/ + bust_spinlocks(1); /* * We may have ended up stopping the CPU holding the lock (in