dmidecode/0018-dmidecode-Decode-system-slot-base-bus-width-and-peer.patch
Petr Šabata 021502ebf0 RHEL 9.0.0 Alpha bootstrap
The content of this branch was automatically imported from Fedora ELN
with the following as its source:
https://src.fedoraproject.org/rpms/dmidecode#04cccb08c8cb4b2143d0067d74688fc5189bfc79
2020-10-14 23:42:23 +02:00

51 lines
1.6 KiB
Diff

From 62bce59fed14c1cf57ce6cb7b208a9fccda3f4a5 Mon Sep 17 00:00:00 2001
From: Jean Delvare <jdelvare@suse.de>
Date: Wed, 23 Oct 2019 12:44:20 +0200
Subject: [PATCH 18/18] dmidecode: Decode system slot base bus width and peers
SMBIOS version 3.2.0 added extra fields are the end of structure type
9. Decode these extra fields (base data bus width and peers) when
present.
Signed-off-by: Jean Delvare <jdelvare@suse.de>
---
dmidecode.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/dmidecode.c b/dmidecode.c
index 8e53535..8ebd862 100644
--- a/dmidecode.c
+++ b/dmidecode.c
@@ -2033,6 +2033,16 @@ static void dmi_slot_segment_bus_func(u16 code1, u8 code2, u8 code3, const char
prefix, code1, code2, code3 >> 3, code3 & 0x7);
}
+static void dmi_slot_peers(u8 n, const u8 *data, const char *prefix)
+{
+ int i;
+
+ for (i = 1; i <= n; i++, data += 5)
+ printf("%sPeer Device %d: %04x:%02x:%02x.%x (Width %u)\n",
+ prefix, i, WORD(data), data[2], data[3] >> 3,
+ data[3] & 0x07, data[4]);
+}
+
/*
* 7.11 On Board Devices Information (Type 10)
*/
@@ -4213,6 +4223,11 @@ static void dmi_decode(const struct dmi_header *h, u16 ver)
dmi_slot_characteristics(data[0x0B], data[0x0C], "\t\t");
if (h->length < 0x11) break;
dmi_slot_segment_bus_func(WORD(data + 0x0D), data[0x0F], data[0x10], "\t");
+ if (h->length < 0x13) break;
+ printf("\tData Bus Width: %u\n", data[0x11]);
+ printf("\tPeer Devices: %u\n", data[0x12]);
+ if (h->length - 0x13 >= data[0x12] * 5)
+ dmi_slot_peers(data[0x12], data + 0x13, "\t");
break;
case 10: /* 7.11 On Board Devices Information */
--
2.24.0