Merge "ARM64: smp: Save CPU registers before IPI_CPU_STOP processing"

This commit is contained in:
qctecmdr 2019-07-31 18:47:34 -07:00 • committed by Gerrit - the friendly Code Review server
commit 292a453226

View file

@ -49,6 +49,7 @@
#include <asm/tlbflush.h>
#include <asm/ptrace.h>
#include <asm/virt.h>
#include <asm/system_misc.h>
#define CREATE_TRACE_POINTS
#include <trace/events/ipi.h>
@ -835,15 +836,20 @@ void arch_irq_work_raise(void)
#endif
static DEFINE_RAW_SPINLOCK(stop_lock);
static DEFINE_PER_CPU(struct pt_regs, regs_before_stop);
/*
* ipi_cpu_stop - handle IPI from smp_send_stop()
*/
static void ipi_cpu_stop(unsigned int cpu)
static void ipi_cpu_stop(unsigned int cpu, struct pt_regs *regs)
{
if (system_state == SYSTEM_BOOTING ||
system_state == SYSTEM_RUNNING) {
per_cpu(regs_before_stop, cpu) = *regs;
raw_spin_lock(&stop_lock);
pr_crit("CPU%u: stopping\n", cpu);
__show_regs(regs);
dump_stack();
raw_spin_unlock(&stop_lock);
}
@ -906,7 +912,7 @@ void handle_IPI(int ipinr, struct pt_regs *regs)
case IPI_CPU_STOP:
irq_enter();
ipi_cpu_stop(cpu);
ipi_cpu_stop(cpu, regs);
irq_exit();
break;