Blame 0019-biosdecode-Decode-Intel-Multiprocessor-entry-point.patch

Anton Arapov 2202f1
From adbd050d70b6173dd6880b21fd6f995af5ea79d2 Mon Sep 17 00:00:00 2001
Anton Arapov 2202f1
From: Jean Delvare <jdelvare@suse.de>
Anton Arapov 2202f1
Date: Fri, 20 Jan 2017 17:26:02 +0100
Anton Arapov 2202f1
Subject: [PATCH 19/19] biosdecode: Decode Intel Multiprocessor entry point
Anton Arapov 2202f1
Anton Arapov 2202f1
Decode the entry point defined in the Intel Multiprocessor
Anton Arapov 2202f1
specification.
Anton Arapov 2202f1
---
Anton Arapov 2202f1
 CHANGELOG    |  5 +++++
Anton Arapov 2202f1
 biosdecode.c | 34 +++++++++++++++++++++++++++++++++-
Anton Arapov 2202f1
 2 files changed, 38 insertions(+), 1 deletion(-)
Anton Arapov 2202f1
Anton Arapov 2202f1
diff --git a/CHANGELOG b/CHANGELOG
Anton Arapov 2202f1
index 67aef99..26a8f35 100644
Anton Arapov 2202f1
--- a/CHANGELOG
Anton Arapov 2202f1
+++ b/CHANGELOG
Anton Arapov 2202f1
@@ -1,5 +1,10 @@
Anton Arapov 2202f1
 2017-01-20  Jean Delvare  <jdelvare@suse.de>
Anton Arapov 2202f1
 
Anton Arapov 2202f1
+	* biosdecode.c: Decode the entry point defined in the Intel
Anton Arapov 2202f1
+	  Multiprocessor specification.
Anton Arapov 2202f1
+
Anton Arapov 2202f1
+2017-01-20  Jean Delvare  <jdelvare@suse.de>
Anton Arapov 2202f1
+
Anton Arapov 2202f1
 	* dmidecode.c: Only decode one DMI table.
Anton Arapov 2202f1
 	  This fixes Savannah bug #50022:
Anton Arapov 2202f1
 	  https://savannah.nongnu.org/bugs/?50022
Anton Arapov 2202f1
diff --git a/biosdecode.c b/biosdecode.c
Anton Arapov 2202f1
index 3bbfe28..ad3d4bc 100644
Anton Arapov 2202f1
--- a/biosdecode.c
Anton Arapov 2202f1
+++ b/biosdecode.c
Anton Arapov 2202f1
@@ -2,7 +2,7 @@
Anton Arapov 2202f1
  * BIOS Decode
Anton Arapov 2202f1
  *
Anton Arapov 2202f1
  *   Copyright (C) 2000-2002 Alan Cox <alan@redhat.com>
Anton Arapov 2202f1
- *   Copyright (C) 2002-2015 Jean Delvare <jdelvare@suse.de>
Anton Arapov 2202f1
+ *   Copyright (C) 2002-2017 Jean Delvare <jdelvare@suse.de>
Anton Arapov 2202f1
  *
Anton Arapov 2202f1
  *   This program is free software; you can redistribute it and/or modify
Anton Arapov 2202f1
  *   it under the terms of the GNU General Public License as published by
Anton Arapov 2202f1
@@ -52,6 +52,9 @@
Anton Arapov 2202f1
  *  - Fujitsu application panel technical details
Anton Arapov 2202f1
  *    As of July 23rd, 2004
Anton Arapov 2202f1
  *    http://apanel.sourceforge.net/tech.php
Anton Arapov 2202f1
+ *  - Intel Multiprocessor Specification
Anton Arapov 2202f1
+ *    Version 1.4
Anton Arapov 2202f1
+ *    http://www.intel.com/design/archives/processors/pro/docs/242016.htm
Anton Arapov 2202f1
  */
Anton Arapov 2202f1
 
Anton Arapov 2202f1
 #include <stdio.h>
Anton Arapov 2202f1
@@ -546,6 +549,34 @@ static int fjkeyinf_decode(const u8 *p, size_t len)
Anton Arapov 2202f1
 }
Anton Arapov 2202f1
 
Anton Arapov 2202f1
 /*
Anton Arapov 2202f1
+ * Intel Multiprocessor
Anton Arapov 2202f1
+ */
Anton Arapov 2202f1
+
Anton Arapov 2202f1
+static size_t mp_length(const u8 *p)
Anton Arapov 2202f1
+{
Anton Arapov 2202f1
+	return 16 * p[8];
Anton Arapov 2202f1
+}
Anton Arapov 2202f1
+
Anton Arapov 2202f1
+static int mp_decode(const u8 *p, size_t len)
Anton Arapov 2202f1
+{
Anton Arapov 2202f1
+	if (!checksum(p, len))
Anton Arapov 2202f1
+		return 0;
Anton Arapov 2202f1
+
Anton Arapov 2202f1
+	printf("Intel Multiprocessor present.\n");
Anton Arapov 2202f1
+	printf("\tSpecification Revision: %s\n",
Anton Arapov 2202f1
+		p[9] == 0x01 ? "1.1" : p[9] == 0x04 ? "1.4" : "Invalid");
Anton Arapov 2202f1
+	if (p[11])
Anton Arapov 2202f1
+		printf("\tDefault Configuration: #%d\n", p[11]);
Anton Arapov 2202f1
+	else
Anton Arapov 2202f1
+		printf("\tConfiguration Table Address: 0x%08X\n",
Anton Arapov 2202f1
+			DWORD(p + 4));
Anton Arapov 2202f1
+	printf("\tMode: %s\n", p[12] & (1 << 7) ?
Anton Arapov 2202f1
+		"IMCR and PIC" : "Virtual Wire");
Anton Arapov 2202f1
+
Anton Arapov 2202f1
+	return 1;
Anton Arapov 2202f1
+}
Anton Arapov 2202f1
+
Anton Arapov 2202f1
+/*
Anton Arapov 2202f1
  * Main
Anton Arapov 2202f1
  */
Anton Arapov 2202f1
 
Anton Arapov 2202f1
@@ -562,6 +593,7 @@ static struct bios_entry bios_entries[] = {
Anton Arapov 2202f1
 	{ "32OS", 0, 0xE0000, 0xFFFFF, compaq_length, compaq_decode },
Anton Arapov 2202f1
 	{ "\252\125VPD", 0, 0xF0000, 0xFFFFF, vpd_length, vpd_decode },
Anton Arapov 2202f1
 	{ "FJKEYINF", 0, 0xF0000, 0xFFFFF, fjkeyinf_length, fjkeyinf_decode },
Anton Arapov 2202f1
+	{ "_MP_", 0, 0xE0000, 0xFFFFF, mp_length, mp_decode },
Anton Arapov 2202f1
 	{ NULL, 0, 0, 0, NULL, NULL }
Anton Arapov 2202f1
 };
Anton Arapov 2202f1
 
Anton Arapov 2202f1
-- 
Anton Arapov 2202f1
2.9.3
Anton Arapov 2202f1