patched up to commit df9ebd5ffbe
Signed-off-by: Anton Arapov <arapov@gmail.com>
This commit is contained in:
parent
32682d39c9
commit
2202f10ab1
87
0018-Only-decode-one-DMI-table.patch
Normal file
87
0018-Only-decode-one-DMI-table.patch
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
From 12fbde92a26da61eda9f2ff0ba3c316779163f10 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jean Delvare <jdelvare@suse.de>
|
||||||
|
Date: Fri, 20 Jan 2017 10:57:12 +0100
|
||||||
|
Subject: [PATCH 18/19] Only decode one DMI table
|
||||||
|
|
||||||
|
Since version 3.0.0 of the SMBIOS specification, there can be
|
||||||
|
multiple entry points in memory, pointing to one or two DMI tables.
|
||||||
|
If both a 32-bit ("_SM_") entry point and a 64-bit ("_SM3_") entry
|
||||||
|
point are present, the specification requires that the latter points
|
||||||
|
to a table which is a super-set of the table pointed to by the
|
||||||
|
former. Therefore it makes no sense to decode both.
|
||||||
|
|
||||||
|
Per specification, look for a 64-bit ("_SM3_") entry point first, and
|
||||||
|
if we can't find any, look for a 32-bit ("_SM_" or "_DMI_") entry
|
||||||
|
point.
|
||||||
|
|
||||||
|
This fixes bug #50022:
|
||||||
|
https://savannah.nongnu.org/bugs/?50022
|
||||||
|
---
|
||||||
|
CHANGELOG | 6 ++++++
|
||||||
|
dmidecode.c | 19 ++++++++++++++-----
|
||||||
|
2 files changed, 20 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/CHANGELOG b/CHANGELOG
|
||||||
|
index ac748b0..67aef99 100644
|
||||||
|
--- a/CHANGELOG
|
||||||
|
+++ b/CHANGELOG
|
||||||
|
@@ -1,3 +1,9 @@
|
||||||
|
+2017-01-20 Jean Delvare <jdelvare@suse.de>
|
||||||
|
+
|
||||||
|
+ * dmidecode.c: Only decode one DMI table.
|
||||||
|
+ This fixes Savannah bug #50022:
|
||||||
|
+ https://savannah.nongnu.org/bugs/?50022
|
||||||
|
+
|
||||||
|
2016-09-22 Jean Delvare <jdelvare@suse.de>
|
||||||
|
|
||||||
|
* README: Explain that we can no longer support Cygwin.
|
||||||
|
diff --git a/dmidecode.c b/dmidecode.c
|
||||||
|
index 3993592..4b46a13 100644
|
||||||
|
--- a/dmidecode.c
|
||||||
|
+++ b/dmidecode.c
|
||||||
|
@@ -4925,28 +4925,37 @@ memory_scan:
|
||||||
|
goto exit_free;
|
||||||
|
}
|
||||||
|
|
||||||
|
- for (fp = 0; fp <= 0xFFF0; fp += 16)
|
||||||
|
+ /* Look for a 64-bit entry point first */
|
||||||
|
+ for (fp = 0; fp <= 0xFFE0; fp += 16)
|
||||||
|
{
|
||||||
|
- if (memcmp(buf + fp, "_SM3_", 5) == 0 && fp <= 0xFFE0)
|
||||||
|
+ if (memcmp(buf + fp, "_SM3_", 5) == 0)
|
||||||
|
{
|
||||||
|
if (smbios3_decode(buf + fp, opt.devmem, 0))
|
||||||
|
{
|
||||||
|
found++;
|
||||||
|
- fp += 16;
|
||||||
|
+ goto done;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
- else if (memcmp(buf + fp, "_SM_", 4) == 0 && fp <= 0xFFE0)
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /* If none found, look for a 32-bit entry point */
|
||||||
|
+ for (fp = 0; fp <= 0xFFF0; fp += 16)
|
||||||
|
+ {
|
||||||
|
+ if (memcmp(buf + fp, "_SM_", 4) == 0 && fp <= 0xFFE0)
|
||||||
|
{
|
||||||
|
if (smbios_decode(buf + fp, opt.devmem, 0))
|
||||||
|
{
|
||||||
|
found++;
|
||||||
|
- fp += 16;
|
||||||
|
+ goto done;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (memcmp(buf + fp, "_DMI_", 5) == 0)
|
||||||
|
{
|
||||||
|
if (legacy_decode(buf + fp, opt.devmem, 0))
|
||||||
|
+ {
|
||||||
|
found++;
|
||||||
|
+ goto done;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.9.3
|
||||||
|
|
@ -0,0 +1,96 @@
|
|||||||
|
From adbd050d70b6173dd6880b21fd6f995af5ea79d2 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jean Delvare <jdelvare@suse.de>
|
||||||
|
Date: Fri, 20 Jan 2017 17:26:02 +0100
|
||||||
|
Subject: [PATCH 19/19] biosdecode: Decode Intel Multiprocessor entry point
|
||||||
|
|
||||||
|
Decode the entry point defined in the Intel Multiprocessor
|
||||||
|
specification.
|
||||||
|
---
|
||||||
|
CHANGELOG | 5 +++++
|
||||||
|
biosdecode.c | 34 +++++++++++++++++++++++++++++++++-
|
||||||
|
2 files changed, 38 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/CHANGELOG b/CHANGELOG
|
||||||
|
index 67aef99..26a8f35 100644
|
||||||
|
--- a/CHANGELOG
|
||||||
|
+++ b/CHANGELOG
|
||||||
|
@@ -1,5 +1,10 @@
|
||||||
|
2017-01-20 Jean Delvare <jdelvare@suse.de>
|
||||||
|
|
||||||
|
+ * biosdecode.c: Decode the entry point defined in the Intel
|
||||||
|
+ Multiprocessor specification.
|
||||||
|
+
|
||||||
|
+2017-01-20 Jean Delvare <jdelvare@suse.de>
|
||||||
|
+
|
||||||
|
* dmidecode.c: Only decode one DMI table.
|
||||||
|
This fixes Savannah bug #50022:
|
||||||
|
https://savannah.nongnu.org/bugs/?50022
|
||||||
|
diff --git a/biosdecode.c b/biosdecode.c
|
||||||
|
index 3bbfe28..ad3d4bc 100644
|
||||||
|
--- a/biosdecode.c
|
||||||
|
+++ b/biosdecode.c
|
||||||
|
@@ -2,7 +2,7 @@
|
||||||
|
* BIOS Decode
|
||||||
|
*
|
||||||
|
* Copyright (C) 2000-2002 Alan Cox <alan@redhat.com>
|
||||||
|
- * Copyright (C) 2002-2015 Jean Delvare <jdelvare@suse.de>
|
||||||
|
+ * Copyright (C) 2002-2017 Jean Delvare <jdelvare@suse.de>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@@ -52,6 +52,9 @@
|
||||||
|
* - Fujitsu application panel technical details
|
||||||
|
* As of July 23rd, 2004
|
||||||
|
* http://apanel.sourceforge.net/tech.php
|
||||||
|
+ * - Intel Multiprocessor Specification
|
||||||
|
+ * Version 1.4
|
||||||
|
+ * http://www.intel.com/design/archives/processors/pro/docs/242016.htm
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
@@ -546,6 +549,34 @@ static int fjkeyinf_decode(const u8 *p, size_t len)
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
+ * Intel Multiprocessor
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+static size_t mp_length(const u8 *p)
|
||||||
|
+{
|
||||||
|
+ return 16 * p[8];
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int mp_decode(const u8 *p, size_t len)
|
||||||
|
+{
|
||||||
|
+ if (!checksum(p, len))
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ printf("Intel Multiprocessor present.\n");
|
||||||
|
+ printf("\tSpecification Revision: %s\n",
|
||||||
|
+ p[9] == 0x01 ? "1.1" : p[9] == 0x04 ? "1.4" : "Invalid");
|
||||||
|
+ if (p[11])
|
||||||
|
+ printf("\tDefault Configuration: #%d\n", p[11]);
|
||||||
|
+ else
|
||||||
|
+ printf("\tConfiguration Table Address: 0x%08X\n",
|
||||||
|
+ DWORD(p + 4));
|
||||||
|
+ printf("\tMode: %s\n", p[12] & (1 << 7) ?
|
||||||
|
+ "IMCR and PIC" : "Virtual Wire");
|
||||||
|
+
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
* Main
|
||||||
|
*/
|
||||||
|
|
||||||
|
@@ -562,6 +593,7 @@ static struct bios_entry bios_entries[] = {
|
||||||
|
{ "32OS", 0, 0xE0000, 0xFFFFF, compaq_length, compaq_decode },
|
||||||
|
{ "\252\125VPD", 0, 0xF0000, 0xFFFFF, vpd_length, vpd_decode },
|
||||||
|
{ "FJKEYINF", 0, 0xF0000, 0xFFFFF, fjkeyinf_length, fjkeyinf_decode },
|
||||||
|
+ { "_MP_", 0, 0xE0000, 0xFFFFF, mp_length, mp_decode },
|
||||||
|
{ NULL, 0, 0, 0, NULL, NULL }
|
||||||
|
};
|
||||||
|
|
||||||
|
--
|
||||||
|
2.9.3
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
Summary: Tool to analyse BIOS DMI data
|
Summary: Tool to analyse BIOS DMI data
|
||||||
Name: dmidecode
|
Name: dmidecode
|
||||||
Version: 3.0
|
Version: 3.0
|
||||||
Release: 6%{?dist}
|
Release: 7%{?dist}
|
||||||
Epoch: 1
|
Epoch: 1
|
||||||
Group: System Environment/Base
|
Group: System Environment/Base
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
@ -24,6 +24,9 @@ Patch14: 0014-dmidecode-Move-error-messages-to-stderr.patch
|
|||||||
Patch15: 0015-Clarify-a-comment-in-dmi_memory_device_extended_size.patch
|
Patch15: 0015-Clarify-a-comment-in-dmi_memory_device_extended_size.patch
|
||||||
Patch16: 0016-Prevent-static-code-analyzer-confusion.patch
|
Patch16: 0016-Prevent-static-code-analyzer-confusion.patch
|
||||||
Patch17: 0017-Cygwin-is-no-longer-supported.patch
|
Patch17: 0017-Cygwin-is-no-longer-supported.patch
|
||||||
|
Patch18: 0018-Only-decode-one-DMI-table.patch
|
||||||
|
Patch19: 0019-biosdecode-Decode-Intel-Multiprocessor-entry-point.patch
|
||||||
|
|
||||||
BuildRequires: automake autoconf
|
BuildRequires: automake autoconf
|
||||||
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
|
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
|
||||||
|
|
||||||
@ -57,6 +60,8 @@ I/O ports (e.g. serial, parallel, USB).
|
|||||||
%patch15 -p1 -b .clarify_comment
|
%patch15 -p1 -b .clarify_comment
|
||||||
%patch16 -p1 -b .no_confusion
|
%patch16 -p1 -b .no_confusion
|
||||||
%patch17 -p1 -b .no_cygwin
|
%patch17 -p1 -b .no_cygwin
|
||||||
|
%patch18 -p1 -b .one_dmi
|
||||||
|
%patch19 -p1 -b .entry_intel
|
||||||
|
|
||||||
%build
|
%build
|
||||||
make %{?_smp_mflags} CFLAGS="$RPM_OPT_FLAGS"
|
make %{?_smp_mflags} CFLAGS="$RPM_OPT_FLAGS"
|
||||||
@ -77,6 +82,9 @@ make %{?_smp_mflags} DESTDIR=%{buildroot} prefix=%{_prefix} install-bin install-
|
|||||||
%{_mandir}/man8/*
|
%{_mandir}/man8/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Feb 02 2016 Anton Arapov <aarapov@redhat.com> - 1:3.0-7
|
||||||
|
- patched up to commit adbd050d70b
|
||||||
|
|
||||||
* Tue Oct 18 2016 Anton Arapov <aarapov@redhat.com> - 1:3.0-6
|
* Tue Oct 18 2016 Anton Arapov <aarapov@redhat.com> - 1:3.0-6
|
||||||
- patched up to commit df9ebd5ffbe
|
- patched up to commit df9ebd5ffbe
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user