f64da958df
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>
58 lines
1.1 KiB
C
58 lines
1.1 KiB
C
#ifndef _I386_KDEBUG_H
|
|
#define _I386_KDEBUG_H 1
|
|
|
|
/*
|
|
* Aug-05 2004 Ported by Prasanna S Panchamukhi <prasanna@in.ibm.com>
|
|
* from x86_64 architecture.
|
|
*/
|
|
#include <linux/notifier.h>
|
|
|
|
struct pt_regs;
|
|
|
|
struct die_args {
|
|
struct pt_regs *regs;
|
|
const char *str;
|
|
long err;
|
|
int trapnr;
|
|
int signr;
|
|
};
|
|
|
|
extern int register_die_notifier(struct notifier_block *);
|
|
extern int unregister_die_notifier(struct notifier_block *);
|
|
extern int register_page_fault_notifier(struct notifier_block *);
|
|
extern int unregister_page_fault_notifier(struct notifier_block *);
|
|
extern struct atomic_notifier_head i386die_chain;
|
|
|
|
|
|
/* Grossly misnamed. */
|
|
enum die_val {
|
|
DIE_OOPS = 1,
|
|
DIE_INT3,
|
|
DIE_DEBUG,
|
|
DIE_PANIC,
|
|
DIE_NMI,
|
|
DIE_DIE,
|
|
DIE_NMIWATCHDOG,
|
|
DIE_KERNELDEBUG,
|
|
DIE_TRAP,
|
|
DIE_GPF,
|
|
DIE_CALL,
|
|
DIE_NMI_IPI,
|
|
DIE_NMI_POST,
|
|
DIE_PAGE_FAULT,
|
|
};
|
|
|
|
static inline int notify_die(enum die_val val, const char *str,
|
|
struct pt_regs *regs, long err, int trap, int sig)
|
|
{
|
|
struct die_args args = {
|
|
.regs = regs,
|
|
.str = str,
|
|
.err = err,
|
|
.trapnr = trap,
|
|
.signr = sig
|
|
};
|
|
return atomic_notifier_call_chain(&i386die_chain, val, &args);
|
|
}
|
|
|
|
#endif
|