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 ;
2007-08-15 02:40:35 +02:00
# define NMI_DISABLED -1
2006-06-26 13:57:01 +02:00
# define NMI_NONE 0
# define NMI_IO_APIC 1
# define NMI_LOCAL_APIC 2
# define NMI_INVALID 3
2007-08-15 02:40:35 +02:00
# define NMI_DEFAULT NMI_DISABLED
2006-06-26 13:57:01 +02:00
2006-09-30 01:47:55 +02:00
struct ctl_table ;
struct file ;
extern int proc_nmi_enabled ( struct ctl_table * , int , struct file * ,
void __user * , size_t * , loff_t * ) ;
extern int unknown_nmi_panic ;
2006-12-07 02:14:01 +01:00
void __trigger_all_cpu_backtrace ( void ) ;
# define trigger_all_cpu_backtrace() __trigger_all_cpu_backtrace()
2007-05-02 19:27:20 +02:00
void lapic_watchdog_stop ( void ) ;
int lapic_watchdog_init ( unsigned nmi_hz ) ;
int lapic_wd_event ( unsigned nmi_hz ) ;
unsigned lapic_adjust_nmi_hz ( unsigned hz ) ;
int lapic_watchdog_ok ( void ) ;
void disable_lapic_nmi_watchdog ( void ) ;
void enable_lapic_nmi_watchdog ( void ) ;
2007-07-22 11:12:32 +02:00
void stop_nmi ( void ) ;
void restart_nmi ( void ) ;
2007-05-02 19:27:20 +02:00
2005-04-16 15:20:36 -07:00
# endif /* ASM_NMI_H */