diff mbox

powerpc/mpc85xx: Fix EDAC address capture

Message ID 1430989491-23817-1-git-send-email-Wenbin.Song@freescale.com (mailing list archive)
State Superseded
Headers show

Commit Message

songwenbin May 7, 2015, 9:04 a.m. UTC
From: York Sun <yorksun@freescale.com>

Extend err_addr to cover 64 bits for DDR errors.

Signed-off-by: York Sun <yorksun@freescale.com>
Change-Id: Idb112c4a106416a9cad9933c415e6f62de5cf07b
Reviewed-on: http://git.am.freescale.net:8181/553
Tested-by: Schmitt Richard-B43082 <B43082@freescale.com>
Reviewed-by: Fleming Andrew-AFLEMING <AFLEMING@freescale.com>
Tested-by: Fleming Andrew-AFLEMING <AFLEMING@freescale.com>
Signed-off-by: songwenbin <wenbin.song@freescale.com>
---
 drivers/edac/mpc85xx_edac.c | 10 +++++++---
 drivers/edac/mpc85xx_edac.h |  1 +
 2 files changed, 8 insertions(+), 3 deletions(-)

Comments

Scott Wood May 8, 2015, 9:34 p.m. UTC | #1
On Thu, 2015-05-07 at 17:04 +0800, songwenbin wrote:
> From: York Sun <yorksun@freescale.com>
> 
> Extend err_addr to cover 64 bits for DDR errors.
> 
> Signed-off-by: York Sun <yorksun@freescale.com>
> Change-Id: Idb112c4a106416a9cad9933c415e6f62de5cf07b
> Reviewed-on: http://git.am.freescale.net:8181/553
> Tested-by: Schmitt Richard-B43082 <B43082@freescale.com>
> Reviewed-by: Fleming Andrew-AFLEMING <AFLEMING@freescale.com>
> Tested-by: Fleming Andrew-AFLEMING <AFLEMING@freescale.com>
> Signed-off-by: songwenbin <wenbin.song@freescale.com>

Please don't include gerrit stuff in upstream submissions.  Definitely
don't include "Reviewed-by/Tested-by" from gerrit as those approvals are
from an entirely different context.

-Scott
Scott Wood May 8, 2015, 9:35 p.m. UTC | #2
On Fri, 2015-05-08 at 16:34 -0500, Scott Wood wrote:
> On Thu, 2015-05-07 at 17:04 +0800, songwenbin wrote:
> > From: York Sun <yorksun@freescale.com>
> > 
> > Extend err_addr to cover 64 bits for DDR errors.
> > 
> > Signed-off-by: York Sun <yorksun@freescale.com>
> > Change-Id: Idb112c4a106416a9cad9933c415e6f62de5cf07b
> > Reviewed-on: http://git.am.freescale.net:8181/553
> > Tested-by: Schmitt Richard-B43082 <B43082@freescale.com>
> > Reviewed-by: Fleming Andrew-AFLEMING <AFLEMING@freescale.com>
> > Tested-by: Fleming Andrew-AFLEMING <AFLEMING@freescale.com>
> > Signed-off-by: songwenbin <wenbin.song@freescale.com>
> 
> Please don't include gerrit stuff in upstream submissions.  Definitely
> don't include "Reviewed-by/Tested-by" from gerrit as those approvals are
> from an entirely different context.

Never mind, I see you fixed that in v2. :-)

That said, these patches should go via the edac tree (see MAINTAINERS).

-Scott
diff mbox

Patch

diff --git a/drivers/edac/mpc85xx_edac.c b/drivers/edac/mpc85xx_edac.c
index 68bf234..23ef8e9 100644
--- a/drivers/edac/mpc85xx_edac.c
+++ b/drivers/edac/mpc85xx_edac.c
@@ -811,6 +811,8 @@  static void sbe_ecc_decode(u32 cap_high, u32 cap_low, u32 cap_ecc,
 	}
 }
 
+#define make64(high, low) (((u64)(high) << 32) | (low))
+
 static void mpc85xx_mc_check(struct mem_ctl_info *mci)
 {
 	struct mpc85xx_mc_pdata *pdata = mci->pvt_info;
@@ -818,7 +820,7 @@  static void mpc85xx_mc_check(struct mem_ctl_info *mci)
 	u32 bus_width;
 	u32 err_detect;
 	u32 syndrome;
-	u32 err_addr;
+	u64 err_addr;
 	u32 pfn;
 	int row_index;
 	u32 cap_high;
@@ -849,7 +851,9 @@  static void mpc85xx_mc_check(struct mem_ctl_info *mci)
 	else
 		syndrome &= 0xffff;
 
-	err_addr = in_be32(pdata->mc_vbase + MPC85XX_MC_CAPTURE_ADDRESS);
+	err_addr = make64(
+		in_be32(pdata->mc_vbase + MPC85XX_MC_CAPTURE_EXT_ADDRESS),
+		in_be32(pdata->mc_vbase + MPC85XX_MC_CAPTURE_ADDRESS));
 	pfn = err_addr >> PAGE_SHIFT;
 
 	for (row_index = 0; row_index < mci->nr_csrows; row_index++) {
@@ -886,7 +890,7 @@  static void mpc85xx_mc_check(struct mem_ctl_info *mci)
 	mpc85xx_mc_printk(mci, KERN_ERR,
 			"Captured Data / ECC:\t%#8.8x_%08x / %#2.2x\n",
 			cap_high, cap_low, syndrome);
-	mpc85xx_mc_printk(mci, KERN_ERR, "Err addr: %#8.8x\n", err_addr);
+	mpc85xx_mc_printk(mci, KERN_ERR, "Err addr: %#8.8llx\n", err_addr);
 	mpc85xx_mc_printk(mci, KERN_ERR, "PFN: %#8.8x\n", pfn);
 
 	/* we are out of range */
diff --git a/drivers/edac/mpc85xx_edac.h b/drivers/edac/mpc85xx_edac.h
index 4498baf..9352e88 100644
--- a/drivers/edac/mpc85xx_edac.h
+++ b/drivers/edac/mpc85xx_edac.h
@@ -43,6 +43,7 @@ 
 #define MPC85XX_MC_ERR_INT_EN		0x0e48
 #define MPC85XX_MC_CAPTURE_ATRIBUTES	0x0e4c
 #define MPC85XX_MC_CAPTURE_ADDRESS	0x0e50
+#define MPC85XX_MC_CAPTURE_EXT_ADDRESS	0x0e54
 #define MPC85XX_MC_ERR_SBE		0x0e58
 
 #define DSC_MEM_EN	0x80000000