Blame SOURCES/0008-dmidecode-Adding-bios-revision-to-s-option.patch

65c10b
From 9bce894b7730013120d4c71f964d4cf8402cb956 Mon Sep 17 00:00:00 2001
65c10b
From: Erwan Velu <e.velu@criteo.com>
65c10b
Date: Mon, 7 Oct 2019 15:36:47 +0200
65c10b
Subject: [PATCH 08/11] dmidecode: Adding bios-revision to -s option
65c10b
65c10b
Some hardware vendors like HPe use the Version field to store the
65c10b
bios generation like (U30, U32, A40, ...).  If you want to get the
65c10b
"release" version of this bios generation, the bios revision field
65c10b
must be considered.
65c10b
65c10b
A typical output of this kind of server looks like :
65c10b
65c10b
          BIOS Information
65c10b
                  Vendor: HPE
65c10b
                  Version: A40
65c10b
                  Release Date: 07/20/2019
65c10b
                  [...]
65c10b
                  BIOS Revision: 2.0
65c10b
                  Firmware Revision: 1.45
65c10b
65c10b
Add a "bios-revision" entry into the '-s' option.
65c10b
65c10b
A typical usage of this feature looks like :
65c10b
65c10b
	[root@host] dmidecode -s bios-revision
65c10b
	2.0
65c10b
65c10b
Signed-off-by: Erwan Velu <e.velu@criteo.com>
65c10b
Signed-off-by: Jean Delvare <jdelvare@suse.de>
65c10b
---
65c10b
 dmidecode.c     | 4 ++++
65c10b
 dmiopt.c        | 1 +
65c10b
 man/dmidecode.8 | 1 +
65c10b
 3 files changed, 6 insertions(+)
65c10b
65c10b
diff --git a/dmidecode.c b/dmidecode.c
65c10b
index cff7d3f1941d..e4cd6d8b8b20 100644
65c10b
--- a/dmidecode.c
65c10b
+++ b/dmidecode.c
65c10b
@@ -5082,6 +5082,10 @@ static void dmi_table_string(const struct dmi_header *h, const u8 *data, u16 ver
65c10b
 	key = (opt.string->type << 8) | offset;
65c10b
 	switch (key)
65c10b
 	{
65c10b
+		case 0x015: /* -s bios-revision */
65c10b
+			if (data[key - 1] != 0xFF && data[key] != 0xFF)
65c10b
+				printf("%u.%u\n", data[key - 1], data[key]);
65c10b
+			break;
65c10b
 		case 0x108:
65c10b
 			dmi_system_uuid(data + offset, ver);
65c10b
 			printf("\n");
65c10b
diff --git a/dmiopt.c b/dmiopt.c
65c10b
index 2f285f34a96b..9ceb35a104bd 100644
65c10b
--- a/dmiopt.c
65c10b
+++ b/dmiopt.c
65c10b
@@ -151,6 +151,7 @@ static const struct string_keyword opt_string_keyword[] = {
65c10b
 	{ "bios-vendor", 0, 0x04 },
65c10b
 	{ "bios-version", 0, 0x05 },
65c10b
 	{ "bios-release-date", 0, 0x08 },
65c10b
+	{ "bios-revision", 0, 0x15 },		/* 0x14 and 0x15 */
65c10b
 	{ "system-manufacturer", 1, 0x04 },
65c10b
 	{ "system-product-name", 1, 0x05 },
65c10b
 	{ "system-version", 1, 0x06 },
65c10b
diff --git a/man/dmidecode.8 b/man/dmidecode.8
65c10b
index 1f6529d99e91..c3f87132d14c 100644
65c10b
--- a/man/dmidecode.8
65c10b
+++ b/man/dmidecode.8
65c10b
@@ -74,6 +74,7 @@ displayed. Meta-data and handle references are hidden.
65c10b
 Only display the value of the \s-1DMI\s0 string identified by \fBKEYWORD\fR.
65c10b
 \fBKEYWORD\fR must be a keyword from the following list: \fBbios-vendor\fR,
65c10b
 \fBbios-version\fR, \fBbios-release-date\fR,
65c10b
+\fBbios-revision\fR,
65c10b
 \fBsystem-manufacturer\fR, \fBsystem-product-name\fR,
65c10b
 \fBsystem-version\fR, \fBsystem-serial-number\fR,
65c10b
 \fBsystem-uuid\fR, \fBsystem-family\fR,
65c10b
-- 
65c10b
2.17.1
65c10b