Re: [RFC][PATCH 12/12 v3] x86/nmi: Perform a safe NMI stack trace on all CPUs

Steven Rostedt
2014-11-04T23:41:10Z

On Wed, 5 Nov 2014 00:05:12 +0100 (CET)
Jiri Kosina <jkosina@suse.cz> wrote:

> On Tue, 4 Nov 2014, Steven Rostedt wrote:
>
> > From: "Steven Rostedt (Red Hat)" <rostedt@goodmis.org>
> >
> > When trigger_all_cpu_backtrace() is called on x86, it will trigger an
> > NMI on each CPU and call show_regs(). But this can lead to a hard lock
> > up if the NMI comes in on another printk().
> >
> > In order to avoid this, when the NMI triggers, it switches the printk
> > routine for that CPU to call a NMI safe printk function that records the
> > printk in a per_cpu seq_buf descriptor. After all NMIs have finished
> > recording its data, the trace_seqs are printed in a safe context.

Hmm, I need to update the change log to say seq_bufs instead of
trace_seqs.

> >
> > Link: http://lkml.kernel.org/p/20140619213952.360076309@goodmis.org
> >
> > Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
> > Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
>
> I've been running the whole machinery that used to trigger very quickly
> the complete hardlock of the machine (*) for the whole evening/night, and
> it's still running flawlessly.
>
> Plus, as I said previously, I agree with the whole idea (given the
> general nastiness of the problem and given the fact this simply has to be
> fixed without pointless delays).
>
> I.e FWIW
>
> Tested-by: Jiri Kosina <jkosina@suse.cz>
> Acked-by: Jiri Kosina <jkosina@suse.cz>
>
> for the whole series.

Thanks! I'll update the commits.

-- Steve

>
> (*) heavy printk() workload (**) + sysrq-l in parallel
> (**) iptables logging every incoming packet + flood ping from another
> machine
>
> Thanks,
>