Blame SOURCES/0011-dmidecode-Decode-system-slot-base-bus-width-and-peer.patch

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