Re: [PATCH 1/2] powerpc: fix graceful debugger recovery
From: Nicholas Piggin <npiggin@gmail.com>
Date: 2016-11-10 04:25:09
On Thu, 10 Nov 2016 12:35:59 +1100 Michael Ellerman [off-list ref] wrote:
Nicholas Piggin [off-list ref] writes:quoted
When exiting xmon with 'x' (exit and recover), oops_begin bails out immediately, but die then calls __die() and oops_end(), which cause a lot of bad things to happen.In fact oops_begin() returns 1, which oops_end() then passes directly to raw_local_irq_restore() as flags. On 64-bit that actually works because arch_local_irq_restore() takes just "en" (enable), not real flags. But on 32-bit it's supposed to be the MSR value. So that's impressively broken.
Yeah, I guess most of the time you either go to debugger with sysrq, or in case of a crash don't try to graceful recover. When sending debug NMIs down via system reset it becomes a problem!
quoted
If the debugger was attached then went to graceful recovery, exit from die() immediately.Right. Crucially it doesn't change anything in terms of the actual logic of oops_begin(), ie. previously oops_begin() did nothing prior to calling debugger(), and after this patch that remains the same (which you did mention above but just spelling it out for myself).
Right. Thanks, Nick