Blame SOURCES/0003-dmidecode-Use-the-most-appropriate-unit-for-cache-si.patch

e0d5ce
From c43afb47fcbadabe2655fe7863a1e2ea9af1446c Mon Sep 17 00:00:00 2001
e0d5ce
From: Jean Delvare <jdelvare@suse.de>
e0d5ce
Date: Tue, 15 Jan 2019 12:59:00 +0100
e0d5ce
Subject: [PATCH 3/5] dmidecode: Use the most appropriate unit for cache size
e0d5ce
e0d5ce
As newer CPUs have larger and larger cache, using kB to represent the
e0d5ce
cache size is getting less convenient. Reuse the same function we have
e0d5ce
for system memory size so that large units will be used as
e0d5ce
appropriate. For example, a cache size reported as "20 MB" looks nicer
e0d5ce
than as "20480 kB".
e0d5ce
e0d5ce
Signed-off-by: Jean Delvare <jdelvare@suse.de>
e0d5ce
Acked-by: Neil Horman <nhorman@tuxdriver.com>
e0d5ce
Signed-off-by: Lianbo Jiang <lijiang@redhat.com>
e0d5ce
---
e0d5ce
 dmidecode.c | 17 +++++++++++------
e0d5ce
 1 file changed, 11 insertions(+), 6 deletions(-)
e0d5ce
e0d5ce
diff --git a/dmidecode.c b/dmidecode.c
e0d5ce
index 7ac6438a23db..162e0c50ba26 100644
e0d5ce
--- a/dmidecode.c
e0d5ce
+++ b/dmidecode.c
e0d5ce
@@ -1560,17 +1560,22 @@ static void dmi_cache_size(u16 code)
e0d5ce
 
e0d5ce
 static void dmi_cache_size_2(u32 code)
e0d5ce
 {
e0d5ce
+	u64 size;
e0d5ce
+
e0d5ce
 	if (code & 0x80000000)
e0d5ce
 	{
e0d5ce
 		code &= 0x7FFFFFFFLU;
e0d5ce
-		/* Use a more convenient unit for large cache size */
e0d5ce
-		if (code >= 0x8000)
e0d5ce
-			printf(" %u MB", code >> 4);
e0d5ce
-		else
e0d5ce
-			printf(" %u kB", code << 6);
e0d5ce
+		size.l = code << 6;
e0d5ce
+		size.h = code >> 26;
e0d5ce
 	}
e0d5ce
 	else
e0d5ce
-		printf(" %u kB", code);
e0d5ce
+	{
e0d5ce
+		size.l = code;
e0d5ce
+		size.h = 0;
e0d5ce
+	}
e0d5ce
+
e0d5ce
+	/* Use a more convenient unit for large cache size */
e0d5ce
+	dmi_print_memory_size(size, 1);
e0d5ce
 }
e0d5ce
 
e0d5ce
 static void dmi_cache_types(u16 code, const char *sep)
e0d5ce
-- 
e0d5ce
2.17.1
e0d5ce