nmi_backtrace: add more trigger_*_cpu_backtrace() methods
[cascardo/linux.git] / include / linux / nmi.h
index 79858af..a78c35c 100644 (file)
@@ -35,21 +35,34 @@ static inline void hardlockup_detector_disable(void) {}
  * base function. Return whether such support was available,
  * to allow calling code to fall back to some other mechanism:
  */
-#ifdef arch_trigger_all_cpu_backtrace
+#ifdef arch_trigger_cpumask_backtrace
 static inline bool trigger_all_cpu_backtrace(void)
 {
-       arch_trigger_all_cpu_backtrace(true);
-
+       arch_trigger_cpumask_backtrace(cpu_online_mask, false);
        return true;
 }
+
 static inline bool trigger_allbutself_cpu_backtrace(void)
 {
-       arch_trigger_all_cpu_backtrace(false);
+       arch_trigger_cpumask_backtrace(cpu_online_mask, true);
+       return true;
+}
+
+static inline bool trigger_cpumask_backtrace(struct cpumask *mask)
+{
+       arch_trigger_cpumask_backtrace(mask, false);
+       return true;
+}
+
+static inline bool trigger_single_cpu_backtrace(int cpu)
+{
+       arch_trigger_cpumask_backtrace(cpumask_of(cpu), false);
        return true;
 }
 
 /* generic implementation */
-void nmi_trigger_all_cpu_backtrace(bool include_self,
+void nmi_trigger_cpumask_backtrace(const cpumask_t *mask,
+                                  bool exclude_self,
                                   void (*raise)(cpumask_t *mask));
 bool nmi_cpu_backtrace(struct pt_regs *regs);
 
@@ -62,11 +75,18 @@ static inline bool trigger_allbutself_cpu_backtrace(void)
 {
        return false;
 }
+static inline bool trigger_cpumask_backtrace(struct cpumask *mask)
+{
+       return false;
+}
+static inline bool trigger_single_cpu_backtrace(int cpu)
+{
+       return false;
+}
 #endif
 
 #ifdef CONFIG_LOCKUP_DETECTOR
 u64 hw_nmi_get_sample_period(int watchdog_thresh);
-int hw_nmi_get_event(void);
 extern int nmi_watchdog_enabled;
 extern int soft_watchdog_enabled;
 extern int watchdog_user_enabled;