Re: [PATCH] printk/nmi: Prevent deadlock when serializing NMI backtraces

2018-06-19 Thread Sergey Senozhatsky
On (06/19/18 22:32), Steven Rostedt wrote: > On Wed, 20 Jun 2018 10:58:34 +0900 > Sergey Senozhatsky wrote: > > > Which one of these you'd prefer to see in ftrace_dump(): > > > > - printk_nmi_direct_enter() / printk_nmi_direct_exit() > > The above appears to be the most sane. OK. The original

Re: [PATCH] printk/nmi: Prevent deadlock when serializing NMI backtraces

2018-06-19 Thread Steven Rostedt
On Wed, 20 Jun 2018 10:58:34 +0900 Sergey Senozhatsky wrote: > Which one of these you'd prefer to see in ftrace_dump(): > > - printk_nmi_direct_enter() / printk_nmi_direct_exit() The above appears to be the most sane. -- Steve > - printk_chatty_nmi_enter() / printk_chatty_nmi_exit() > - print

Re: [PATCH] printk/nmi: Prevent deadlock when serializing NMI backtraces

2018-06-19 Thread Sergey Senozhatsky
On (06/19/18 09:23), Steven Rostedt wrote: > > On (06/19/18 09:52), Petr Mladek wrote: > > > On Mon 2018-06-18 19:07:18, Sergey Senozhatsky wrote: > > > > On (06/18/18 11:39), Petr Mladek wrote: > > > > [..] > > > > > > > > Hmm. Can't answer right now :) > > > > > > Please, let me know what n

Re: [PATCH] printk/nmi: Prevent deadlock when serializing NMI backtraces

2018-06-19 Thread Steven Rostedt
On Tue, 19 Jun 2018 17:27:16 +0900 Sergey Senozhatsky wrote: > On (06/19/18 09:52), Petr Mladek wrote: > > On Mon 2018-06-18 19:07:18, Sergey Senozhatsky wrote: > > > On (06/18/18 11:39), Petr Mladek wrote: > > > [..] > > > > > > Hmm. Can't answer right now :) > > > > Please, let me know wh

Re: [PATCH] printk/nmi: Prevent deadlock when serializing NMI backtraces

2018-06-19 Thread Sergey Senozhatsky
On (06/19/18 09:52), Petr Mladek wrote: > On Mon 2018-06-18 19:07:18, Sergey Senozhatsky wrote: > > On (06/18/18 11:39), Petr Mladek wrote: > > [..] > > > > Hmm. Can't answer right now :) > > Please, let me know what name you would like ;-) :) Wow, it's hard. Maybe we can derive some bits from t

Re: [PATCH] printk/nmi: Prevent deadlock when serializing NMI backtraces

2018-06-19 Thread Petr Mladek
On Mon 2018-06-18 19:07:18, Sergey Senozhatsky wrote: > On (06/18/18 11:39), Petr Mladek wrote: > [..] > > > > extern void printk_nmi_enter(void); > > > > extern void printk_nmi_exit(void); > > > > +extern void printk_nmi_direct_enter(void); > > > > +extern void printk_nmi_direct_exit(void); > >

Re: [PATCH] printk/nmi: Prevent deadlock when serializing NMI backtraces

2018-06-18 Thread Sergey Senozhatsky
On (06/18/18 11:39), Petr Mladek wrote: [..] > > > extern void printk_nmi_enter(void); > > > extern void printk_nmi_exit(void); > > > +extern void printk_nmi_direct_enter(void); > > > +extern void printk_nmi_direct_exit(void); > > > #else > > > static inline void printk_nmi_enter(void) { } > >

Re: [PATCH] printk/nmi: Prevent deadlock when serializing NMI backtraces

2018-06-18 Thread Petr Mladek
On Mon 2018-06-18 15:37:38, Sergey Senozhatsky wrote: > On (06/08/18 12:48), Petr Mladek wrote: > [..] > > diff --git a/include/linux/printk.h b/include/linux/printk.h > > index 6d7e800affd8..872fbdf8df26 100644 > > --- a/include/linux/printk.h > > +++ b/include/linux/printk.h > > @@ -148,9 +148,13

Re: [PATCH] printk/nmi: Prevent deadlock when serializing NMI backtraces

2018-06-17 Thread Sergey Senozhatsky
On (06/08/18 12:48), Petr Mladek wrote: [..] > diff --git a/include/linux/printk.h b/include/linux/printk.h > index 6d7e800affd8..872fbdf8df26 100644 > --- a/include/linux/printk.h > +++ b/include/linux/printk.h > @@ -148,9 +148,13 @@ void early_printk(const char *s, ...) { } > #ifdef CONFIG_PRINT

Re: [PATCH] printk/nmi: Prevent deadlock when serializing NMI backtraces

2018-06-08 Thread Petr Mladek
On Wed 2018-06-06 19:33:56, Sergey Senozhatsky wrote: > On (06/06/18 14:10), Sergey Senozhatsky wrote: > > On (06/05/18 14:47), Petr Mladek wrote: > > [..] > > > Grr, the ABBA deadlock is still there. NMIs are not sent to the other > > > CPUs atomically. Even if we detect that logbuf_lock is availa

Re: [PATCH] printk/nmi: Prevent deadlock when serializing NMI backtraces

