EDAC, ghes: Add DDR4 and NVDIMM memory types
authorToshi Kani <toshi.kani@hpe.com>
Wed, 9 May 2018 22:20:30 +0000 (16:20 -0600)
committerBorislav Petkov <bp@suse.de>
Sat, 12 May 2018 12:16:49 +0000 (14:16 +0200)
The ghes_edac driver obtains memory type from SMBIOS type 17, but it
does not recognize DDR4 and NVDIMM types.

Add support of DDR4 and NVDIMM types. NVDIMM type is denoted by memory
type DDR3/4 and non-volatile.

Reported-by: Robert Elliott <elliott@hpe.com>
Signed-off-by: Toshi Kani <toshi.kani@hpe.com>
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: linux-edac <linux-edac@vger.kernel.org>
Link: http://lkml.kernel.org/r/20180509222030.9299-1-toshi.kani@hpe.com
Signed-off-by: Borislav Petkov <bp@suse.de>
drivers/edac/ghes_edac.c

index b9bea77b3de872b0f23a2ed7bbf698dc3d2e4246..cb8f2704ffb0d7a0a1cace77d8425431707b0e14 100644 (file)
@@ -123,11 +123,21 @@ static void ghes_edac_dmidecode(const struct dmi_header *dh, void *arg)
                        dimm->mtype = MEM_FB_DDR2;
                        break;
                case 0x18:
-                       if (entry->type_detail & 1 << 13)
+                       if (entry->type_detail & 1 << 12)
+                               dimm->mtype = MEM_NVDIMM;
+                       else if (entry->type_detail & 1 << 13)
                                dimm->mtype = MEM_RDDR3;
                        else
                                dimm->mtype = MEM_DDR3;
                        break;
+               case 0x1a:
+                       if (entry->type_detail & 1 << 12)
+                               dimm->mtype = MEM_NVDIMM;
+                       else if (entry->type_detail & 1 << 13)
+                               dimm->mtype = MEM_RDDR4;
+                       else
+                               dimm->mtype = MEM_DDR4;
+                       break;
                default:
                        if (entry->type_detail & 1 << 6)
                                dimm->mtype = MEM_RMBS;