amd64_edac updates for 2.6.36-rc3
Subsystems (2)
From: Borislav Petkov <[email protected]>
Hi Linus,
please pull the following MCE reporting fixes below.
I'm sending the patches too, for reference, the respective commit messages contain more info.
Thanks.
The following changes since commit 76be97c1fc945db08aae1f1b746012662d643e97:
Linux 2.6.36-rc2 (2010-08-22 17:43:29 -0700)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp.git for-linus
Borislav Petkov (2):
MCE, AMD: Limit MCE decoding to current families for now
amd64_edac: Do not report error overflow as a separate error
drivers/edac/amd64_edac.c | 10 ---------- drivers/edac/edac_mce_amd.c | 17 ++++++++++------- 2 files changed, 10 insertions(+), 17 deletions(-)
PATCH 1/2 MCE, AMD: Limit MCE decoding to current families for now
From: Borislav Petkov <[email protected]>
Limit MCE error decoding to current and older families only (K8-F11h).
--- drivers/edac/edac_mce_amd.c | 12 ++++++++---- 1 files changed, 8 insertions(+), 4 deletions(-)
drivers/edac/edac_mce_amd.c +8 -4
@@ -426,11 +426,15 @@ static struct notifier_block amd_mce_dec_nb = {static int __init mce_amd_init (void ) {/* -* We can decode MCEs for Opteron and later CPUs: +* We can decode MCEs for K8, F10h and F11h CPUs: */ -if ((boot_cpu_data.x86_vendor ==X86_VENDOR_AMD ) && - (boot_cpu_data.x86 >=0xf )) -atomic_notifier_chain_register (&x86_mce_decoder_chain, &amd_mce_dec_nb); +if (boot_cpu_data.x86_vendor !=X86_VENDOR_AMD ) +return 0 ; + +if (boot_cpu_data.x86 <0xf || boot_cpu_data.x86 >0x11 ) +return 0 ; + +atomic_notifier_chain_register (&x86_mce_decoder_chain, &amd_mce_dec_nb);return 0 ; }
Signature · 1 line
1.7.1
PATCH 2/2 amd64_edac: Do not report error overflow as a separate error
In reply to Borislav PetkovFrom: Borislav Petkov <[email protected]>
When the Overflow MCi_STATUS bit is set, EDAC reports the lost error with a "no information available" message which often puzzles users parsing the dmesg. This doesn't make much sense since this error has been lost anyway so no need for reporting it separately. Thus, report the overflow bit setting in the MCE dump instead. While at it, remove reporting of MiscV and ErrorEnable (en) which are superfluous.
Now it looks like this:
[ 1501.650024] MC4_STATUS: Corrected error, other errors lost: yes, CPU context corrupt: no, CECC Error [ 1501.666887] Northbridge Error, node 2
--- drivers/edac/amd64_edac.c | 10 ---------- drivers/edac/edac_mce_amd.c | 5 ++--- 2 files changed, 2 insertions(+), 13 deletions(-)
drivers/edac/amd64_edac.c +0 -10
@@ -2071,16 +2071,6 @@ static inline void __amd64_decode_bus_error(struct mem_ctl_info *mci,amd64_handle_ce (mci, info); else if (ecc_type == 1) amd64_handle_ue(mci, info); - -/* -* If main error is CE then overflow must be CE. If main error is UE -* then overflow is unknown. We'll call the overflow a CE - if -* panic_on_ue is set then we're already panic'ed and won't arrive -* here. Else, then apparently someone doesn't think that UE's are -* catastrophic. -*/ -if (info->nbsh &K8_NBSH_OVERFLOW ) -edac_mc_handle_ce_no_info (mci,EDAC_MOD_STR " Error Overflow" ); }void amd64_decode_bus_error (int node_id,struct err_regs *regs)
drivers/edac/edac_mce_amd.c +2 -3
@@ -365,11 +365,10 @@ static int amd_decode_mce(struct notifier_block *nb, unsigned long val,pr_emerg ("MC%d_STATUS: " , m->bank); -pr_cont ("%sorrected error, report: %s, MiscV: %svalid, " +pr_cont ("%sorrected error, other errors lost: %s, " "CPU context corrupt: %s" , ((m->status &MCI_STATUS_UC ) ?"Unc" :"C" ), - ((m->status &MCI_STATUS_EN ) ?"yes" :"no" ), - ((m->status &MCI_STATUS_MISCV ) ?"" :"in" ), + ((m->status &MCI_STATUS_OVER ) ?"yes" :"no" ), ((m->status &MCI_STATUS_PCC ) ?"yes" :"no" ));/* do the two bits[14:13] together */
Signature · 1 line
1.7.1