diff options
author | Andi Kleen <ak@suse.de> | 2006-09-26 04:52:27 -0400 |
---|---|---|
committer | Andi Kleen <andi@basil.nowhere.org> | 2006-09-26 04:52:27 -0400 |
commit | fac58550e80c307bf17cfa0dd544fca4eff120a5 (patch) | |
tree | 04eb287f3dd1bb2d7e9887e4d25073ca9794fa27 /arch/x86_64/kernel/nmi.c | |
parent | 4038f901cf102a40715b900984ed7540a9fa637f (diff) |
[PATCH] Fix up panic messages for different NMI panics
When a unknown NMI happened the panic would claim a NMI watchdog timeout.
Also it would check the variable set by nmi_watchdog=panic and panic then.
Fix up the panic message to be generic
Unconditionally panic on unknown NMI when panic on unknown nmi is enabled.
Noticed by Jan Beulich
Cc: jbeulich@novell.com
Signed-off-by: Andi Kleen <ak@suse.de>
Diffstat (limited to 'arch/x86_64/kernel/nmi.c')
-rw-r--r-- | arch/x86_64/kernel/nmi.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/x86_64/kernel/nmi.c b/arch/x86_64/kernel/nmi.c index 5a35975e576..1b76d157452 100644 --- a/arch/x86_64/kernel/nmi.c +++ b/arch/x86_64/kernel/nmi.c | |||
@@ -695,7 +695,8 @@ int __kprobes nmi_watchdog_tick(struct pt_regs * regs, unsigned reason) | |||
695 | */ | 695 | */ |
696 | local_inc(&__get_cpu_var(alert_counter)); | 696 | local_inc(&__get_cpu_var(alert_counter)); |
697 | if (local_read(&__get_cpu_var(alert_counter)) == 5*nmi_hz) | 697 | if (local_read(&__get_cpu_var(alert_counter)) == 5*nmi_hz) |
698 | die_nmi("NMI Watchdog detected LOCKUP on CPU %d\n", regs); | 698 | die_nmi("NMI Watchdog detected LOCKUP on CPU %d\n", regs, |
699 | panic_on_timeout); | ||
699 | } else { | 700 | } else { |
700 | __get_cpu_var(last_irq_sum) = sum; | 701 | __get_cpu_var(last_irq_sum) = sum; |
701 | local_set(&__get_cpu_var(alert_counter), 0); | 702 | local_set(&__get_cpu_var(alert_counter), 0); |
@@ -765,7 +766,7 @@ static int unknown_nmi_panic_callback(struct pt_regs *regs, int cpu) | |||
765 | char buf[64]; | 766 | char buf[64]; |
766 | 767 | ||
767 | sprintf(buf, "NMI received for unknown reason %02x\n", reason); | 768 | sprintf(buf, "NMI received for unknown reason %02x\n", reason); |
768 | die_nmi(buf,regs); | 769 | die_nmi(buf, regs, 1); /* Always panic here */ |
769 | return 0; | 770 | return 0; |
770 | } | 771 | } |
771 | 772 | ||