summaryrefslogtreecommitdiff
path: root/dmidecode.c
diff options
context:
space:
mode:
Diffstat (limited to 'dmidecode.c')
-rw-r--r--dmidecode.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/dmidecode.c b/dmidecode.c
index cf32821..cfdd2cb 100644
--- a/dmidecode.c
+++ b/dmidecode.c
@@ -2695,7 +2695,7 @@ static void dmi_memory_device_speed(const char *attr, u16 code)
pr_attr(attr, "%u MT/s", code);
}
-static void dmi_memory_technology(u8 code)
+static void dmi_memory_technology(u8 code, u16 size)
{
/* 7.18.6 */
static const char * const technology[] = {
@@ -2707,7 +2707,9 @@ static void dmi_memory_technology(u8 code)
"NVDIMM-P",
"Intel Optane DC persistent memory" /* 0x07 */
};
- if (code >= 0x01 && code <= 0x07)
+ if ( size == 0)
+ pr_attr("Memory Technology", "No Module Installed");
+ else if (code >= 0x01 && code <= 0x07)
pr_attr("Memory Technology", "%s", technology[code - 0x01]);
else
pr_attr("Memory Technology", "%s", out_of_spec);
@@ -4480,7 +4482,7 @@ static void dmi_decode(const struct dmi_header *h, u16 ver)
dmi_memory_voltage_value("Configured Voltage",
WORD(data + 0x26));
if (h->length < 0x34) break;
- dmi_memory_technology(data[0x28]);
+ dmi_memory_technology(data[0x28],WORD(data + 0x0C));
dmi_memory_operating_mode_capability(WORD(data + 0x29));
pr_attr("Firmware Version", "%s",
dmi_string(h, data[0x2B]));