mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-30 21:46:31 +00:00
powerpc: Mark system reset as an NMI with nmi_enter/exit()
System reset is a non-maskable interrupt from Linux's point of view (occurs under local_irq_disable()), so it should use nmi_enter/exit. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
b1ee8a3de5
commit
2b4f3ac564
@ -279,6 +279,14 @@ void _exception(int signr, struct pt_regs *regs, int code, unsigned long addr)
|
||||
|
||||
void system_reset_exception(struct pt_regs *regs)
|
||||
{
|
||||
/*
|
||||
* Avoid crashes in case of nested NMI exceptions. Recoverability
|
||||
* is determined by RI and in_nmi
|
||||
*/
|
||||
bool nested = in_nmi();
|
||||
if (!nested)
|
||||
nmi_enter();
|
||||
|
||||
/* See if any machine dependent calls */
|
||||
if (ppc_md.system_reset_exception) {
|
||||
if (ppc_md.system_reset_exception(regs))
|
||||
@ -297,6 +305,9 @@ out:
|
||||
if (!(regs->msr & MSR_RI))
|
||||
panic("Unrecoverable System Reset");
|
||||
|
||||
if (!nested)
|
||||
nmi_exit();
|
||||
|
||||
/* What should we do here? We could issue a shutdown or hard reset. */
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user