powerpc/64s: Dedicated system reset interrupt stack
The system reset interrupt is used for crash/debug situations, so it is desirable to have as little impact on the normal state of the system as possible. Currently it uses the current kernel stack to process the exception. This stores into the stack which may be involved with the crash. The stack pointer may be corrupted, or it may have overflowed. Avoid or minimise these problems by creating a dedicated NMI stack for the system reset interrupt to use. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:

committed by
Michael Ellerman

parent
c4f3b52ce7
commit
b1ee8a3de5
@@ -563,6 +563,19 @@ END_FTR_SECTION_IFSET(CPU_FTR_CTRL)
|
||||
bl hdlr; \
|
||||
b ret
|
||||
|
||||
/*
|
||||
* Exception where stack is already set in r1, r1 is saved in r10, and it
|
||||
* continues rather than returns.
|
||||
*/
|
||||
#define EXCEPTION_COMMON_NORET_STACK(area, trap, label, hdlr, additions) \
|
||||
EXCEPTION_PROLOG_COMMON_1(); \
|
||||
EXCEPTION_PROLOG_COMMON_2(area); \
|
||||
EXCEPTION_PROLOG_COMMON_3(trap); \
|
||||
/* Volatile regs are potentially clobbered here */ \
|
||||
additions; \
|
||||
addi r3,r1,STACK_FRAME_OVERHEAD; \
|
||||
bl hdlr
|
||||
|
||||
#define STD_EXCEPTION_COMMON(trap, label, hdlr) \
|
||||
EXCEPTION_COMMON(PACA_EXGEN, trap, label, hdlr, \
|
||||
ret_from_except, ADD_NVGPRS;ADD_RECONCILE)
|
||||
|
Reference in New Issue
Block a user