Re: [PATCH] printk/nmi: restore printk_func in nmi_panic

From: Sergey Senozhatsky
Date: Fri Feb 26 2016 - 22:36:04 EST


On (02/27/16 12:09), Sergey Senozhatsky wrote:
> On (02/27/16 11:19), Sergey Senozhatsky wrote:
> [..]
> > > I think about a compromise. We should try to get the messages
> > > out only when kdump is not enabled.
> >
> > can we zap_locks() if we are on nmi_panic()->panic()->console_flush_on_panic() path?
> > console_flush_on_panic() is happening after we send out smp_send_stop().
>
> can something like this do the trick?

hm, no. it can't.

I forgot to move printk_nmi_exit() from nmi_panic() to panic(). so
it should have been:

panic()
...
printk_nmi_exit()
console_flush_on_panic()
__zap_locks()
printk_nmi_flush()
console_unlock()

but this __zap_locks() can _in theory_ race with irq_work->printk_nmi_flush().
so we need something more than this...

-ss