Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

EDAC, mpc85xx: Extend error address to 64 bit

Extend err_addr to cover 64 bits for DDR errors.

Signed-off-by: York Sun <yorksun@freescale.com>
Acked-by: Johannes Thumshirn <morbidrsa@gmail.com>
Cc: Mingkai.hu@freescale.com
Link: http://lkml.kernel.org/r/1431425022-44766-2-git-send-email-Wenbin.Song@freescale.com
Signed-off-by: songwenbin <wenbin.song@freescale.com>
Signed-off-by: Borislav Petkov <bp@suse.de>

authored by

York Sun and committed by
Borislav Petkov
2ce39109 74210267

+8 -3
+7 -3
drivers/edac/mpc85xx_edac.c
··· 811 811 } 812 812 } 813 813 814 + #define make64(high, low) (((u64)(high) << 32) | (low)) 815 + 814 816 static void mpc85xx_mc_check(struct mem_ctl_info *mci) 815 817 { 816 818 struct mpc85xx_mc_pdata *pdata = mci->pvt_info; ··· 820 818 u32 bus_width; 821 819 u32 err_detect; 822 820 u32 syndrome; 823 - u32 err_addr; 821 + u64 err_addr; 824 822 u32 pfn; 825 823 int row_index; 826 824 u32 cap_high; ··· 851 849 else 852 850 syndrome &= 0xffff; 853 851 854 - err_addr = in_be32(pdata->mc_vbase + MPC85XX_MC_CAPTURE_ADDRESS); 852 + err_addr = make64( 853 + in_be32(pdata->mc_vbase + MPC85XX_MC_CAPTURE_EXT_ADDRESS), 854 + in_be32(pdata->mc_vbase + MPC85XX_MC_CAPTURE_ADDRESS)); 855 855 pfn = err_addr >> PAGE_SHIFT; 856 856 857 857 for (row_index = 0; row_index < mci->nr_csrows; row_index++) { ··· 890 886 mpc85xx_mc_printk(mci, KERN_ERR, 891 887 "Captured Data / ECC:\t%#8.8x_%08x / %#2.2x\n", 892 888 cap_high, cap_low, syndrome); 893 - mpc85xx_mc_printk(mci, KERN_ERR, "Err addr: %#8.8x\n", err_addr); 889 + mpc85xx_mc_printk(mci, KERN_ERR, "Err addr: %#8.8llx\n", err_addr); 894 890 mpc85xx_mc_printk(mci, KERN_ERR, "PFN: %#8.8x\n", pfn); 895 891 896 892 /* we are out of range */
+1
drivers/edac/mpc85xx_edac.h
··· 43 43 #define MPC85XX_MC_ERR_INT_EN 0x0e48 44 44 #define MPC85XX_MC_CAPTURE_ATRIBUTES 0x0e4c 45 45 #define MPC85XX_MC_CAPTURE_ADDRESS 0x0e50 46 + #define MPC85XX_MC_CAPTURE_EXT_ADDRESS 0x0e54 46 47 #define MPC85XX_MC_ERR_SBE 0x0e58 47 48 48 49 #define DSC_MEM_EN 0x80000000