public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Kalaivani Palanikumar <kalaivanip@ami.com>
To: "devel@edk2.groups.io" <devel@edk2.groups.io>,
	Kalaivani Palanikumar <kalaivanip@ami.com>
Cc: Sundaresan S <sundaresans@ami.com>,
	Vasudevan S <vasudevans@ami.com>,
	Liming Gao <gaoliming@byosoft.com.cn>
Subject: [PATCH] ShellPkg: Changes to display Type 45 table in smbiosview and improved Type 3 table.
Date: Thu, 29 Sep 2022 08:06:40 +0000	[thread overview]
Message-ID: <20220929080627.974-1-kalaivanip@ami.com> (raw)

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.

                 reply	other threads:[~2022-09-29  8:06 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220929080627.974-1-kalaivanip@ami.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox