Commit cab4d277 authored by Borislav Petkov's avatar Borislav Petkov

amd64_edac: Do not falsely trigger kerneloops

An unfortunate "WARNING" in the message amd64_edac dumps when the system
doesn't support DRAM ECC or ECC checking is not enabled in the BIOS
used to trigger kerneloops which qualified the message as an OOPS thus
misleading the users. See, e.g.

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/422536
http://bugzilla.kernel.org/show_bug.cgi?id=15238

Downgrade the message level to KERN_NOTICE and fix the formulation.

Cc: stable@kernel.org # .32.x
Signed-off-by: default avatarBorislav Petkov <borislav.petkov@amd.com>
Acked-by: default avatarDoug Thompson <dougthompson@xmission.com>
parent e28cab42
...@@ -2658,10 +2658,11 @@ static void amd64_restore_ecc_error_reporting(struct amd64_pvt *pvt) ...@@ -2658,10 +2658,11 @@ static void amd64_restore_ecc_error_reporting(struct amd64_pvt *pvt)
* the memory system completely. A command line option allows to force-enable * the memory system completely. A command line option allows to force-enable
* hardware ECC later in amd64_enable_ecc_error_reporting(). * hardware ECC later in amd64_enable_ecc_error_reporting().
*/ */
static const char *ecc_warning = static const char *ecc_msg =
"WARNING: ECC is disabled by BIOS. Module will NOT be loaded.\n" "ECC disabled in the BIOS or no ECC capability, module will not load.\n"
" Either Enable ECC in the BIOS, or set 'ecc_enable_override'.\n" " Either enable ECC checking or force module loading by setting "
" Also, use of the override can cause unknown side effects.\n"; "'ecc_enable_override'.\n"
" (Note that use of the override may cause unknown side effects.)\n";
static int amd64_check_ecc_enabled(struct amd64_pvt *pvt) static int amd64_check_ecc_enabled(struct amd64_pvt *pvt)
{ {
...@@ -2673,7 +2674,7 @@ static int amd64_check_ecc_enabled(struct amd64_pvt *pvt) ...@@ -2673,7 +2674,7 @@ static int amd64_check_ecc_enabled(struct amd64_pvt *pvt)
ecc_enabled = !!(value & K8_NBCFG_ECC_ENABLE); ecc_enabled = !!(value & K8_NBCFG_ECC_ENABLE);
if (!ecc_enabled) if (!ecc_enabled)
amd64_printk(KERN_WARNING, "This node reports that Memory ECC " amd64_printk(KERN_NOTICE, "This node reports that Memory ECC "
"is currently disabled, set F3x%x[22] (%s).\n", "is currently disabled, set F3x%x[22] (%s).\n",
K8_NBCFG, pci_name(pvt->misc_f3_ctl)); K8_NBCFG, pci_name(pvt->misc_f3_ctl));
else else
...@@ -2681,13 +2682,13 @@ static int amd64_check_ecc_enabled(struct amd64_pvt *pvt) ...@@ -2681,13 +2682,13 @@ static int amd64_check_ecc_enabled(struct amd64_pvt *pvt)
nb_mce_en = amd64_nb_mce_bank_enabled_on_node(pvt->mc_node_id); nb_mce_en = amd64_nb_mce_bank_enabled_on_node(pvt->mc_node_id);
if (!nb_mce_en) if (!nb_mce_en)
amd64_printk(KERN_WARNING, "NB MCE bank disabled, set MSR " amd64_printk(KERN_NOTICE, "NB MCE bank disabled, set MSR "
"0x%08x[4] on node %d to enable.\n", "0x%08x[4] on node %d to enable.\n",
MSR_IA32_MCG_CTL, pvt->mc_node_id); MSR_IA32_MCG_CTL, pvt->mc_node_id);
if (!ecc_enabled || !nb_mce_en) { if (!ecc_enabled || !nb_mce_en) {
if (!ecc_enable_override) { if (!ecc_enable_override) {
amd64_printk(KERN_WARNING, "%s", ecc_warning); amd64_printk(KERN_NOTICE, "%s", ecc_msg);
return -ENODEV; return -ENODEV;
} }
ecc_enable_override = 0; ecc_enable_override = 0;
......
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