nmi_backtrace: add more trigger_*_cpu_backtrace() methods
[cascardo/linux.git] / include / linux / nmi.h
index 4630eea..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,6 +75,14 @@ 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