[edk2-devel] [PATCH] ShellPkg: Changes to display Type 45 table in smbiosview and improved Type 3 table.

Kalaivani Palanikumar via groups.io posted 1 patch 1 year, 7 months ago
Failed in applying to current master (apply log)
.../SmbiosView/PrintInfo.c                    |  28 +++
.../SmbiosView/PrintInfo.h                    |  48 +++++
.../SmbiosView/QueryTable.c                   | 165 +++++++++++++++++-
.../SmbiosView/SmbiosViewStrings.uni          |   7 +-
4 files changed, 246 insertions(+), 2 deletions(-)
[edk2-devel] [PATCH] ShellPkg: Changes to display Type 45 table in smbiosview and improved Type 3 table.
Posted by Kalaivani Palanikumar via groups.io 1 year, 7 months ago
Add support in smbiosview command to display Type 45 table. There is a bug in Type 3 table which displays SystemEnclosureType as Undefined. As per Smbios spec, BIT7 in SMBIOS_TABLE_TYPE3.Type denotes whether chassis lock is present or not. But, currently BIT7 considered to display SystemEnclosureType.

Signed-off by: kalaivani P <kalaivanip@ami.com>

cc: Vasudevan S <vasudevans@ami.com>
cc: Sundaresan S <sundaresans@ami.com>
cc: Liming Gao <gaoliming@byosoft.com.cn>

---
 .../SmbiosView/PrintInfo.c                    |  28 +++
 .../SmbiosView/PrintInfo.h                    |  48 +++++
 .../SmbiosView/QueryTable.c                   | 165 +++++++++++++++++-
 .../SmbiosView/SmbiosViewStrings.uni          |   7 +-
 4 files changed, 246 insertions(+), 2 deletions(-)

diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.c
index bf5306205b..2b2a18bdce 100644
--- a/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.c
+++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.c
@@ -1274,6 +1274,34 @@ SmbiosPrintStructure (
       DisplayProcessorArchitectureType (Struct->Type44->ProcessorSpecificBlock.ProcessorArchType, Option);

       break;



+    //

+    // Firmware Inventory Information (Type 45)

+    //

+    case 45:

+    {

+        UINT16  *AssociatedComponentHandles;

+

+        PRINT_PENDING_STRING  (Struct, Type45, FirmwareComponentName);

+        PRINT_PENDING_STRING  (Struct, Type45, FirmwareVersion);

+        DisplayFirmwareVersionFormat (Struct->Type45->FirmwareVersionFormat, Option);

+        PRINT_PENDING_STRING  (Struct, Type45, FirmwareId);

+        DisplayFirmwareIdFormat (Struct->Type45->FirmwareIdFormat, Option);

+        PRINT_PENDING_STRING  (Struct, Type45, ReleaseDate);

+        PRINT_PENDING_STRING  (Struct, Type45, Manufacturer);

+        PRINT_PENDING_STRING  (Struct, Type45, LowestSupportedVersion);

+        PRINT_STRUCT_VALUE_LH (Struct, Type45, ImageSize);

+        DisplayFirmwareCharacteristics (*(UINT16 *)(UINTN)&Struct->Type45->Characteristics, Option);

+        DisplayFirmwareStateInformation (Struct->Type45->State, Option);

+        PRINT_STRUCT_VALUE_H (Struct, Type45, AssociatedComponentCount);

+

+        AssociatedComponentHandles = (UINT16 *)((UINTN)Struct->Type45 + sizeof(SMBIOS_TABLE_TYPE45));

+        for (Index = 0; Index < Struct->Type45->AssociatedComponentCount; Index++) {

+            ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_FW_INVENTORY_HANDLE), gShellDebug1HiiHandle, Index + 1, AssociatedComponentHandles[Index]);

+        }

+

+        break;

+    }

+

     //

     // Inactive (Type 126)

     //

diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.h b/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.h
index 8ecec693ad..43dbfcb94f 100644
--- a/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.h
+++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.h
@@ -3,6 +3,7 @@


   Copyright (c) 2005 - 2015, Intel Corporation. All rights reserved.<BR>

   (C) Copyright 2017 - 2019 Hewlett Packard Enterprise Development LP<BR>

+  Copyright (c) 1985 - 2022, American Megatrends International LLC.<BR>

   SPDX-License-Identifier: BSD-2-Clause-Patent



 **/

@@ -439,4 +440,51 @@ DisplayProcessorArchitectureType (
   IN UINT8  Option

   );



+/**

+  Display Firmware Version Format (Type 45).

+

+  @param[in] Key            The key of the structure.

+  @param[in] Option         The optional information.

+**/

+VOID

+DisplayFirmwareVersionFormat (

+  IN UINT8  Key,

+  IN UINT8  Option

+  );

+

+/**

+  Display Firmware ID Format (Type 45)

+

+  @param[in] Key            The key of the structure.

+  @param[in] Option         The optional information.

+**/

+VOID

