* [PATCH v4 2/3] MdePkg/Include: Update to support SmBios 3.3.0
2019-09-20 5:22 [PATCH v4 0/3] Update to support SmBios 3.3.0 Abner Chang
2019-09-20 5:22 ` [PATCH v4 1/3] MdeModulePkg: " Abner Chang
@ 2019-09-20 5:22 ` Abner Chang
2019-09-20 5:22 ` [PATCH v4 3/3] ShellPkg/UefiShellDebug1CommandsLib: " Abner Chang
2 siblings, 0 replies; 4+ messages in thread
From: Abner Chang @ 2019-09-20 5:22 UTC (permalink / raw)
To: devel
Cc: abner.chang, Michael D Kinney, Liming Gao, Leif Lindholm,
Gilbert Chen
Update SmBios.h to support SMBIOS 3.3.0 spec.
Signed-off-by: Abner Chang <abner.chang@hpe.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Leif Lindholm <leif.lindholm@linaro.org>
Cc: Gilbert Chen <gilbert.chen@hpe.com>
---
MdePkg/Include/IndustryStandard/SmBios.h | 76 ++++++++++++++++++++++++++++++--
1 file changed, 73 insertions(+), 3 deletions(-)
diff --git a/MdePkg/Include/IndustryStandard/SmBios.h b/MdePkg/Include/IndustryStandard/SmBios.h
index f3b6f18..f504cc8 100644
--- a/MdePkg/Include/IndustryStandard/SmBios.h
+++ b/MdePkg/Include/IndustryStandard/SmBios.h
@@ -1,8 +1,9 @@
/** @file
- Industry Standard Definitions of SMBIOS Table Specification v3.2.0.
+ Industry Standard Definitions of SMBIOS Table Specification v3.3.0.
Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
(C) Copyright 2015-2017 Hewlett Packard Enterprise Development LP<BR>
+(C) Copyright 2015 - 2019 Hewlett Packard Enterprise Development LP<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
@@ -46,7 +47,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
#define SMBIOS_3_0_TABLE_MAX_LENGTH 0xFFFFFFFF
//
-// SMBIOS type macros which is according to SMBIOS 2.7 specification.
+// SMBIOS type macros which is according to SMBIOS 3.3.0 specification.
//
#define SMBIOS_TYPE_BIOS_INFORMATION 0
#define SMBIOS_TYPE_SYSTEM_INFORMATION 1
@@ -92,6 +93,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
#define SMBIOS_TYPE_ONBOARD_DEVICES_EXTENDED_INFORMATION 41
#define SMBIOS_TYPE_MANAGEMENT_CONTROLLER_HOST_INTERFACE 42
#define SMBIOS_TYPE_TPM_DEVICE 43
+#define SMBIOS_TYPE_PROCESSOR_ADDITIONAL_INFORMATION 44
///
/// Inactive type is added from SMBIOS 2.2. Reference SMBIOS 2.6, chapter 3.3.43.
@@ -727,7 +729,10 @@ typedef enum {
ProcessorFamilyMII = 0x012E,
ProcessorFamilyWinChip = 0x0140,
ProcessorFamilyDSP = 0x015E,
- ProcessorFamilyVideoProcessor = 0x01F4
+ ProcessorFamilyVideoProcessor = 0x01F4,
+ ProcessorFamilyRiscvRV32 = 0x0200,
+ ProcessorFamilyRiscVRV64 = 0x0201,
+ ProcessorFamilyRiscVRV128 = 0x0202
} PROCESSOR_FAMILY2_DATA;
///
@@ -857,6 +862,19 @@ typedef struct {
} PROCESSOR_FEATURE_FLAGS;
typedef struct {
+ UINT32 ProcessorReserved1 :1;
+ UINT32 ProcessorUnknown :1;
+ UINT32 Processor64BitCapble :1;
+ UINT32 ProcessorMultiCore :1;
+ UINT32 ProcessorHardwareThread :1;
+ UINT32 ProcessorExecuteProtection :1;
+ UINT32 ProcessorEnhancedVirtulization :1;
+ UINT32 ProcessorPowerPerformanceCtrl :1;
+ UINT32 Processor128bitCapble :1;
+ UINT32 ProcessorReserved2 :7;
+} PROCESSOR_CHARACTERISTIC_FLAGS;
+
+typedef struct {
PROCESSOR_SIGNATURE Signature;
PROCESSOR_FEATURE_FLAGS FeatureFlags;
} PROCESSOR_ID_DATA;
@@ -2508,6 +2526,57 @@ typedef struct {
UINT8 InterfaceTypeSpecificData[4]; ///< This field has a minimum of four bytes
} SMBIOS_TABLE_TYPE42;
+
+///
+/// Processor Specific Block - Processor Architecture Type
+///
+typedef enum{
+ ProcessorSpecificBlockArchTypeReserved = 0x00,
+ ProcessorSpecificBlockArchTypeIa32 = 0x01,
+ ProcessorSpecificBlockArchTypeX64 = 0x02,
+ ProcessorSpecificBlockArchTypeItanium = 0x03,
+ ProcessorSpecificBlockArchTypeAarch32 = 0x04,
+ ProcessorSpecificBlockArchTypeAarch64 = 0x05,
+ ProcessorSpecificBlockArchTypeRiscVRV32 = 0x06,
+ ProcessorSpecificBlockArchTypeRiscVRV64 = 0x07,
+ ProcessorSpecificBlockArchTypeRiscVRV128 = 0x08
+} PROCESSOR_SPECIFIC_BLOCK_ARCH_TYPE;
+
+///
+/// Processor Specific Block is the standard container of processor-specific data.
+///
+typedef struct {
+ UINT8 Length;
+ UINT8 ProcessorArchType;
+ ///
+ /// Below followed by Processor-specific data
+ ///
+ ///
+} PROCESSOR_SPECIFIC_BLOCK;
+
+///
+/// Processor Additional Information(Type 44).
+///
+/// The information in this structure defines the processor additional information in case
+/// SMBIOS type 4 is not sufficient to describe processor characteristics.
+/// The SMBIOS type 44 structure has a reference handle field to link back to the related
+/// SMBIOS type 4 structure. There may be multiple SMBIOS type 44 structures linked to the
+/// same SMBIOS type 4 structure. For example, when cores are not identical in a processor,
+/// SMBIOS type 44 structures describe different core-specific information.
+///
+/// SMBIOS type 44 defines the standard header for the processor-specific block, while the
+/// contents of processor-specific data are maintained by processor
+/// architecture workgroups or vendors in separate documents.
+///
+typedef struct {
+ SMBIOS_STRUCTURE Hdr;
+ SMBIOS_HANDLE RefHandle; ///< This field refer to associated SMBIOS type 4
+ ///
+ /// Below followed by Processor-specific block
+ ///
+ PROCESSOR_SPECIFIC_BLOCK ProcessorSpecificBlock;
+} SMBIOS_TABLE_TYPE44;
+
///
/// TPM Device (Type 43).
///
@@ -2586,6 +2655,7 @@ typedef union {
SMBIOS_TABLE_TYPE41 *Type41;
SMBIOS_TABLE_TYPE42 *Type42;
SMBIOS_TABLE_TYPE43 *Type43;
+ SMBIOS_TABLE_TYPE44 *Type44;
SMBIOS_TABLE_TYPE126 *Type126;
SMBIOS_TABLE_TYPE127 *Type127;
UINT8 *Raw;
--
2.7.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v4 3/3] ShellPkg/UefiShellDebug1CommandsLib: Update to support SmBios 3.3.0
2019-09-20 5:22 [PATCH v4 0/3] Update to support SmBios 3.3.0 Abner Chang
2019-09-20 5:22 ` [PATCH v4 1/3] MdeModulePkg: " Abner Chang
2019-09-20 5:22 ` [PATCH v4 2/3] MdePkg/Include: " Abner Chang
@ 2019-09-20 5:22 ` Abner Chang
2 siblings, 0 replies; 4+ messages in thread
From: Abner Chang @ 2019-09-20 5:22 UTC (permalink / raw)
To: devel
Cc: abner.chang, Jaben Carsey, Ray Ni, Zhichao Gao, Leif Lindholm,
Gilbert Chen
Shell command smbiosview updates for SMBIOS 3.3.0 spec.
Signed-off-by: Abner Chang <abner.chang@hpe.com>
Cc: Jaben Carsey <jaben.carsey@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Zhichao Gao <zhichao.gao@intel.com>
Cc: Leif Lindholm <leif.lindholm@linaro.org>
Cc: Gilbert Chen <gilbert.chen@hpe.com>
---
.../SmbiosView/PrintInfo.c | 23 +++++++-
.../SmbiosView/PrintInfo.h | 13 ++++-
.../SmbiosView/QueryTable.c | 63 +++++++++++++++++++++-
.../UefiShellDebug1CommandsLib.uni | 3 +-
4 files changed, 98 insertions(+), 4 deletions(-)
diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.c
index cfd7a2b..ff0c1db 100644
--- a/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.c
+++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.c
@@ -3,7 +3,7 @@
Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved.<BR>
(C) Copyright 2014 Hewlett-Packard Development Company, L.P.<BR>
- (C) Copyright 2015-2017 Hewlett Packard Enterprise Development LP<BR>
+ (C) Copyright 2015-2019 Hewlett Packard Enterprise Development LP<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
@@ -1169,6 +1169,15 @@ SmbiosPrintStructure (
break;
//
+ // Processor Additional Information (Type 44)
+ //
+ case 44:
+ PRINT_STRUCT_VALUE_H (Struct, Type44, RefHandle);
+ PRINT_STRUCT_VALUE_H (Struct, Type44, ProcessorSpecificBlock.ProcessorArchType);
+ ProcessorArchitectureType (Struct->Type44->ProcessorSpecificBlock.ProcessorArchType, Option);
+ break;
+
+ //
// Inactive (Type 126)
//
case 126:
@@ -2350,6 +2359,18 @@ DisplayProcessorFamily2 (
Print (L"Video Processor\n");
break;
+ case 0x200:
+ Print (L"RISC-V RV32\n");
+ break;
+
+ case 0x201:
+ Print (L"RISC-V RV64\n");
+ break;
+
+ case 0x202:
+ Print (L"RISC-V RV128\n");
+ break;
+
default:
ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNDEFINED_PROC_FAMILY), gShellDebug1HiiHandle);
}
diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.h b/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.h
index a8c32ab..22f59d6 100644
--- a/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.h
+++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.h
@@ -2,7 +2,7 @@
Module to clarify the element info of the smbios structure.
Copyright (c) 2005 - 2015, Intel Corporation. All rights reserved.<BR>
- (C) Copyright 2017 Hewlett Packard Enterprise Development LP<BR>
+ (C) Copyright 2017 - 2019 Hewlett Packard Enterprise Development LP<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
@@ -427,4 +427,15 @@ DisplayTpmDeviceCharacteristics (
IN UINT8 Option
);
+/**
+ Display Processor Architecture Type (Type 44).
+
+ @param[in] Type The key of the structure.
+ @param[in] Option The optional information.
+**/
+VOID
+ProcessorArchitectureType (
+ IN UINT8 Type,
+ IN UINT8 Option
+ );
#endif
diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/QueryTable.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/QueryTable.c
index bfb7c3b..54e9a52 100644
--- a/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/QueryTable.c
+++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/QueryTable.c
@@ -3,7 +3,7 @@
And give a interface of query a string out of a table.
Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved.<BR>
- (C) Copyright 2016-2017 Hewlett Packard Enterprise Development LP<BR>
+ (C) Copyright 2016-2019 Hewlett Packard Enterprise Development LP<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
@@ -620,6 +620,10 @@ TABLE_ITEM ProcessorCharacteristicsTable[] = {
{
7,
L" Power/Performance Control"
+ },
+ {
+ 8,
+ L" 128-bit Capable"
}
};
@@ -3268,6 +3272,44 @@ TABLE_ITEM MCHostInterfaceTypeTable[] = {
},
};
+TABLE_ITEM ProcessorArchitectureTypesTable[] = {
+ {
+ 0,
+ L" Reserved "
+ },
+ {
+ 1,
+ L" IA32 (x86) "
+ },
+ {
+ 2,
+ L" x64 (x86-64, intel64, AMD64, EM64T) "
+ },
+ {
+ 3,
+ L" Intel Itanium architecture "
+ },
+ {
+ 4,
+ L" 32-bit ARM (Aarch32) "
+ },
+ {
+ 5,
+ L" 64-bit ARM (Aarch64) "
+ },
+ {
+ 6,
+ L" 32-bit RISC-V (RV32) "
+ },
+ {
+ 7,
+ L" 64-bit RISC-V (RV64) "
+ },
+ {
+ 8,
+ L" 128-bit RISC-V (RV128) "
+ }
+};
TABLE_ITEM StructureTypeInfoTable[] = {
{
@@ -3447,6 +3489,10 @@ TABLE_ITEM StructureTypeInfoTable[] = {
L" TPM Device"
},
{
+ 44,
+ L" Processor Additional Information"
+ },
+ {
0x7E,
L" Inactive"
},
@@ -4697,6 +4743,21 @@ DisplayMCHostInterfaceType (
}
/**
+ Display Processor Architecture Type (Type 44).
+
+ @param[in] Type The key of the structure.
+ @param[in] Option The optional information.
+**/
+VOID
+ProcessorArchitectureType (
+ IN UINT8 Type,
+ IN UINT8 Option
+ )
+{
+ PRINT_TABLE_ITEM (ProcessorArchitectureTypesTable, Type);
+}
+
+/**
Display the structure type information.
@param[in] Key The key of the structure.
diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni
index 42a9295..6693be2 100644
--- a/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni
+++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.uni
@@ -2,7 +2,7 @@
//
// Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
// (C) Copyright 2013-2015 Hewlett-Packard Development Company, L.P.<BR>
-// (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
+// (C) Copyright 2016 - 2019 Hewlett Packard Enterprise Development LP<BR>
// SPDX-License-Identifier: BSD-2-Clause-Patent
//
// Module Name:
@@ -976,6 +976,7 @@
" 41 - Onboard Devices Extended Information\r\n"
" 42 - Management Controller Host Interface\r\n"
" 43 - TPM Device\r\n"
+" 44 - Processor Additional Information\r\n"
" 2. Enter the SmbiosHandle parameter in hexadecimal format.\r\n"
" Do not use the '0x' prefix format for hexadecimal values.\r\n"
" 3. Internal commands:\r\n"
--
2.7.4
^ permalink raw reply related [flat|nested] 4+ messages in thread