2005-04-16 15:20:36 -07:00
/*
* linux / include / asm - i386 / nmi . h
*/
# ifndef ASM_NMI_H
# define ASM_NMI_H
# include <linux/pm.h>
2006-06-26 13:57:01 +02:00
# include <asm/io.h>
2005-04-16 15:20:36 -07:00
2006-09-26 10:52:26 +02:00
/**
* do_nmi_callback
*
* Check to see if a callback exists and execute it . Return 1
* if the handler exists and was handled successfully .
*/
int do_nmi_callback ( struct pt_regs * regs , int cpu ) ;
2005-04-16 15:20:36 -07:00
# ifdef CONFIG_PM
/** Replace the PM callback routine for NMI. */
struct pm_dev * set_nmi_pm_callback ( pm_callback callback ) ;
/** Unset the PM callback routine back to the default. */
void unset_nmi_pm_callback ( struct pm_dev * dev ) ;
# else
static inline struct pm_dev * set_nmi_pm_callback ( pm_callback callback )
{
return 0 ;
}
static inline void unset_nmi_pm_callback ( struct pm_dev * dev )
{
}
# endif /* CONFIG_PM */
extern void default_do_nmi ( struct pt_regs * ) ;
2006-09-26 10:52:27 +02:00
extern void die_nmi ( char * str , struct pt_regs * regs , int do_panic ) ;
2005-04-16 15:20:36 -07:00
# define get_nmi_reason() inb(0x61)
extern int panic_on_timeout ;
extern int unknown_nmi_panic ;
2006-09-26 10:52:27 +02:00
extern int nmi_watchdog_enabled ;
2005-05-16 21:53:34 -07:00
extern int check_nmi_watchdog ( void ) ;
2006-09-26 10:52:26 +02:00
extern int avail_to_resrv_perfctr_nmi_bit ( unsigned int ) ;
extern int avail_to_resrv_perfctr_nmi ( 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 ) ;
2006-09-26 10:52:26 +02:00
extern void setup_apic_nmi_watchdog ( void * ) ;
2006-09-26 10:52:27 +02:00
extern void stop_apic_nmi_watchdog ( void * ) ;
2006-06-26 13:57:01 +02:00
extern void disable_timer_nmi_watchdog ( void ) ;
extern void enable_timer_nmi_watchdog ( void ) ;
2006-09-26 10:52:26 +02:00
extern int nmi_watchdog_tick ( struct pt_regs * regs , unsigned reason ) ;
2006-06-26 13:57:01 +02:00
extern void nmi_watchdog_default ( void ) ;
extern int setup_nmi_watchdog ( char * ) ;
2006-09-26 10:52:26 +02:00
extern atomic_t nmi_active ;
2006-06-26 13:57:01 +02:00
extern unsigned int nmi_watchdog ;
# define NMI_DEFAULT -1
# define NMI_NONE 0
# define NMI_IO_APIC 1
# define NMI_LOCAL_APIC 2
# define NMI_INVALID 3
2005-04-16 15:20:36 -07:00
# endif /* ASM_NMI_H */