+DisplayFirmwareIdFormat (

+  IN UINT8  Key,

+  IN UINT8  Option

+  );

+

+/**

+  Display Firmware State Information (Type 45)

+

+  @param[in] Key            The key of the structure.

+  @param[in] Option         The optional information.

+**/

+VOID

+DisplayFirmwareStateInformation (

+  IN UINT8  Key,

+  IN UINT8  Option

+  );

+

+/**

+  Display Firmware Inventory Characteristics (Type 45)

+

+  @param[in] Key            The key of the structure.

+  @param[in] Option         The optional information.

+**/

+VOID

+DisplayFirmwareCharacteristics (

+  IN UINT16  Key,

+  IN UINT8   Option

+  );

 #endif

diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/QueryTable.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/QueryTable.c
index 2e62ae3a34..06b24b55cd 100644
--- a/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/QueryTable.c
+++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/QueryTable.c
@@ -4,6 +4,7 @@


   Copyright (c) 2005 - 2021, Intel Corporation. All rights reserved.<BR>

   (C) Copyright 2016-2019 Hewlett Packard Enterprise Development LP<BR>

+  Copyright (c) 1985 - 2022, American Megatrends International LLC.<BR>

   SPDX-License-Identifier: BSD-2-Clause-Patent



 **/

@@ -3586,6 +3587,71 @@ TABLE_ITEM  ProcessorArchitectureTypesTable[] = {
   }

 };



+TABLE_ITEM  FirmwareVersionFormatTable[] = {

+  {

+    VersionFormatTypeFreeForm,

+    L" Free Form "

+  },

+  {

+    VersionFormatTypeMajorMinor,

+    L" MAJOR.MINOR "

+  },

+  {

+    VersionFormatType32BitHex,

+    L" 32-bit Numeric in Hex "

+  },

+  {

+    VersionFormatType64BitHex,

+    L" 64-bit Numeric in Hex "

+  }

+};

+

+TABLE_ITEM  FirmwareIdFormatTable[] = {

+  {

+    FirmwareIdFormatTypeFreeForm,

+    L" Free Form "

+  },

+  {

+    FirmwareIdFormatTypeUuid,

+    L" UUID "

+  }

+};

+

+TABLE_ITEM  FirmwareStateTable[] = {

+  {

+    FirmwareInventoryStateOther,

+    L" Other "

+  },

+  {

+    FirmwareInventoryStateUnknown,

+    L" Unknown "

+  },

+  {

+    FirmwareInventoryStateDisabled,

+    L" Disabled "

+  },

+  {

+    FirmwareInventoryStateEnabled,

+    L" Enabled "

+  },

+  {

+    FirmwareInventoryStateAbsent,

+    L" Absent "

+  },

+  {

+    FirmwareInventoryStateStandbyOffline,

+    L" Standby Offline "

+  },

+  {

+    FirmwareInventoryStateStandbySpare,

+    L" Standby Spare "

+  },

+  {

+    FirmwareInventoryStateUnavailableOffline,

+    L" Unavailable Offline "

+  }

+};

+

 TABLE_ITEM  StructureTypeInfoTable[] = {

   {

     0,

@@ -3767,6 +3833,10 @@ TABLE_ITEM  StructureTypeInfoTable[] = {
     44,

     L" Processor Additional Information"

   },

+  {

+    45,

+    L" Firmware Inventory Information"

+  },

   {

     0x7E,

     L" Inactive"

@@ -4002,7 +4072,7 @@ DisplaySystemEnclosureType (
   //

   // query table and print info

   //

-  PRINT_TABLE_ITEM (SystemEnclosureTypeTable, Type);

+  PRINT_TABLE_ITEM (SystemEnclosureTypeTable, (Type & ~BIT7));



   if (BIT (Type, 7) != 0) {

     ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_CHASSIS_LOCK_PRESENT), gShellDebug1HiiHandle);

@@ -5090,6 +5160,99 @@ DisplayProcessorArchitectureType (
   PRINT_TABLE_ITEM (ProcessorArchitectureTypesTable, Key);

 }



+/**

+  Display Firmware Version Format (Type 45).

+

+  @param[in] Key            The key of the structure.

+  @param[in] Option         The optional information.

+**/

+VOID

+DisplayFirmwareVersionFormat (

+  IN UINT8  Key,

+  IN UINT8  Option

+  )

+{

+    ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_FW_VERSION_FORMAT), gShellDebug1HiiHandle);

+    PRINT_INFO_OPTION (Key, Option);

+

+    if (Key <= VersionFormatType64BitHex) {

+        PRINT_TABLE_ITEM (FirmwareVersionFormatTable, Key);

+    } else if ((Key >= VersionFormatTypeReserved) && (Key < VersionFormatTypeOem)) {

+        ShellPrintEx (-1, -1, L" Reserved\n");

+    } else {

+        ShellPrintEx (-1, -1, L" BIOS Vendor / OEM-specific\n");

+    }

+}

+

+/**

+  Display Firmware ID Format (Type 45)

+

+  @param[in] Key            The key of the structure.

+  @param[in] Option         The optional information.

+**/

+VOID

+DisplayFirmwareIdFormat (

+  IN UINT8  Key,

+  IN UINT8  Option

+  )

+{

+    ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_FW_ID_FORMAT), gShellDebug1HiiHandle);

