diff options
author | Steven Rostedt (Red Hat) <rostedt@goodmis.org> | 2014-06-20 01:33:32 +0400 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2014-11-20 06:01:21 +0300 |
commit | a9edc88093287183ac934be44f295f183b2c62dd (patch) | |
tree | 41e34afb4b458d73e0e374479c780d861cd10f7b /kernel/printk/printk.c | |
parent | afdc34a3d3b823a12a93b822ee1efb566f884032 (diff) | |
download | linux-a9edc88093287183ac934be44f295f183b2c62dd.tar.xz |
x86/nmi: Perform a safe NMI stack trace on all CPUs
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 seq_bufs are printed in a safe context.
Link: http://lkml.kernel.org/p/20140619213952.360076309@goodmis.org
Link: http://lkml.kernel.org/r/20141115050605.055232587@goodmis.org
Tested-by: Jiri Kosina <jkosina@suse.cz>
Acked-by: Jiri Kosina <jkosina@suse.cz>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Reviewed-by: Petr Mladek <pmladek@suse.cz>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'kernel/printk/printk.c')
0 files changed, 0 insertions, 0 deletions