nmi_backtrace: do a local dump_stack() instead of a self-NMI
[cascardo/linux.git] / arch / arm / kernel / smp.c
index 8615216..7dd14e8 100644 (file)
@@ -82,7 +82,7 @@ enum ipi_msg_type {
 
 static DECLARE_COMPLETION(cpu_running);
 
-static struct smp_operations smp_ops;
+static struct smp_operations smp_ops __ro_after_init;
 
 void __init smp_set_ops(const struct smp_operations *ops)
 {
@@ -748,19 +748,10 @@ core_initcall(register_cpufreq_notifier);
 
 static void raise_nmi(cpumask_t *mask)
 {
-       /*
-        * Generate the backtrace directly if we are running in a calling
-        * context that is not preemptible by the backtrace IPI. Note
-        * that nmi_cpu_backtrace() automatically removes the current cpu
-        * from mask.
-        */
-       if (cpumask_test_cpu(smp_processor_id(), mask) && irqs_disabled())
-               nmi_cpu_backtrace(NULL);
-
        smp_cross_call(mask, IPI_CPU_BACKTRACE);
 }
 
-void arch_trigger_all_cpu_backtrace(bool include_self)
+void arch_trigger_cpumask_backtrace(const cpumask_t *mask, bool exclude_self)
 {
-       nmi_trigger_all_cpu_backtrace(include_self, raise_nmi);
+       nmi_trigger_cpumask_backtrace(mask, exclude_self, raise_nmi);
 }