diff options
| -rw-r--r-- | arch/powerpc/include/asm/reg_booke.h | 3 | ||||
| -rw-r--r-- | arch/powerpc/kernel/traps.c | 9 |
2 files changed, 11 insertions, 1 deletions
diff --git a/arch/powerpc/include/asm/reg_booke.h b/arch/powerpc/include/asm/reg_booke.h index 9ec0b39f9ddc..28cdbd9f399c 100644 --- a/arch/powerpc/include/asm/reg_booke.h +++ b/arch/powerpc/include/asm/reg_booke.h | |||
| @@ -548,6 +548,9 @@ | |||
| 548 | #define L1CSR1_ICFI 0x00000002 /* Instr Cache Flash Invalidate */ | 548 | #define L1CSR1_ICFI 0x00000002 /* Instr Cache Flash Invalidate */ |
| 549 | #define L1CSR1_ICE 0x00000001 /* Instr Cache Enable */ | 549 | #define L1CSR1_ICE 0x00000001 /* Instr Cache Enable */ |
| 550 | 550 | ||
| 551 | /* Bit definitions for L1CSR2. */ | ||
| 552 | #define L1CSR2_DCWS 0x40000000 /* Data Cache write shadow */ | ||
| 553 | |||
| 551 | /* Bit definitions for L2CSR0. */ | 554 | /* Bit definitions for L2CSR0. */ |
| 552 | #define L2CSR0_L2E 0x80000000 /* L2 Cache Enable */ | 555 | #define L2CSR0_L2E 0x80000000 /* L2 Cache Enable */ |
| 553 | #define L2CSR0_L2PE 0x40000000 /* L2 Cache Parity/ECC Enable */ | 556 | #define L2CSR0_L2PE 0x40000000 /* L2 Cache Parity/ECC Enable */ |
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c index f19d9777d3c1..4e5908264d1a 100644 --- a/arch/powerpc/kernel/traps.c +++ b/arch/powerpc/kernel/traps.c | |||
| @@ -457,7 +457,14 @@ int machine_check_e500mc(struct pt_regs *regs) | |||
| 457 | 457 | ||
| 458 | if (reason & MCSR_DCPERR_MC) { | 458 | if (reason & MCSR_DCPERR_MC) { |
| 459 | printk("Data Cache Parity Error\n"); | 459 | printk("Data Cache Parity Error\n"); |
| 460 | recoverable = 0; | 460 | |
| 461 | /* | ||
| 462 | * In write shadow mode we auto-recover from the error, but it | ||
| 463 | * may still get logged and cause a machine check. We should | ||
| 464 | * only treat the non-write shadow case as non-recoverable. | ||
| 465 | */ | ||
| 466 | if (!(mfspr(SPRN_L1CSR2) & L1CSR2_DCWS)) | ||
| 467 | recoverable = 0; | ||
| 461 | } | 468 | } |
| 462 | 469 | ||
| 463 | if (reason & MCSR_L2MMU_MHIT) { | 470 | if (reason & MCSR_L2MMU_MHIT) { |
