[edk2-devel] [PATCH v2] MdePkg:Include: Update SmBios header file

Liming Gao liming.gao at intel.com
Thu Sep 19 05:22:32 UTC 2019


Abner:
  Please add BZ URL in the commit message, and separate this patch to three changes. Each one is for each package of MdePkg, MdeModulePkg and ShellPkg. 

  As Leif say, SmBios 3.3 spec is not published. This patch will not be pushed until SmBios 3.3 is published. 

>-----Original Message-----
>From: Abner Chang [mailto:abner.chang at hpe.com]
>Sent: Thursday, September 19, 2019 11:05 AM
>To: devel at edk2.groups.io
>Cc: abner.chang at hpe.com; Kinney, Michael D <michael.d.kinney at intel.com>;
>Gao, Liming <liming.gao at intel.com>; Leif Lindholm <leif.lindholm at linaro.org>;
>Gilbert Chen <gilbert.chen at hpe.com>
>Subject: [PATCH v2] MdePkg:Include: Update SmBios header file
>
>Update SmBios header file to conform with SMBIOS v3.3.0.
>The major update is to add definitions of SMBIOS Type 44h record.
>
>Signed-off-by: Abner Chang <abner.chang at hpe.com>
>
>Cc: Michael D Kinney <michael.d.kinney at intel.com>
>Cc: Liming Gao <liming.gao at intel.com>
>Cc: Leif Lindholm <leif.lindholm at linaro.org>
>Cc: Gilbert Chen <gilbert.chen at hpe.com>
>---
> MdeModulePkg/MdeModulePkg.dec                      |  6 +-
> MdePkg/Include/IndustryStandard/SmBios.h           | 76
>+++++++++++++++++++++-
> .../SmbiosView/PrintInfo.c                         | 23 ++++++-
> .../SmbiosView/PrintInfo.h                         | 13 +++-
> .../SmbiosView/QueryTable.c                        | 63 +++++++++++++++++-
> .../UefiShellDebug1CommandsLib.uni                 |  3 +-
> 6 files changed, 174 insertions(+), 10 deletions(-)
>
>diff --git a/MdeModulePkg/MdeModulePkg.dec
>b/MdeModulePkg/MdeModulePkg.dec
>index 19935c8..e3a65ab 100644
>--- a/MdeModulePkg/MdeModulePkg.dec
>+++ b/MdeModulePkg/MdeModulePkg.dec
>@@ -1792,10 +1792,10 @@
>
>   ## SMBIOS version.
>   # @Prompt SMBIOS version.
>-
>gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosVersion|0x0302|UINT16|0x0
>0010055
>+
>gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosVersion|0x0303|UINT16|0x0
>0010055
>
>-  ## SMBIOS Docrev field in SMBIOS 3.0 (64-bit) Entry Point Structure.
>-  # @Prompt SMBIOS Docrev field in SMBIOS 3.0 (64-bit) Entry Point Structure.
>+  ## SMBIOS Docrev field in SMBIOS 3.3 (64-bit) Entry Point Structure.
>+  # @Prompt SMBIOS Docrev field in SMBIOS 3.3 (64-bit) Entry Point
>Structure.
>
>gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosDocRev|0x0|UINT8|0x000100
>6A
>
>   ## SMBIOS produce method.
>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;
>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/UefiShellDebug1Command
>sLib.uni
>b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1Comman
>dsLib.uni
>index 42a9295..6693be2 100644
>---
>a/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1Command
>sLib.uni
>+++
>b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1Comman
>dsLib.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


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#47554): https://edk2.groups.io/g/devel/message/47554
Mute This Topic: https://groups.io/mt/34196247/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-





More information about the edk2-devel-archive mailing list