diff options
Diffstat (limited to 'include/linux/nmi.h')
| -rw-r--r-- | include/linux/nmi.h | 57 | 
1 files changed, 35 insertions, 22 deletions
diff --git a/include/linux/nmi.h b/include/linux/nmi.h index aa3cd0878270..8aa01fd859fb 100644 --- a/include/linux/nmi.h +++ b/include/linux/nmi.h @@ -6,18 +6,26 @@  #include <linux/sched.h>  #include <asm/irq.h> +#if defined(CONFIG_HAVE_NMI_WATCHDOG) +#include <asm/nmi.h> +#endif  #ifdef CONFIG_LOCKUP_DETECTOR +void lockup_detector_init(void); +#else +static inline void lockup_detector_init(void) +{ +} +#endif + +#ifdef CONFIG_SOFTLOCKUP_DETECTOR  extern void touch_softlockup_watchdog_sched(void);  extern void touch_softlockup_watchdog(void);  extern void touch_softlockup_watchdog_sync(void);  extern void touch_all_softlockup_watchdogs(void); -extern int proc_dowatchdog_thresh(struct ctl_table *table, int write, -				  void __user *buffer, -				  size_t *lenp, loff_t *ppos);  extern unsigned int  softlockup_panic; -extern unsigned int  hardlockup_panic; -void lockup_detector_init(void); +extern int soft_watchdog_enabled; +extern atomic_t watchdog_park_in_progress;  #else  static inline void touch_softlockup_watchdog_sched(void)  { @@ -31,9 +39,6 @@ static inline void touch_softlockup_watchdog_sync(void)  static inline void touch_all_softlockup_watchdogs(void)  {  } -static inline void lockup_detector_init(void) -{ -}  #endif  #ifdef CONFIG_DETECT_HUNG_TASK @@ -61,6 +66,21 @@ static inline void reset_hung_task_detector(void)  #define NMI_WATCHDOG_ENABLED      (1 << NMI_WATCHDOG_ENABLED_BIT)  #define SOFT_WATCHDOG_ENABLED     (1 << SOFT_WATCHDOG_ENABLED_BIT) +#if defined(CONFIG_HARDLOCKUP_DETECTOR) +extern void hardlockup_detector_disable(void); +extern unsigned int hardlockup_panic; +#else +static inline void hardlockup_detector_disable(void) {} +#endif + +#if defined(CONFIG_HARDLOCKUP_DETECTOR_PERF) +extern void arch_touch_nmi_watchdog(void); +#else +#if !defined(CONFIG_HAVE_NMI_WATCHDOG) +static inline void arch_touch_nmi_watchdog(void) {} +#endif +#endif +  /**   * touch_nmi_watchdog - restart NMI watchdog timeout.   *  @@ -68,21 +88,11 @@ static inline void reset_hung_task_detector(void)   * may be used to reset the timeout - for code which intentionally   * disables interrupts for a long time. This call is stateless.   */ -#if defined(CONFIG_HAVE_NMI_WATCHDOG) || defined(CONFIG_HARDLOCKUP_DETECTOR) -#include <asm/nmi.h> -extern void touch_nmi_watchdog(void); -#else  static inline void touch_nmi_watchdog(void)  { +	arch_touch_nmi_watchdog();  	touch_softlockup_watchdog();  } -#endif - -#if defined(CONFIG_HARDLOCKUP_DETECTOR) -extern void hardlockup_detector_disable(void); -#else -static inline void hardlockup_detector_disable(void) {} -#endif  /*   * Create trigger_all_cpu_backtrace() out of the arch-provided @@ -139,15 +149,18 @@ static inline bool trigger_single_cpu_backtrace(int cpu)  }  #endif -#ifdef CONFIG_LOCKUP_DETECTOR +#ifdef CONFIG_HARDLOCKUP_DETECTOR_PERF  u64 hw_nmi_get_sample_period(int watchdog_thresh); +#endif + +#ifdef CONFIG_LOCKUP_DETECTOR  extern int nmi_watchdog_enabled; -extern int soft_watchdog_enabled;  extern int watchdog_user_enabled;  extern int watchdog_thresh;  extern unsigned long watchdog_enabled; +extern struct cpumask watchdog_cpumask;  extern unsigned long *watchdog_cpumask_bits; -extern atomic_t watchdog_park_in_progress; +extern int __read_mostly watchdog_suspended;  #ifdef CONFIG_SMP  extern int sysctl_softlockup_all_cpu_backtrace;  extern int sysctl_hardlockup_all_cpu_backtrace;  | 
