Commit 41aace4f authored by Roland Dreier's avatar Roland Dreier Committed by Linus Torvalds

[PATCH] ppc32: Dump error status for both PLB segments on 440SP

The PowerPC 440SP SoC has two Processor Local Bus (PLB) segments (a
high-throughput segment and a low-latency segment).  Fix our PLB register
definitions to cope with this, and add code to dump the status of both
segments when a machine check occurs.
Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
Cc: Matt Porter <mporter@kernel.crashing.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent fcc188e7
...@@ -214,9 +214,20 @@ void __init ibm44x_platform_init(unsigned long r3, unsigned long r4, unsigned lo ...@@ -214,9 +214,20 @@ void __init ibm44x_platform_init(unsigned long r3, unsigned long r4, unsigned lo
/* Called from machine_check_exception */ /* Called from machine_check_exception */
void platform_machine_check(struct pt_regs *regs) void platform_machine_check(struct pt_regs *regs)
{ {
#ifdef CONFIG_440SP
printk("PLB0: BEAR=0x%08x%08x ACR= 0x%08x BESR= 0x%08x%08x\n",
mfdcr(DCRN_PLB0_BEARH), mfdcr(DCRN_PLB0_BEARL),
mfdcr(DCRN_PLB0_ACR), mfdcr(DCRN_PLB0_BESRH),
mfdcr(DCRN_PLB0_BESRL));
printk("PLB1: BEAR=0x%08x%08x ACR= 0x%08x BESR= 0x%08x%08x\n",
mfdcr(DCRN_PLB1_BEARH), mfdcr(DCRN_PLB1_BEARL),
mfdcr(DCRN_PLB1_ACR), mfdcr(DCRN_PLB1_BESRH),
mfdcr(DCRN_PLB1_BESRL));
#else
printk("PLB0: BEAR=0x%08x%08x ACR= 0x%08x BESR= 0x%08x\n", printk("PLB0: BEAR=0x%08x%08x ACR= 0x%08x BESR= 0x%08x\n",
mfdcr(DCRN_PLB0_BEARH), mfdcr(DCRN_PLB0_BEARL), mfdcr(DCRN_PLB0_BEARH), mfdcr(DCRN_PLB0_BEARL),
mfdcr(DCRN_PLB0_ACR), mfdcr(DCRN_PLB0_BESR)); mfdcr(DCRN_PLB0_ACR), mfdcr(DCRN_PLB0_BESR));
#endif
printk("POB0: BEAR=0x%08x%08x BESR0=0x%08x BESR1=0x%08x\n", printk("POB0: BEAR=0x%08x%08x BESR0=0x%08x BESR1=0x%08x\n",
mfdcr(DCRN_POB0_BEARH), mfdcr(DCRN_POB0_BEARL), mfdcr(DCRN_POB0_BEARH), mfdcr(DCRN_POB0_BEARL),
mfdcr(DCRN_POB0_BESR0), mfdcr(DCRN_POB0_BESR1)); mfdcr(DCRN_POB0_BESR0), mfdcr(DCRN_POB0_BESR1));
......
...@@ -302,6 +302,23 @@ ...@@ -302,6 +302,23 @@
#define MALOBISR_CH0 0x80000000 /* EOB channel 1 bit */ #define MALOBISR_CH0 0x80000000 /* EOB channel 1 bit */
#define MALOBISR_CH2 0x40000000 /* EOB channel 2 bit */ #define MALOBISR_CH2 0x40000000 /* EOB channel 2 bit */
#if defined(CONFIG_440SP)
/* 440SP PLB Arbiter DCRs */
#define DCRN_PLB_REVID 0x080 /* PLB Revision ID */
#define DCRN_PLB_CCR 0x088 /* PLB Crossbar Control */
#define DCRN_PLB0_ACR 0x081 /* PLB Arbiter Control */
#define DCRN_PLB0_BESRL 0x082 /* PLB Error Status */
#define DCRN_PLB0_BESRH 0x083 /* PLB Error Status */
#define DCRN_PLB0_BEARL 0x084 /* PLB Error Address Low */
#define DCRN_PLB0_BEARH 0x085 /* PLB Error Address High */
#define DCRN_PLB1_ACR 0x089 /* PLB Arbiter Control */
#define DCRN_PLB1_BESRL 0x08a /* PLB Error Status */
#define DCRN_PLB1_BESRH 0x08b /* PLB Error Status */
#define DCRN_PLB1_BEARL 0x08c /* PLB Error Address Low */
#define DCRN_PLB1_BEARH 0x08d /* PLB Error Address High */
#else
/* 440GP/GX PLB Arbiter DCRs */ /* 440GP/GX PLB Arbiter DCRs */
#define DCRN_PLB0_REVID 0x082 /* PLB Arbiter Revision ID */ #define DCRN_PLB0_REVID 0x082 /* PLB Arbiter Revision ID */
#define DCRN_PLB0_ACR 0x083 /* PLB Arbiter Control */ #define DCRN_PLB0_ACR 0x083 /* PLB Arbiter Control */
...@@ -309,6 +326,7 @@ ...@@ -309,6 +326,7 @@
#define DCRN_PLB0_BEARL 0x086 /* PLB Error Address Low */ #define DCRN_PLB0_BEARL 0x086 /* PLB Error Address Low */
#define DCRN_PLB0_BEAR DCRN_PLB0_BEARL /* 40x compatibility */ #define DCRN_PLB0_BEAR DCRN_PLB0_BEARL /* 40x compatibility */
#define DCRN_PLB0_BEARH 0x087 /* PLB Error Address High */ #define DCRN_PLB0_BEARH 0x087 /* PLB Error Address High */
#endif
/* 440GP/GX PLB to OPB bridge DCRs */ /* 440GP/GX PLB to OPB bridge DCRs */
#define DCRN_POB0_BESR0 0x090 #define DCRN_POB0_BESR0 0x090
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment