Skip to content
Snippets Groups Projects
Commit d2b496e5 authored by Michael Ellerman's avatar Michael Ellerman Committed by Benjamin Herrenschmidt
Browse files

powerpc/xmon: Don't signal we've entered until we're finished printing


Currently we set our cpu's bit in cpus_in_xmon, and then we take the
output lock and print the exception information.

This can race with the master cpu entering the command loop and printing
the backtrace. The result is that the backtrace gets garbled with
another cpu's exception print out.

Fix it by delaying the set of cpus_in_xmon until we are finished
printing.

Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent 15075897
No related merge requests found
...@@ -404,7 +404,6 @@ static int xmon_core(struct pt_regs *regs, int fromipi) ...@@ -404,7 +404,6 @@ static int xmon_core(struct pt_regs *regs, int fromipi)
} }
xmon_fault_jmp[cpu] = recurse_jmp; xmon_fault_jmp[cpu] = recurse_jmp;
cpumask_set_cpu(cpu, &cpus_in_xmon);
bp = NULL; bp = NULL;
if ((regs->msr & (MSR_IR|MSR_PR|MSR_64BIT)) == (MSR_IR|MSR_64BIT)) if ((regs->msr & (MSR_IR|MSR_PR|MSR_64BIT)) == (MSR_IR|MSR_64BIT))
...@@ -426,6 +425,8 @@ static int xmon_core(struct pt_regs *regs, int fromipi) ...@@ -426,6 +425,8 @@ static int xmon_core(struct pt_regs *regs, int fromipi)
release_output_lock(); release_output_lock();
} }
cpumask_set_cpu(cpu, &cpus_in_xmon);
waiting: waiting:
secondary = 1; secondary = 1;
while (secondary && !xmon_gate) { while (secondary && !xmon_gate) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment