|
@@ -49,6 +49,15 @@ void nmi_trigger_cpumask_backtrace(const cpumask_t *mask,
|
|
|
if (exclude_self)
|
|
|
cpumask_clear_cpu(this_cpu, to_cpumask(backtrace_mask));
|
|
|
|
|
|
+ /*
|
|
|
+ * Don't try to send an NMI to this cpu; it may work on some
|
|
|
+ * architectures, but on others it may not, and we'll get
|
|
|
+ * information at least as useful just by doing a dump_stack() here.
|
|
|
+ * Note that nmi_cpu_backtrace(NULL) will clear the cpu bit.
|
|
|
+ */
|
|
|
+ if (cpumask_test_cpu(this_cpu, to_cpumask(backtrace_mask)))
|
|
|
+ nmi_cpu_backtrace(NULL);
|
|
|
+
|
|
|
if (!cpumask_empty(to_cpumask(backtrace_mask))) {
|
|
|
pr_info("Sending NMI from CPU %d to CPUs %*pbl:\n",
|
|
|
this_cpu, nr_cpumask_bits, to_cpumask(backtrace_mask));
|