aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorCorey Minyard <minyard@acm.org>2007-05-08 03:23:58 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-05-08 14:14:58 -0400
commitf64da958dfc83335de1d2bef9d3868f30feb4e53 (patch)
treeebf2ca43cf50ea05742b19806ca72c5027c0911a /arch
parentee6cd5f8f573ad11f270a07fb201822c2862474d (diff)
ipmi: add new IPMI nmi watchdog handling
Convert over to the new NMI handling for getting IPMI watchdog timeouts via an NMI. This add config options to know if there is the ability to receive NMIs and if it has an NMI post processing call. Then it modifies the IPMI watchdog to take advantage of this so that it can know if an NMI comes in. It also adds testing that the IPMI NMI watchdog works. Signed-off-by: Corey Minyard <minyard@acm.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/i386/kernel/traps.c5
-rw-r--r--arch/x86_64/kernel/traps.c2
2 files changed, 7 insertions, 0 deletions
diff --git a/arch/i386/kernel/traps.c b/arch/i386/kernel/traps.c
index f21b41e7770c..58c8e015e77e 100644
--- a/arch/i386/kernel/traps.c
+++ b/arch/i386/kernel/traps.c
@@ -747,6 +747,11 @@ static __kprobes void default_do_nmi(struct pt_regs * regs)
747 */ 747 */
748 if (nmi_watchdog_tick(regs, reason)) 748 if (nmi_watchdog_tick(regs, reason))
749 return; 749 return;
750#endif
751 if (notify_die(DIE_NMI_POST, "nmi_post", regs, reason, 2, 0)
752 == NOTIFY_STOP)
753 return;
754#ifdef CONFIG_X86_LOCAL_APIC
750 if (!do_nmi_callback(regs, smp_processor_id())) 755 if (!do_nmi_callback(regs, smp_processor_id()))
751#endif 756#endif
752 unknown_nmi_error(reason, regs); 757 unknown_nmi_error(reason, regs);
diff --git a/arch/x86_64/kernel/traps.c b/arch/x86_64/kernel/traps.c
index d76fc32d4599..0484a2ceac87 100644
--- a/arch/x86_64/kernel/traps.c
+++ b/arch/x86_64/kernel/traps.c
@@ -792,6 +792,8 @@ asmlinkage __kprobes void default_do_nmi(struct pt_regs *regs)
792 */ 792 */
793 if (nmi_watchdog_tick(regs,reason)) 793 if (nmi_watchdog_tick(regs,reason))
794 return; 794 return;
795 if (notify_die(DIE_NMI_POST, "nmi_post", regs, reason, 2, 0)
796 == NOTIFY_STOP)
795 if (!do_nmi_callback(regs,cpu)) 797 if (!do_nmi_callback(regs,cpu))
796 unknown_nmi_error(reason, regs); 798 unknown_nmi_error(reason, regs);
797 799