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: Borislav Petkov <borislav.petkov@amd.com>
Acked-by: Doug Thompson <dougthompson@xmission.com>

+8 -7
+8 -7
drivers/edac/amd64_edac.c
··· 2658 * the memory system completely. A command line option allows to force-enable 2659 * hardware ECC later in amd64_enable_ecc_error_reporting(). 2660 */ 2661 - static const char *ecc_warning = 2662 - "WARNING: ECC is disabled by BIOS. Module will NOT be loaded.\n" 2663 - " Either Enable ECC in the BIOS, or set 'ecc_enable_override'.\n" 2664 - " Also, use of the override can cause unknown side effects.\n"; 2665 2666 static int amd64_check_ecc_enabled(struct amd64_pvt *pvt) 2667 { ··· 2674 2675 ecc_enabled = !!(value & K8_NBCFG_ECC_ENABLE); 2676 if (!ecc_enabled) 2677 - amd64_printk(KERN_WARNING, "This node reports that Memory ECC " 2678 "is currently disabled, set F3x%x[22] (%s).\n", 2679 K8_NBCFG, pci_name(pvt->misc_f3_ctl)); 2680 else ··· 2682 2683 nb_mce_en = amd64_nb_mce_bank_enabled_on_node(pvt->mc_node_id); 2684 if (!nb_mce_en) 2685 - amd64_printk(KERN_WARNING, "NB MCE bank disabled, set MSR " 2686 "0x%08x[4] on node %d to enable.\n", 2687 MSR_IA32_MCG_CTL, pvt->mc_node_id); 2688 2689 if (!ecc_enabled || !nb_mce_en) { 2690 if (!ecc_enable_override) { 2691 - amd64_printk(KERN_WARNING, "%s", ecc_warning); 2692 return -ENODEV; 2693 } 2694 ecc_enable_override = 0;
··· 2658 * the memory system completely. A command line option allows to force-enable 2659 * hardware ECC later in amd64_enable_ecc_error_reporting(). 2660 */ 2661 + static const char *ecc_msg = 2662 + "ECC disabled in the BIOS or no ECC capability, module will not load.\n" 2663 + " Either enable ECC checking or force module loading by setting " 2664 + "'ecc_enable_override'.\n" 2665 + " (Note that use of the override may cause unknown side effects.)\n"; 2666 2667 static int amd64_check_ecc_enabled(struct amd64_pvt *pvt) 2668 { ··· 2673 2674 ecc_enabled = !!(value & K8_NBCFG_ECC_ENABLE); 2675 if (!ecc_enabled) 2676 + amd64_printk(KERN_NOTICE, "This node reports that Memory ECC " 2677 "is currently disabled, set F3x%x[22] (%s).\n", 2678 K8_NBCFG, pci_name(pvt->misc_f3_ctl)); 2679 else ··· 2681 2682 nb_mce_en = amd64_nb_mce_bank_enabled_on_node(pvt->mc_node_id); 2683 if (!nb_mce_en) 2684 + amd64_printk(KERN_NOTICE, "NB MCE bank disabled, set MSR " 2685 "0x%08x[4] on node %d to enable.\n", 2686 MSR_IA32_MCG_CTL, pvt->mc_node_id); 2687 2688 if (!ecc_enabled || !nb_mce_en) { 2689 if (!ecc_enable_override) { 2690 + amd64_printk(KERN_NOTICE, "%s", ecc_msg); 2691 return -ENODEV; 2692 } 2693 ecc_enable_override = 0;