]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/commitdiff
EDAC, amd64: Don't force-enable ECC checking on newer systems
authorYazen Ghannam <Yazen.Ghannam@amd.com>
Tue, 22 Nov 2016 21:40:16 +0000 (15:40 -0600)
committerBorislav Petkov <bp@suse.de>
Wed, 23 Nov 2016 18:04:11 +0000 (19:04 +0100)
It's not recommended for the OS to try and force-enable ECC checking.
This is considered a firmware task since it includes memory training,
etc, so don't change ECC settings on Fam17h or newer systems and inform
the user.

Signed-off-by: Yazen Ghannam <Yazen.Ghannam@amd.com>
Cc: Aravind Gopalakrishnan <aravindksg.lkml@gmail.com>
Cc: linux-edac <linux-edac@vger.kernel.org>
Link: http://lkml.kernel.org/r/1479850816-1595-1-git-send-email-Yazen.Ghannam@amd.com
[ Put the "forcing" message in an else branch. ]
Signed-off-by: Borislav Petkov <bp@suse.de>
drivers/edac/amd64_edac.c

index dd45cff02388367b097d7cbd77e7066c7ab580f6..ca1d63aa4e59da7c6a66d1ec06775ead3ce92122 100644 (file)
@@ -2629,7 +2629,6 @@ static void restore_ecc_error_reporting(struct ecc_settings *s, u16 nid,
 {
        u32 value, mask = 0x3;          /* UECC/CECC enable */
 
-
        if (!s->nbctl_valid)
                return;
 
@@ -2895,7 +2894,11 @@ static int probe_one_instance(unsigned int nid)
                if (!ecc_enable_override)
                        goto err_enable;
 
-               amd64_warn("Forcing ECC on!\n");
+               if (boot_cpu_data.x86 >= 0x17) {
+                       amd64_warn("Forcing ECC on is not recommended on newer systems. Please enable ECC in BIOS.");
+                       goto err_enable;
+               } else
+                       amd64_warn("Forcing ECC on!\n");
 
                if (!enable_ecc_error_reporting(s, nid, F3))
                        goto err_enable;
@@ -2904,7 +2907,9 @@ static int probe_one_instance(unsigned int nid)
        ret = init_one_instance(nid);
        if (ret < 0) {
                amd64_err("Error probing instance: %d\n", nid);
-               restore_ecc_error_reporting(s, nid, F3);
+
+               if (boot_cpu_data.x86 < 0x17)
+                       restore_ecc_error_reporting(s, nid, F3);
        }
 
        return ret;