From abe04420cfae24bc26df25681ddff7e9c54c49d3 Mon Sep 17 00:00:00 2001 From: overweight <5324761+overweight@user.noreply.gitee.com> Date: Mon, 30 Sep 2019 10:37:00 -0400 Subject: [PATCH] Package init --- bugfix-compat_uuid.patch | 70 +++++++++++++++++ dmidecode-3.2.tar.xz | Bin 0 -> 54440 bytes ...gical-non-volatile-device-to-the-mem.patch | 38 +++++++++ ...Don-t-use-memcpy-on-dev-mem-on-arm64.patch | 72 ++++++++++++++++++ ...de-Fix-Redfish-Hostname-print-length.patch | 31 ++++++++ ...e-most-appropriate-unit-for-cache-si.patch | 53 +++++++++++++ dmidecode.spec | 58 ++++++++++++++ 7 files changed, 322 insertions(+) create mode 100644 bugfix-compat_uuid.patch create mode 100644 dmidecode-3.2.tar.xz create mode 100644 dmidecode-Add-Logical-non-volatile-device-to-the-mem.patch create mode 100644 dmidecode-Don-t-use-memcpy-on-dev-mem-on-arm64.patch create mode 100644 dmidecode-Fix-Redfish-Hostname-print-length.patch create mode 100644 dmidecode-Use-the-most-appropriate-unit-for-cache-si.patch create mode 100644 dmidecode.spec diff --git a/bugfix-compat_uuid.patch b/bugfix-compat_uuid.patch new file mode 100644 index 0000000..5a1a42f --- /dev/null +++ b/bugfix-compat_uuid.patch @@ -0,0 +1,70 @@ +From be8977d7768279a4c9b66bcc5937fab04f12cb39 Mon Sep 17 00:00:00 2001 +From: guoxiaoqi +Date: Fri, 25 Jan 2019 17:59:09 +0000 +Subject: [PATCH] bugfix-compat_uuid + +Signed-off-by: guoxiaoqi +--- + dmidecode.c | 2 +- + dmiopt.c | 5 +++++ + dmiopt.h | 1 + + 3 files changed, 7 insertions(+), 1 deletion(-) + +diff --git a/dmidecode.c b/dmidecode.c +index a3e9d6c..35c19c2 100644 +--- a/dmidecode.c ++++ b/dmidecode.c +@@ -447,7 +447,7 @@ static void dmi_system_uuid(const u8 *p, u16 ver) + * network byte order, so I am reluctant to apply the byte-swapping + * for older versions. + */ +- if (ver >= 0x0206) ++ if (ver >= 0x0206 && !(opt.flags & FLAG_COMPAT_UUID)) + printf("%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x", + p[3], p[2], p[1], p[0], p[5], p[4], p[7], p[6], + p[8], p[9], p[10], p[11], p[12], p[13], p[14], p[15]); +diff --git a/dmiopt.c b/dmiopt.c +index 2f285f3..dede0f9 100644 +--- a/dmiopt.c ++++ b/dmiopt.c +@@ -276,6 +276,7 @@ int parse_command_line(int argc, char * const argv[]) + { "oem-string", required_argument, NULL, 'O' }, + { "no-sysfs", no_argument, NULL, 'S' }, + { "version", no_argument, NULL, 'V' }, ++ { "compat-uuid", no_argument, NULL, 'C' }, + { NULL, 0, NULL, 0 } + }; + +@@ -328,6 +329,9 @@ int parse_command_line(int argc, char * const argv[]) + case 'V': + opt.flags |= FLAG_VERSION; + break; ++ case 'C': ++ opt.flags |= FLAG_COMPAT_UUID; ++ break; + case '?': + switch (optopt) + { +@@ -375,6 +379,7 @@ void print_help(void) + " --dump-bin FILE Dump the DMI data to a binary file\n" + " --from-dump FILE Read the DMI data from a binary file\n" + " --no-sysfs Do not attempt to read DMI data from sysfs files\n" ++ " --compat-uuid use compat uuid format with 2.6 SMBIOS specification\n" + " --oem-string N Only display the value of the given OEM string\n" + " -V, --version Display the version and exit\n"; + +diff --git a/dmiopt.h b/dmiopt.h +index 2374637..4ada9ac 100644 +--- a/dmiopt.h ++++ b/dmiopt.h +@@ -46,6 +46,7 @@ extern struct opt opt; + #define FLAG_DUMP_BIN (1 << 4) + #define FLAG_FROM_DUMP (1 << 5) + #define FLAG_NO_SYSFS (1 << 6) ++#define FLAG_COMPAT_UUID (1 << 10) + + int parse_command_line(int argc, char * const argv[]); + void print_help(void); +-- +1.8.3.1 + diff --git a/dmidecode-3.2.tar.xz b/dmidecode-3.2.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..0164e2717795f5134e2937cfbd1fff33f1a66533 GIT binary patch literal 54440 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%0Dac0qx5&8VzTsAeu2mR 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�e?IAvTO#Hc5)fP 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 V@DM{f$icD1XZr#G00004Sz6mXYmoo| literal 0 HcmV?d00001 diff --git a/dmidecode-Add-Logical-non-volatile-device-to-the-mem.patch b/dmidecode-Add-Logical-non-volatile-device-to-the-mem.patch new file mode 100644 index 0000000..9a995f5 --- /dev/null +++ b/dmidecode-Add-Logical-non-volatile-device-to-the-mem.patch @@ -0,0 +1,38 @@ +From 74dfb854b8199ddb0a27e89296fa565f4706cb9d Mon Sep 17 00:00:00 2001 +From: Jean Delvare +Date: Wed, 16 Jan 2019 09:04:55 +0100 +Subject: [PATCH 5/8] dmidecode: Add "Logical non-volatile device" to the + memory device types + +When adding support for non-volative memory, we forgot to add +"Logical non-volatile device" to the list of memory types. This +causes NVDIMM modules to show up as . Fix the problem +by adding the missing enumerated value. + +Signed-off-by: Jean Delvare +Reviewed-by: Jerry Hoemann +--- + dmidecode.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/dmidecode.c b/dmidecode.c +index 903ef35..91c6f62 100644 +--- a/dmidecode.c ++++ b/dmidecode.c +@@ -2471,10 +2471,11 @@ static const char *dmi_memory_device_type(u8 code) + "LPDDR", + "LPDDR2", + "LPDDR3", +- "LPDDR4" /* 0x1E */ ++ "LPDDR4", ++ "Logical non-volatile device" /* 0x1F */ + }; + +- if (code >= 0x01 && code <= 0x1E) ++ if (code >= 0x01 && code <= 0x1F) + return type[code - 0x01]; + return out_of_spec; + } +-- +1.8.3.1 + diff --git a/dmidecode-Don-t-use-memcpy-on-dev-mem-on-arm64.patch b/dmidecode-Don-t-use-memcpy-on-dev-mem-on-arm64.patch new file mode 100644 index 0000000..685eba2 --- /dev/null +++ b/dmidecode-Don-t-use-memcpy-on-dev-mem-on-arm64.patch @@ -0,0 +1,72 @@ +From 82497fa02d60757c2cfa645cf89a79abb1435273 Mon Sep 17 00:00:00 2001 +From: Jean Delvare +Date: Fri, 16 Nov 2018 11:18:25 +0100 +Subject: [PATCH 2/8] dmidecode: Don't use memcpy on /dev/mem on arm64 + +On arm64, calling memcpy on /dev/mem will cause a bus error if the +start and the end of the buffer are not aligned on a 64-bit boundary. +Using option --no-sysfs triggers this. + +Use a slow manual byte-by-byte copy in that case, to prevent the bus +error. This is only a fallback path (at least on Linux) and not +performance-critical anyway, as it is a one-time operation and DMI +tables are usually not too large. + +This fixes bug #55026: +https://savannah.nongnu.org/bugs/index.php?55026 + +Signed-off-by: Jean Delvare +--- + config.h | 5 +++++ + util.c | 14 +++++++++++++- + 2 files changed, 18 insertions(+), 1 deletion(-) + +diff --git a/config.h b/config.h +index e39091f..4237355 100644 +--- a/config.h ++++ b/config.h +@@ -26,4 +26,9 @@ + #define ALIGNMENT_WORKAROUND + #endif + ++/* Avoid unaligned memcpy on /dev/mem */ ++#ifdef __aarch64__ ++#define USE_SLOW_MEMCPY ++#endif ++ + #endif +diff --git a/util.c b/util.c +index eeffdae..04aaadd 100644 +--- a/util.c ++++ b/util.c +@@ -155,6 +155,18 @@ void *read_file(off_t base, size_t *max_len, const char *filename) + return p; + } + ++static void safe_memcpy(void *dest, const void *src, size_t n) ++{ ++#ifdef USE_SLOW_MEMCPY ++ size_t i; ++ ++ for (i = 0; i < n; i++) ++ *((u8 *)dest + i) = *((const u8 *)src + i); ++#else ++ memcpy(dest, src, n); ++#endif ++} ++ + /* + * Copy a physical memory chunk into a memory buffer. + * This function allocates memory. +@@ -214,7 +226,7 @@ void *mem_chunk(off_t base, size_t len, const char *devmem) + if (mmp == MAP_FAILED) + goto try_read; + +- memcpy(p, (u8 *)mmp + mmoffset, len); ++ safe_memcpy(p, (u8 *)mmp + mmoffset, len); + + if (munmap(mmp, mmoffset + len) == -1) + { +-- +1.8.3.1 + diff --git a/dmidecode-Fix-Redfish-Hostname-print-length.patch b/dmidecode-Fix-Redfish-Hostname-print-length.patch new file mode 100644 index 0000000..b7915fd --- /dev/null +++ b/dmidecode-Fix-Redfish-Hostname-print-length.patch @@ -0,0 +1,31 @@ +From fde47bb227b8fa817c88d7e10a8eb771c46de1df Mon Sep 17 00:00:00 2001 +From: Charles Rose +Date: Mon, 22 Oct 2018 09:48:02 +0200 +Subject: [PATCH 1/8] dmidecode: Fix Redfish Hostname print length + +Redfish Hostname prints beyond hlen characters. Fix it. + +Signed-off-by: Charles Rose +Fixes: 78539b06117c ("dmidecode: Parse Modern Management Controller blocks") +Acked-by: Neil Horman +Signed-off-by: Jean Delvare +--- + dmidecode.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dmidecode.c b/dmidecode.c +index a3e9d6c..7ac6438 100644 +--- a/dmidecode.c ++++ b/dmidecode.c +@@ -3609,7 +3609,7 @@ static void dmi_parse_protocol_record(const char *prefix, u8 *rec) + hname = out_of_spec; + hlen = strlen(out_of_spec); + } +- printf("%s\t\tRedfish Service Hostname: %*s\n", prefix, hlen, hname); ++ printf("%s\t\tRedfish Service Hostname: %.*s\n", prefix, hlen, hname); + } + + /* +-- +1.8.3.1 + diff --git a/dmidecode-Use-the-most-appropriate-unit-for-cache-si.patch b/dmidecode-Use-the-most-appropriate-unit-for-cache-si.patch new file mode 100644 index 0000000..0ec97a2 --- /dev/null +++ b/dmidecode-Use-the-most-appropriate-unit-for-cache-si.patch @@ -0,0 +1,53 @@ +From c43afb47fcbadabe2655fe7863a1e2ea9af1446c Mon Sep 17 00:00:00 2001 +From: Jean Delvare +Date: Tue, 15 Jan 2019 12:59:00 +0100 +Subject: [PATCH 3/8] dmidecode: Use the most appropriate unit for cache size + +As newer CPUs have larger and larger cache, using kB to represent the +cache size is getting less convenient. Reuse the same function we have +for system memory size so that large units will be used as +appropriate. For example, a cache size reported as "20 MB" looks nicer +than as "20480 kB". + +Signed-off-by: Jean Delvare +Acked-by: Neil Horman +--- + dmidecode.c | 17 +++++++++++------ + 1 file changed, 11 insertions(+), 6 deletions(-) + +diff --git a/dmidecode.c b/dmidecode.c +index 7ac6438..162e0c5 100644 +--- a/dmidecode.c ++++ b/dmidecode.c +@@ -1560,17 +1560,22 @@ static void dmi_cache_size(u16 code) + + static void dmi_cache_size_2(u32 code) + { ++ u64 size; ++ + if (code & 0x80000000) + { + code &= 0x7FFFFFFFLU; +- /* Use a more convenient unit for large cache size */ +- if (code >= 0x8000) +- printf(" %u MB", code >> 4); +- else +- printf(" %u kB", code << 6); ++ size.l = code << 6; ++ size.h = code >> 26; + } + else +- printf(" %u kB", code); ++ { ++ size.l = code; ++ size.h = 0; ++ } ++ ++ /* Use a more convenient unit for large cache size */ ++ dmi_print_memory_size(size, 1); + } + + static void dmi_cache_types(u16 code, const char *sep) +-- +1.8.3.1 + diff --git a/dmidecode.spec b/dmidecode.spec new file mode 100644 index 0000000..c3b85e6 --- /dev/null +++ b/dmidecode.spec @@ -0,0 +1,58 @@ +Name: dmidecode +Version: 3.2 +Release: 2 +Epoch: 1 +Summary: DMI data report tool + +License: GPLv2+ +URL: https://www.nongnu.org/dmidecode/ +Source0: http://download.savannah.gnu.org/releases/dmidecode/%{name}-%{version}.tar.xz + +Patch6000: bugfix-compat_uuid.patch +Patch6001: dmidecode-Fix-Redfish-Hostname-print-length.patch +Patch6002: dmidecode-Don-t-use-memcpy-on-dev-mem-on-arm64.patch +Patch6003: dmidecode-Use-the-most-appropriate-unit-for-cache-si.patch +Patch6004: dmidecode-Add-Logical-non-volatile-device-to-the-mem.patch + +BuildRequires: make gcc xz + +ExclusiveArch: %{ix86} x86_64 ia64 aarch64 amd64 + +%description +Dmidecode reports information about your system's hardware as described +in your system BIOS according to the SMBIOS/DMI standard (see a sample +output). This information typically includes system manufacturer, model +name, serial number, BIOS version, asset tag as well as a lot of other +details of varying level of interest and reliability depending on the +manufacturer. This will often include usage status for the CPU sockets, +expansion slots (e.g. AGP, PCI, ISA) and memory module slots, and the +list of I/O ports (e.g. serial, parallel, USB). + +DMI data can be used to enable or disable specific portions of kernel code +depending on the specific hardware. Thus, one use of dmidecode is for kernel +developers to detect system "signatures" and add them to the kernel source code +when needed. + +%prep +%autosetup -n %{name}-%{version} -p1 + + +%build +# biosdecode ownership vpddecode programs are only useful on x86, +# so Makefile atuo compiled target programs depend on arch. +make %{?_smp_mflags} CFLAGS="%{__global_cflags}" LDFLAGS="%{__global_ldflags}" + + +%install +%make_install prefix=%{_prefix} + + +%files +%license LICENSE +%{_sbindir}/* +%{_docdir}/%{name}/* +%{_mandir}/man8/*.8.gz + +%changelog +* Wed Aug 21 2019 openEuler Buildteam - 1:3.2-2 +- Package init