diff options
author | Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> | 2013-04-28 05:37:26 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2013-04-30 01:59:42 -0400 |
commit | ce54152f429ed5e6ad83e5e9f61825b5a795dd1e (patch) | |
tree | 511310b26dd12bc4572ecb71a3b97ab392a55b6c | |
parent | 4b8f63d92e30ffd33bd77e028918919be2d926e6 (diff) |
powerpc: Save DAR and DSISR in pt_regs on MCE
We were not saving DAR and DSISR on MCE. Save then and also print the values
along with exception details in xmon.
Acked-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-rw-r--r-- | arch/powerpc/kernel/exceptions-64s.S | 9 | ||||
-rw-r--r-- | arch/powerpc/xmon/xmon.c | 2 |
2 files changed, 10 insertions, 1 deletions
diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S index 80d56f094a0d..e6eba1bf61ad 100644 --- a/arch/powerpc/kernel/exceptions-64s.S +++ b/arch/powerpc/kernel/exceptions-64s.S | |||
@@ -693,9 +693,18 @@ slb_miss_user_pseries: | |||
693 | .align 7 | 693 | .align 7 |
694 | .globl machine_check_common | 694 | .globl machine_check_common |
695 | machine_check_common: | 695 | machine_check_common: |
696 | |||
697 | mfspr r10,SPRN_DAR | ||
698 | std r10,PACA_EXGEN+EX_DAR(r13) | ||
699 | mfspr r10,SPRN_DSISR | ||
700 | stw r10,PACA_EXGEN+EX_DSISR(r13) | ||
696 | EXCEPTION_PROLOG_COMMON(0x200, PACA_EXMC) | 701 | EXCEPTION_PROLOG_COMMON(0x200, PACA_EXMC) |
697 | FINISH_NAP | 702 | FINISH_NAP |
698 | DISABLE_INTS | 703 | DISABLE_INTS |
704 | ld r3,PACA_EXGEN+EX_DAR(r13) | ||
705 | lwz r4,PACA_EXGEN+EX_DSISR(r13) | ||
706 | std r3,_DAR(r1) | ||
707 | std r4,_DSISR(r1) | ||
699 | bl .save_nvgprs | 708 | bl .save_nvgprs |
700 | addi r3,r1,STACK_FRAME_OVERHEAD | 709 | addi r3,r1,STACK_FRAME_OVERHEAD |
701 | bl .machine_check_exception | 710 | bl .machine_check_exception |
diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c index 13f85defabed..51e237c4648f 100644 --- a/arch/powerpc/xmon/xmon.c +++ b/arch/powerpc/xmon/xmon.c | |||
@@ -1430,7 +1430,7 @@ static void excprint(struct pt_regs *fp) | |||
1430 | printf(" sp: %lx\n", fp->gpr[1]); | 1430 | printf(" sp: %lx\n", fp->gpr[1]); |
1431 | printf(" msr: %lx\n", fp->msr); | 1431 | printf(" msr: %lx\n", fp->msr); |
1432 | 1432 | ||
1433 | if (trap == 0x300 || trap == 0x380 || trap == 0x600) { | 1433 | if (trap == 0x300 || trap == 0x380 || trap == 0x600 || trap == 0x200) { |
1434 | printf(" dar: %lx\n", fp->dar); | 1434 | printf(" dar: %lx\n", fp->dar); |
1435 | if (trap != 0x380) | 1435 | if (trap != 0x380) |
1436 | printf(" dsisr: %lx\n", fp->dsisr); | 1436 | printf(" dsisr: %lx\n", fp->dsisr); |