Just convert all the files that have an nmi handler to the new routines. Most of it is straight forward conversion. A couple of places needed some tweaking like kgdb which separates the debug notifier from the nmi handler and mce removes a call to notify_die. [Thanks to Ying for finding out the history behind that mce call https://lkml.org/lkml/2010/5/27/114 And Boris responding that he would like to remove that call because of it https://lkml.org/lkml/2011/9/21/163] The things that get converted are the registeration/unregistration routines and the nmi handler itself has its args changed along with code removal to check which list it is on (most are on one NMI list except for kgdb which has both an NMI routine and an NMI Unknown routine). Signed-off-by: Don Zickus <dzickus@redhat.com> Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Acked-by: Corey Minyard <minyard@acm.org> Cc: Jason Wessel <jason.wessel@windriver.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Robert Richter <robert.richter@amd.com> Cc: Huang Ying <ying.huang@intel.com> Cc: Corey Minyard <minyard@acm.org> Cc: Jack Steiner <steiner@sgi.com> Link: http://lkml.kernel.org/r/1317409584-23662-4-git-send-email-dzickus@redhat.com Signed-off-by: Ingo Molnar <mingo@elte.hu>
47 lines
1.0 KiB
C
47 lines
1.0 KiB
C
#ifndef _ASM_X86_NMI_H
|
|
#define _ASM_X86_NMI_H
|
|
|
|
#include <linux/pm.h>
|
|
#include <asm/irq.h>
|
|
#include <asm/io.h>
|
|
|
|
#ifdef CONFIG_X86_LOCAL_APIC
|
|
|
|
extern int avail_to_resrv_perfctr_nmi_bit(unsigned int);
|
|
extern int reserve_perfctr_nmi(unsigned int);
|
|
extern void release_perfctr_nmi(unsigned int);
|
|
extern int reserve_evntsel_nmi(unsigned int);
|
|
extern void release_evntsel_nmi(unsigned int);
|
|
|
|
struct ctl_table;
|
|
extern int proc_nmi_enabled(struct ctl_table *, int ,
|
|
void __user *, size_t *, loff_t *);
|
|
extern int unknown_nmi_panic;
|
|
|
|
void arch_trigger_all_cpu_backtrace(void);
|
|
#define arch_trigger_all_cpu_backtrace arch_trigger_all_cpu_backtrace
|
|
#endif
|
|
|
|
#define NMI_FLAG_FIRST 1
|
|
|
|
enum {
|
|
NMI_LOCAL=0,
|
|
NMI_UNKNOWN,
|
|
NMI_MAX
|
|
};
|
|
|
|
#define NMI_DONE 0
|
|
#define NMI_HANDLED 1
|
|
|
|
typedef int (*nmi_handler_t)(unsigned int, struct pt_regs *);
|
|
|
|
int register_nmi_handler(unsigned int, nmi_handler_t, unsigned long,
|
|
const char *);
|
|
|
|
void unregister_nmi_handler(unsigned int, const char *);
|
|
|
|
void stop_nmi(void);
|
|
void restart_nmi(void);
|
|
|
|
#endif /* _ASM_X86_NMI_H */
|