2005-04-16 15:20:36 -07:00
# ifndef ASM_NMI_H
# define ASM_NMI_H
# include <linux/pm.h>
2006-12-07 02:14:01 +01:00
# include <asm/irq.h>
# ifdef ARCH_HAS_NMI_WATCHDOG
2006-06-26 13:57:01 +02:00
/**
2006-09-26 10:52:27 +02:00
* do_nmi_callback
2005-04-16 15:20:36 -07:00
*
2006-09-26 10:52:27 +02:00
* Check to see if a callback exists and execute it . Return 1
* if the handler exists and was handled successfully .
2005-04-16 15:20:36 -07:00
*/
2006-09-26 10:52:27 +02:00
int do_nmi_callback ( struct pt_regs * regs , int cpu ) ;
2006-06-26 13:57:01 +02:00
2006-09-26 10:52:27 +02:00
extern int nmi_watchdog_enabled ;
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
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()
# endif
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 */