From d5f3d7346a9673c3a620d4104b7840911b9b86dd Mon Sep 17 00:00:00 2001 From: Kyle Yan Date: Thu, 19 Jan 2017 10:31:18 -0800 Subject: [PATCH] arm64: Dump stack for all CPUs on SMP CPU stop Add the stack dump and printk of other CPUs when they are stopped during an abnormal operation like a panic - This information is useful for debugging to get a clear idea of what might have caused a crash. Change-Id: I91a62cfc7cdb49b9cdbb247869b5ba799947ece5 Signed-off-by: Kyle Yan Signed-off-by: Elliot Berman --- arch/arm64/kernel/smp.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c index 6dcf9607d770..5fddc2c27e12 100644 --- a/arch/arm64/kernel/smp.c +++ b/arch/arm64/kernel/smp.c @@ -834,11 +834,19 @@ void arch_irq_work_raise(void) } #endif +static DEFINE_RAW_SPINLOCK(stop_lock); /* * ipi_cpu_stop - handle IPI from smp_send_stop() */ static void ipi_cpu_stop(unsigned int cpu) { + if (system_state == SYSTEM_BOOTING || + system_state == SYSTEM_RUNNING) { + raw_spin_lock(&stop_lock); + pr_crit("CPU%u: stopping\n", cpu); + dump_stack(); + raw_spin_unlock(&stop_lock); + } set_cpu_online(cpu, false); local_daif_mask();