Skip to content

Commit

Permalink
Update dmidecode from 3.3 to 3.5
Browse files Browse the repository at this point in the history
This commit updates dmidecode from 3.3 to 3.5, removes old patches, and
adds recommended patches for 3.5.
  • Loading branch information
mhashizume committed Apr 17, 2024
1 parent 7465d4c commit b013c17
Show file tree
Hide file tree
Showing 6 changed files with 150 additions and 65 deletions.
9 changes: 5 additions & 4 deletions configs/components/dmidecode.rb
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
component 'dmidecode' do |pkg, settings, platform|
pkg.version '3.3'
pkg.md5sum 'afca949fd71a23dd39c4a3c9cd946dc0'
pkg.version '3.5'
pkg.sha256sum '79d76735ee8e25196e2a722964cf9683f5a09581503537884b256b01389cc073'

pkg.apply_patch 'resources/patches/dmidecode/1117390c.patch'
pkg.apply_patch 'resources/patches/dmidecode/11e134e5.patch'
pkg.apply_patch 'resources/patches/dmidecode/80de3762.patch'
pkg.apply_patch 'resources/patches/dmidecode/c76ddda0.patch'
pkg.apply_patch 'resources/patches/dmidecode/de392ff0.patch'

pkg.apply_patch 'resources/patches/dmidecode/dmidecode-install-to-bin.patch'
pkg.url "http://download.savannah.gnu.org/releases/dmidecode/dmidecode-#{pkg.get_version}.tar.xz"
Expand Down
28 changes: 0 additions & 28 deletions resources/patches/dmidecode/1117390c.patch

This file was deleted.

33 changes: 0 additions & 33 deletions resources/patches/dmidecode/11e134e5.patch

This file was deleted.

44 changes: 44 additions & 0 deletions resources/patches/dmidecode/80de3762.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
From 80de376231e903d2cbea95e51ffea31860502159 Mon Sep 17 00:00:00 2001
From: Jerry Hoemann <[email protected]>
Date: Mon, 3 Apr 2023 10:15:12 +0200
Subject: dmioem: HPE OEM Record 237 Firmware change

HPE OEM record type 237 offset 0x09 field was changed from a single
byte STRING to a two byte WORD representing date.

Fixes: cdab638dabb7 ("dmioem: Decode HPE OEM Record 237")
Signed-off-by: Jerry Hoemann <[email protected]>
Signed-off-by: Jean Delvare <[email protected]>
---
dmioem.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/dmioem.c b/dmioem.c
index dc4b857..2746e15 100644
--- a/dmioem.c
+++ b/dmioem.c
@@ -1094,7 +1094,8 @@ static int dmi_decode_hp(const struct dmi_header *h)
* 0x06 | Manufacture|STRING | DIMM Manufacturer
* 0x07 | Part Number|STRING | DIMM Manufacturer's Part Number
* 0x08 | Serial Num |STRING | DIMM Vendor Serial Number
- * 0x09 | Spare Part |STRING | DIMM Spare Part Number
+ * 0x09 | Man Date | BYTE | DIMM Manufacture Date (YEAR) in BCD
+ * 0x0A | Man Date | BYTE | DIMM Manufacture Date (WEEK) in BCD
*/
if (gen < G9) return 0;
pr_handle_name("%s DIMM Vendor Information", company);
@@ -1105,8 +1106,9 @@ static int dmi_decode_hp(const struct dmi_header *h)
pr_attr("DIMM Manufacturer Part Number", "%s", dmi_string(h, data[0x07]));
if (h->length < 0x09) break;
pr_attr("DIMM Vendor Serial Number", "%s", dmi_string(h, data[0x08]));
- if (h->length < 0x0A) break;
- pr_attr("DIMM Spare Part Number", "%s", dmi_string(h, data[0x09]));
+ if (h->length < 0x0B) break;
+ if (WORD(data + 0x09))
+ pr_attr("DIMM Manufacture Date", "20%02x-W%02x", data[0x09], data[0x0A]);
break;