+    PRINT_INFO_OPTION (Key, Option);

+

+    if (Key <= FirmwareIdFormatTypeUuid) {

+        PRINT_TABLE_ITEM (FirmwareIdFormatTable, Key);

+    } else if ((Key >= FirmwareIdFormatTypeReserved) && (Key < InventoryFirmwareIdFormatTypeOem)) {

+        ShellPrintEx (-1, -1, L" Reserved\n");

+    } else {

+        ShellPrintEx (-1, -1, L" BIOS Vendor / OEM-specific\n");

+    }

+}

+

+/**

+  Display Firmware Inventory Characteristics (Type 45)

+

+  @param[in] Key            The key of the structure.

+  @param[in] Option         The optional information.

+**/

+VOID

+DisplayFirmwareCharacteristics (

+  IN UINT16  Key,

+  IN UINT8   Option

+  )

+{

+    ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_FW_INVENTORY_CHAR), gShellDebug1HiiHandle);

+    PRINT_INFO_OPTION (Key, Option);

+

+    if (BIT (Key, 0) == 1) {

+        ShellPrintEx (-1, -1, L"Updatable\n");

+    } else {

+        ShellPrintEx (-1, -1, L"Not Updatable\n");

+    }

+

+    if (BIT (Key, 1) == 1) {

+        ShellPrintEx (-1, -1, L"Write Protected\n");

+    } else {

+        ShellPrintEx (-1, -1, L"Not Write Protected\n");

+    }

+}

+

+/**

+  Display Firmware State Information (Type 45)

+

+  @param[in] Key            The key of the structure.

+  @param[in] Option         The optional information.

+**/

+VOID

+DisplayFirmwareStateInformation (

+  IN UINT8  Key,

+  IN UINT8  Option

+  )

+{

+    ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_FW_STATE), gShellDebug1HiiHandle);

+    PRINT_INFO_OPTION (Key, Option);

+    PRINT_TABLE_ITEM (FirmwareStateTable, Key);

+}

+

 /**

   Display the structure type information.



diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/SmbiosViewStrings.uni b/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/SmbiosViewStrings.uni
index 68211ce7ab..fc8ff317e6 100644
--- a/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/SmbiosViewStrings.uni
+++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/SmbiosViewStrings.uni
@@ -3,6 +3,7 @@
 // Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved.<BR>

 // (C) Copyright 2014-2015 Hewlett-Packard Development Company, L.P.<BR>

 // (C) Copyright 2015-2019 Hewlett Packard Enterprise Development LP<BR>

+// Copyright (c) 1985 - 2022, American Megatrends International LLC.<BR>

 // SPDX-License-Identifier: BSD-2-Clause-Patent

 //

 // Module Name:

@@ -504,4 +505,8 @@
 #string STR_SMBIOSVIEW_PRINTINFO_TPM_DEVICE_CONFIG_PLAT_SW      #language en-US "Family configurable via platform software support\r\n"

 #string STR_SMBIOSVIEW_PRINTINFO_TPM_DEVICE_CONFIG_OEM          #language en-US "Family configurable via OEM proprietary mechanism\r\n"

 #string STR_SMBIOSVIEW_PRINTINFO_BITS_06_63                     #language en-US "Bits 6:63 are reserved\r\n"

-

+#string STR_SMBIOSVIEW_PRINTINFO_FW_INVENTORY_CHAR              #language en-US "Firmware Characteristics: \r\n"

+#string STR_SMBIOSVIEW_PRINTINFO_FW_INVENTORY_HANDLE            #language en-US "Associated Component Handle %d: 0x%x\r\n"

+#string STR_SMBIOSVIEW_QUERYTABLE_FW_VERSION_FORMAT             #language en-US "Firmware Version Format:"

+#string STR_SMBIOSVIEW_QUERYTABLE_FW_ID_FORMAT                  #language en-US "Firmware ID Format:"

+#string STR_SMBIOSVIEW_QUERYTABLE_FW_STATE                      #language en-US "Firmware State:"

--
2.36.0.windows.1
-The information contained in this message may be confidential and proprietary to American Megatrends (AMI). This communication is intended to be read only by the individual or entity to whom it is addressed or by their designee. If the reader of this message is not the intended recipient, you are on notice that any distribution of this message, in any form, is strictly prohibited. Please promptly notify the sender by reply e-mail or by telephone at 770-246-8600, and then delete or destroy all copies of the transmission.


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#94535): https://edk2.groups.io/g/devel/message/94535
Mute This Topic: https://groups.io/mt/94007102/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-