From: Andrew Morton Cc: Andi Kleen Cc: Ingo Molnar Cc: Badari Pulavarty Signed-off-by: Andrew Morton --- arch/i386/kernel/nmi.c | 4 ++++ arch/x86_64/kernel/nmi.c | 4 ++++ 2 files changed, 8 insertions(+) diff -puN arch/i386/kernel/nmi.c~spinlock-debug-all-cpu-backtrace-fix arch/i386/kernel/nmi.c --- a/arch/i386/kernel/nmi.c~spinlock-debug-all-cpu-backtrace-fix +++ a/arch/i386/kernel/nmi.c @@ -911,9 +911,13 @@ __kprobes int nmi_watchdog_tick(struct p } if (cpu_isset(cpu, backtrace_mask)) { + static DEFINE_SPINLOCK(lock); /* Serialise the printks */ + cpu_clear(cpu, backtrace_mask); + spin_lock(&lock); printk("NMI backtrace for cpu %d\n", cpu); dump_stack(); + spin_unlock(&lock); } sum = per_cpu(irq_stat, cpu).apic_timer_irqs; diff -puN arch/x86_64/kernel/nmi.c~spinlock-debug-all-cpu-backtrace-fix arch/x86_64/kernel/nmi.c --- a/arch/x86_64/kernel/nmi.c~spinlock-debug-all-cpu-backtrace-fix +++ a/arch/x86_64/kernel/nmi.c @@ -804,9 +804,13 @@ int __kprobes nmi_watchdog_tick(struct p } if (cpu_isset(cpu, backtrace_mask)) { + static DEFINE_SPINLOCK(lock); /* Serialise the printks */ + cpu_clear(cpu, backtrace_mask); + spin_lock(&lock); printk("NMI backtrace for cpu %d\n", cpu); dump_stack(); + spin_unlock(&lock); } #ifdef CONFIG_X86_MCE _