Blame SOURCES/0001-Fix-getting-size-of-memory-banks-32GiB.patch

2c6040
From 74e23540335254b8fca6a81cc891c52d96937d40 Mon Sep 17 00:00:00 2001
2c6040
From: Lyonel Vincent <lyonel@ezix.org>
2c6040
Date: Thu, 29 Apr 2021 16:40:37 +0200
2c6040
Subject: [PATCH] Fix getting size of memory banks <32GiB
2c6040
2c6040
PR65 on Github (thanks to Z.Bitter)
2c6040
2c6040
Due to a regression introduced by 8ff1efb, no size was recorded for memory banks <32GiB in size on systems with an SMBIOS version of 2.7 or later. On these systems the Type 17 size field from SMBIOS was only recorded if the extended size field was used.
2c6040
2c6040
Modify the code to use the regular size field whenever it is valid (not 0xFFFF) and not set to 0x7FFF on versions >2.7 (indicating the extended size field is in use).
2c6040
---
2c6040
 src/core/dmi.cc | 15 +++++++--------
2c6040
 1 file changed, 7 insertions(+), 8 deletions(-)
2c6040
2c6040
diff --git a/src/core/dmi.cc b/src/core/dmi.cc
2c6040
index fe6ad39..96b6506 100644
2c6040
--- a/src/core/dmi.cc
2c6040
+++ b/src/core/dmi.cc
2c6040
@@ -1567,15 +1567,14 @@ int dmiversionrev)
2c6040
 
2c6040
 // size
2c6040
           u = data[0x0D] << 8 | data[0x0C];
2c6040
-          if ((dmiversionmaj > 2)
2c6040
-            || ((dmiversionmaj == 2) && (dmiversionmin >= 7))) {
2c6040
-             if(u == 0x7FFF) {
2c6040
-                unsigned long long extendsize = (data[0x1F] << 24) | (data[0x1E] << 16) | (data[0x1D] << 8) | data[0x1C];
2c6040
-                extendsize &= 0x7FFFFFFFUL;
2c6040
-                size = extendsize * 1024ULL * 1024ULL;
2c6040
-             }
2c6040
+          if (((dmiversionmaj > 2)
2c6040
+            || ((dmiversionmaj == 2) && (dmiversionmin >= 7)))
2c6040
+            && u == 0x7FFF) {
2c6040
+              unsigned long long extendsize = (data[0x1F] << 24) | (data[0x1E] << 16) | (data[0x1D] << 8) | data[0x1C];
2c6040
+              extendsize &= 0x7FFFFFFFUL;
2c6040
+              size = extendsize * 1024ULL * 1024ULL;
2c6040
           }
2c6040
-	  else
2c6040
+          else
2c6040
           if (u != 0xFFFF)
2c6040
             size = (1024ULL * (u & 0x7FFF) * ((u & 0x8000) ? 1 : 1024ULL));
2c6040
           description += string(dmi_memory_device_form_factor(data[0x0E]));
2c6040
-- 
2c6040
2.29.2
2c6040