case 238:
--
cgit v1.1

64 changes: 64 additions & 0 deletions resources/patches/dmidecode/c76ddda0.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
From c76ddda0ba0aa99a55945e3290095c2ec493c892 Mon Sep 17 00:00:00 2001
From: Jean Delvare <[email protected]>
Date: Wed, 26 Apr 2023 15:44:27 +0200
Subject: Consistently use read_file() when reading from a dump file

Use read_file() instead of mem_chunk() to read the entry point from a
dump file. This is faster, and consistent with how we then read the
actual DMI table from that dump file.

This made no functional difference so far, which is why it went
unnoticed for years. But now that a file type check was added to the
mem_chunk() function, we must stop using it to read from regular
files.

This will again allow root to use the --from-dump option.

Signed-off-by: Jean Delvare <[email protected]>
Tested-by: Jerry Hoemann <[email protected]>
---
dmidecode.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/dmidecode.c b/dmidecode.c
index 54f59c1..52ddbf1 100644
--- a/dmidecode.c
+++ b/dmidecode.c
@@ -6025,17 +6025,25 @@ int main(int argc, char * const argv[])
pr_comment("dmidecode %s", VERSION);

/* Read from dump if so instructed */
+ size = 0x20;
if (opt.flags & FLAG_FROM_DUMP)
{
if (!(opt.flags & FLAG_QUIET))
pr_info("Reading SMBIOS/DMI data from file %s.",
opt.dumpfile);
- if ((buf = mem_chunk(0, 0x20, opt.dumpfile)) == NULL)
+ if ((buf = read_file(0, &size, opt.dumpfile)) == NULL)
{
ret = 1;
goto exit_free;
}

+ /* Truncated entry point can't be processed */
+ if (size < 0x20)
+ {
+ ret = 1;
+ goto done;
+ }
+
if (memcmp(buf, "_SM3_", 5) == 0)
{
if (smbios3_decode(buf, opt.dumpfile, 0))
@@ -6059,7 +6067,6 @@ int main(int argc, char * const argv[])
* contain one of several types of entry points, so read enough for
* the largest one, then determine what type it contains.
*/
- size = 0x20;
if (!(opt.flags & FLAG_NO_SYSFS)
&& (buf = read_file(0, &size, SYS_ENTRY_FILE)) != NULL)
{
--
cgit v1.1

37 changes: 37 additions & 0 deletions resources/patches/dmidecode/de392ff0.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
From de392ff0599f9737aad5656f13356cb14005eb22 Mon Sep 17 00:00:00 2001
From: Jean Delvare <[email protected]>
Date: Fri, 29 Mar 2024 09:27:58 +0100
Subject: dmidecode: Fix flag mask in dmi_slot_characteristics

When slot characteristics flags were added, the mask to test if at
least one flag is set wasn't updated. This could result in slot
characteristics being listed as "None" for slots with only new flags
set.

Fix this by dropping the mask for the second slot characteristics
byte completely. It seems safe to assume that all the remaining bits
of this byte will be used to future characteristic flags.

Signed-off-by: Jean Delvare <[email protected]>
Fixes: f7d236dd5c4d ("dmidecode: Remaining support for SMBIOS 3.2.0")
Fixes: 4304d3aca801 ("Add new slot characteristics2 from SMBIOS spec 3.4.0")
---
dmidecode.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/dmidecode.c b/dmidecode.c
index d79f294..78def4c 100644
--- a/dmidecode.c
+++ b/dmidecode.c
@@ -2255,7 +2255,7 @@ static void dmi_slot_characteristics(const char *attr, u8 code1, u8 code2)

if (code1 & (1 << 0))
pr_attr(attr, "Unknown");
- else if ((code1 & 0xFE) == 0 && (code2 & 0x07) == 0)
+ else if ((code1 & 0xFE) == 0 && code2 == 0)
pr_attr(attr, "None");
else
{
--
cgit v1.1

0 comments on commit b013c17

Please sign in to comment.