2018-06-06 Thread Sergey Senozhatsky
On (06/06/18 13:15), Petr Mladek wrote: > On Wed 2018-06-06 14:10:29, Sergey Senozhatsky wrote: > > On (06/05/18 14:47), Petr Mladek wrote: > > [..] > > > Grr, the ABBA deadlock is still there. NMIs are not sent to the other > > > CPUs atomically. Even if we detect that logbuf_lock is available > >

Re: [PATCH] printk/nmi: Prevent deadlock when serializing NMI backtraces

2018-06-06 Thread Petr Mladek
On Wed 2018-06-06 14:10:29, Sergey Senozhatsky wrote: > On (06/05/18 14:47), Petr Mladek wrote: > [..] > > Grr, the ABBA deadlock is still there. NMIs are not sent to the other > > CPUs atomically. Even if we detect that logbuf_lock is available > > in printk_nmi_enter() on some CPUs, it might stil

Re: [PATCH] printk/nmi: Prevent deadlock when serializing NMI backtraces

2018-06-06 Thread Sergey Senozhatsky
On (06/06/18 14:10), Sergey Senozhatsky wrote: > On (06/05/18 14:47), Petr Mladek wrote: > [..] > > Grr, the ABBA deadlock is still there. NMIs are not sent to the other > > CPUs atomically. Even if we detect that logbuf_lock is available > > in printk_nmi_enter() on some CPUs, it might still get l

Re: [PATCH] printk/nmi: Prevent deadlock when serializing NMI backtraces

2018-06-05 Thread Sergey Senozhatsky
On (06/05/18 14:47), Petr Mladek wrote: [..] > Grr, the ABBA deadlock is still there. NMIs are not sent to the other > CPUs atomically. Even if we detect that logbuf_lock is available > in printk_nmi_enter() on some CPUs, it might still get locked on > another CPU before the other CPU gets NMI. Ca

Re: [PATCH] printk/nmi: Prevent deadlock when serializing NMI backtraces

2018-06-05 Thread Petr Mladek
On Thu 2018-05-17 16:39:03, Petr Mladek wrote: > The commit 719f6a7040f1bdaf96fcc ("printk: Use the main logbuf in NMI when > logbuf_lock is available") tried to detect when logbuf_lock was taken > on another CPU. Then it looked safe to wait for the lock even in NMI. > > It would be safe if other

Re: [PATCH] printk/nmi: Prevent deadlock when serializing NMI backtraces

2018-05-28 Thread Petr Mladek
On Wed 2018-05-23 11:01:07, Sergey Senozhatsky wrote: > On (05/22/18 17:43), Steven Rostedt wrote: > > > CPU0 CPU1CPU2 > > > > > > printk() > > > vprintk_emit() > > > spin_lock(&logbuf_lock) > > > > > > trigg

Re: [PATCH] printk/nmi: Prevent deadlock when serializing NMI backtraces

2018-05-22 Thread Sergey Senozhatsky
On (05/22/18 17:43), Steven Rostedt wrote: > > CPU0CPU1CPU2 > > > > printk() > > vprintk_emit() > > spin_lock(&logbuf_lock) > > > > trigger_all_cpu_backtrace() > >

Re: [PATCH] printk/nmi: Prevent deadlock when serializing NMI backtraces

2018-05-22 Thread Steven Rostedt
On Thu, 17 May 2018 16:39:03 +0200 Petr Mladek wrote: > The commit 719f6a7040f1bdaf96fcc ("printk: Use the main logbuf in NMI when > logbuf_lock is available") tried to detect when logbuf_lock was taken > on another CPU. Then it looked safe to wait for the lock even in NMI. > > It would be safe

Re: [PATCH] printk/nmi: Prevent deadlock when serializing NMI backtraces

2018-05-18 Thread Petr Mladek
On Fri 2018-05-18 15:38:20, Sergey Senozhatsky wrote: > On (05/18/18 11:07), Sergey Senozhatsky wrote: > > > > if (this_cpu_read(printk_context) & PRINTK_SAFE_CONTEXT_MASK) || > > raw_spin_is_locked(&logbuf_lock) > > > > just to check per-CPU `printk_context' first and only afterwards > > acc

Re: [PATCH] printk/nmi: Prevent deadlock when serializing NMI backtraces

2018-05-17 Thread Sergey Senozhatsky
On (05/18/18 11:07), Sergey Senozhatsky wrote: > > if (this_cpu_read(printk_context) & PRINTK_SAFE_CONTEXT_MASK) || > raw_spin_is_locked(&logbuf_lock) > > just to check per-CPU `printk_context' first and only afterwards > access the global `logbuf_lock'. printk_nmi_enter() happens on > ever

Re: [PATCH] printk/nmi: Prevent deadlock when serializing NMI backtraces

2018-05-17 Thread Sergey Senozhatsky
On (05/17/18 16:39), Petr Mladek wrote: > > CPU0 CPU1CPU2 > > printk() > vprintk_emit() > spin_lock(&logbuf_lock) > > trigger_all_cpu_backtrace() > raise() >

[PATCH] printk/nmi: Prevent deadlock when serializing NMI backtraces

2018-05-17 Thread Petr Mladek
The commit 719f6a7040f1bdaf96fcc ("printk: Use the main logbuf in NMI when logbuf_lock is available") tried to detect when logbuf_lock was taken on another CPU. Then it looked safe to wait for the lock even in NMI. It would be safe if other locks were not involved. Ironically the same commit intro