[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dmidecode] [PATCH] dmidecode: Handle memory module extended speed field
From: |
Jean Delvare |
Subject: |
[dmidecode] [PATCH] dmidecode: Handle memory module extended speed fields |
Date: |
Thu, 15 Oct 2020 10:37:51 +0200 |
These fields were added by SMBIOS version 3.3.0. and although there
is no hardware fast enough to need them yet, we can support them
already. I missed them before because their addition is not mentioned
in the specification change log.
Signed-off-by: Jean Delvare <jdelvare@suse.de>
---
dmidecode.c | 26 ++++++++++++++++++++------
1 file changed, 20 insertions(+), 6 deletions(-)
--- dmidecode.orig/dmidecode.c 2020-10-14 14:32:53.766930219 +0200
+++ dmidecode/dmidecode.c 2020-10-15 10:27:06.039595370 +0200
@@ -2684,12 +2684,22 @@ static void dmi_memory_device_type_detai
}
}
-static void dmi_memory_device_speed(const char *attr, u16 code)
+static void dmi_memory_device_speed(const char *attr, u16 code1, u32 code2)
{
- if (code == 0)
- pr_attr(attr, "Unknown");
+ if (code1 == 0xFFFF)
+ {
+ if (code2 == 0)
+ pr_attr(attr, "Unknown");
+ else
+ pr_attr(attr, "%lu MT/s", code2);
+ }
else
- pr_attr(attr, "%u MT/s", code);
+ {
+ if (code1 == 0)
+ pr_attr(attr, "Unknown");
+ else
+ pr_attr(attr, "%u MT/s", code1);
+ }
}
static void dmi_memory_technology(u8 code)
@@ -4451,7 +4461,9 @@ static void dmi_decode(const struct dmi_
dmi_memory_device_type(data[0x12]));
dmi_memory_device_type_detail(WORD(data + 0x13));
if (h->length < 0x17) break;
- dmi_memory_device_speed("Speed", WORD(data + 0x15));
+ dmi_memory_device_speed("Speed", WORD(data + 0x15),
+ h->length >= 0x5C ?
+ DWORD(data + 0x54) : 0);
if (h->length < 0x1B) break;
pr_attr("Manufacturer", "%s",
dmi_string(h, data[0x17]));
@@ -4468,7 +4480,9 @@ static void dmi_decode(const struct dmi_
pr_attr("Rank", "%u", data[0x1B] & 0x0F);
if (h->length < 0x22) break;
dmi_memory_device_speed("Configured Memory Speed",
- WORD(data + 0x20));
+ WORD(data + 0x20),
+ h->length >= 0x5C ?
+ DWORD(data + 0x58) : 0);
if (h->length < 0x28) break;
dmi_memory_voltage_value("Minimum Voltage",
WORD(data + 0x22));
--
Jean Delvare
SUSE L3 Support
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [dmidecode] [PATCH] dmidecode: Handle memory module extended speed fields,
Jean Delvare <=