Commit 2ce39109 authored by York Sun's avatar York Sun Committed by Borislav Petkov

EDAC, mpc85xx: Extend error address to 64 bit

Extend err_addr to cover 64 bits for DDR errors.
Signed-off-by: default avatarYork Sun <yorksun@freescale.com>
Acked-by: default avatarJohannes Thumshirn <morbidrsa@gmail.com>
Cc: Mingkai.hu@freescale.com
Link: http://lkml.kernel.org/r/1431425022-44766-2-git-send-email-Wenbin.Song@freescale.comSigned-off-by: default avatarsongwenbin <wenbin.song@freescale.com>
Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
parent 74210267
...@@ -811,6 +811,8 @@ static void sbe_ecc_decode(u32 cap_high, u32 cap_low, u32 cap_ecc, ...@@ -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) static void mpc85xx_mc_check(struct mem_ctl_info *mci)
{ {
struct mpc85xx_mc_pdata *pdata = mci->pvt_info; struct mpc85xx_mc_pdata *pdata = mci->pvt_info;
...@@ -818,7 +820,7 @@ static void mpc85xx_mc_check(struct mem_ctl_info *mci) ...@@ -818,7 +820,7 @@ static void mpc85xx_mc_check(struct mem_ctl_info *mci)
u32 bus_width; u32 bus_width;
u32 err_detect; u32 err_detect;
u32 syndrome; u32 syndrome;
u32 err_addr; u64 err_addr;
u32 pfn; u32 pfn;
int row_index; int row_index;
u32 cap_high; u32 cap_high;
...@@ -849,7 +851,9 @@ static void mpc85xx_mc_check(struct mem_ctl_info *mci) ...@@ -849,7 +851,9 @@ static void mpc85xx_mc_check(struct mem_ctl_info *mci)
else else
syndrome &= 0xffff; 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; pfn = err_addr >> PAGE_SHIFT;
for (row_index = 0; row_index < mci->nr_csrows; row_index++) { 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) ...@@ -886,7 +890,7 @@ static void mpc85xx_mc_check(struct mem_ctl_info *mci)
mpc85xx_mc_printk(mci, KERN_ERR, mpc85xx_mc_printk(mci, KERN_ERR,
"Captured Data / ECC:\t%#8.8x_%08x / %#2.2x\n", "Captured Data / ECC:\t%#8.8x_%08x / %#2.2x\n",
cap_high, cap_low, syndrome); 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); mpc85xx_mc_printk(mci, KERN_ERR, "PFN: %#8.8x\n", pfn);
/* we are out of range */ /* we are out of range */
......
...@@ -43,6 +43,7 @@ ...@@ -43,6 +43,7 @@
#define MPC85XX_MC_ERR_INT_EN 0x0e48 #define MPC85XX_MC_ERR_INT_EN 0x0e48
#define MPC85XX_MC_CAPTURE_ATRIBUTES 0x0e4c #define MPC85XX_MC_CAPTURE_ATRIBUTES 0x0e4c
#define MPC85XX_MC_CAPTURE_ADDRESS 0x0e50 #define MPC85XX_MC_CAPTURE_ADDRESS 0x0e50
#define MPC85XX_MC_CAPTURE_EXT_ADDRESS 0x0e54
#define MPC85XX_MC_ERR_SBE 0x0e58 #define MPC85XX_MC_ERR_SBE 0x0e58
#define DSC_MEM_EN 0x80000000 #define DSC_MEM_EN 0x80000000
......
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