[edk2-devel] [PATCH] ShellPkg: Update smbiosview type 0/4/17/41 with SMBIOS 3.5 fields

MillerX Lin posted 1 patch 1 year ago
Failed in applying to current master (apply log)
.../SmbiosView/PrintInfo.c                    | 153 +++++++++---------
.../SmbiosView/SmbiosViewStrings.uni          |  28 ++--
2 files changed, 90 insertions(+), 91 deletions(-)
[edk2-devel] [PATCH] ShellPkg: Update smbiosview type 0/4/17/41 with SMBIOS 3.5 fields
Posted by MillerX Lin 1 year ago
Cc: Signed-off-by: MillerX Lin <millerx.lin@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Zhichao Gao <zhichao.gao@intel.com>

---
 .../SmbiosView/PrintInfo.c                    | 153 +++++++++---------
 .../SmbiosView/SmbiosViewStrings.uni          |  28 ++--
 2 files changed, 90 insertions(+), 91 deletions(-)

diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.c
index 2611601230..de9cc8becd 100644
--- a/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.c
+++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.c
@@ -335,10 +335,10 @@ SmbiosPrintStructure (
     // BIOS Information (Type 0)
     //
     case 0:
-      PRINT_PENDING_STRING (Struct, Type0, Vendor);
-      PRINT_PENDING_STRING (Struct, Type0, BiosVersion);
-      PRINT_STRUCT_VALUE_H (Struct, Type0, BiosSegment);
-      PRINT_PENDING_STRING (Struct, Type0, BiosReleaseDate);
+      ShellPrintEx (-1, -1, L"Vendor: %a\n", LibGetSmbiosString (Struct, Struct->Type0->Vendor));
+      ShellPrintEx (-1, -1, L"BIOS Version: %a\n", LibGetSmbiosString (Struct, Struct->Type0->BiosVersion));
+      ShellPrintEx (-1, -1, L"BIOS Starting Address Segment: 0x%x\n", Struct->Type0->BiosSegment);
+      ShellPrintEx (-1, -1, L"BIOS Release Date: %a\n", LibGetSmbiosString (Struct, Struct->Type0->BiosReleaseDate));
       ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_SIZE), gShellDebug1HiiHandle, 64 * (Struct->Type0->BiosSize + 1));
 
       DisplayBiosCharacteristics (ReadUnaligned64 ((UINT64 *)(UINTN)&(Struct->Type0->BiosCharacteristics)), Option);
@@ -352,10 +352,10 @@ SmbiosPrintStructure (
       }
 
       if (AE_SMBIOS_VERSION (0x2, 0x4) && (Struct->Hdr->Length > 0x14)) {
-        PRINT_STRUCT_VALUE (Struct, Type0, SystemBiosMajorRelease);
-        PRINT_STRUCT_VALUE (Struct, Type0, SystemBiosMinorRelease);
-        PRINT_STRUCT_VALUE (Struct, Type0, EmbeddedControllerFirmwareMajorRelease);
-        PRINT_STRUCT_VALUE (Struct, Type0, EmbeddedControllerFirmwareMinorRelease);
+        ShellPrintEx (-1, -1, L"System BIOS Major Release: %u\n", Struct->Type0->SystemBiosMajorRelease);
+        ShellPrintEx (-1, -1, L"System BIOS Minor Release: %u\n", Struct->Type0->SystemBiosMinorRelease);
+        ShellPrintEx (-1, -1, L"Embedded Controller Firmware Major Release: %u\n", Struct->Type0->EmbeddedControllerFirmwareMajorRelease);
+        ShellPrintEx (-1, -1, L"Embedded Controller Firmware Minor Release: %u\n", Struct->Type0->EmbeddedControllerFirmwareMinorRelease);
       }
 
       if (AE_SMBIOS_VERSION (0x3, 0x1) && (Struct->Hdr->Length > 0x18)) {
@@ -470,48 +470,50 @@ SmbiosPrintStructure (
     // Processor Information (Type 4)
     //
     case 4:
-      PRINT_SMBIOS_STRING (Struct, Struct->Type4->Socket, SocketDesignation)
+      ShellPrintEx (-1, -1, L"Socket Designation: %a\n", LibGetSmbiosString (Struct, Struct->Type4->Socket));
       DisplayProcessorType (Struct->Type4->ProcessorType, Option);
-      if (AE_SMBIOS_VERSION (0x2, 0x6) && (Struct->Hdr->Length > 0x28) &&
-          (Struct->Type4->ProcessorFamily == 0xFE))
-      {
-        //
-        // Get family from ProcessorFamily2 field
-        //
-        DisplayProcessorFamily2 (Struct->Type4->ProcessorFamily2, Option);
-      } else {
-        DisplayProcessorFamily (Struct->Type4->ProcessorFamily, Option);
-      }
-
-      PRINT_PENDING_STRING (Struct, Type4, ProcessorManufacturer);
-      PRINT_BIT_FIELD (Struct, Type4, ProcessorId, 8);
-      PRINT_PENDING_STRING (Struct, Type4, ProcessorVersion);
+      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PROCESSOR_FAMILY), gShellDebug1HiiHandle);
+      DisplayProcessorFamily (Struct->Type4->ProcessorFamily, Option);
+      ShellPrintEx (-1, -1, L"Processor Manufacturer: %a\n", LibGetSmbiosString (Struct, Struct->Type4->ProcessorManufacturer));
+      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PROCESSOR_ID), gShellDebug1HiiHandle, 8);
+      DumpHex (0, 0, 8, &(Struct->Type4->ProcessorId));
+      ShellPrintEx (-1, -1, L"Processor Version: %a\n", LibGetSmbiosString (Struct, Struct->Type4->ProcessorVersion));
       DisplayProcessorVoltage (*(UINT8 *)&(Struct->Type4->Voltage), Option);
-      PRINT_STRUCT_VALUE (Struct, Type4, ExternalClock);
-      PRINT_STRUCT_VALUE (Struct, Type4, MaxSpeed);
-      PRINT_STRUCT_VALUE (Struct, Type4, CurrentSpeed);
+      ShellPrintEx (-1, -1, L"External Clock: %u\n", Struct->Type4->ExternalClock);
+      ShellPrintEx (-1, -1, L"Max Speed: %u\n", Struct->Type4->MaxSpeed);
+      ShellPrintEx (-1, -1, L"Current Speed: %u\n", Struct->Type4->CurrentSpeed);
       DisplayProcessorStatus (Struct->Type4->Status, Option);
       DisplayProcessorUpgrade (Struct->Type4->ProcessorUpgrade, Option);
-      PRINT_STRUCT_VALUE_H (Struct, Type4, L1CacheHandle);
-      PRINT_STRUCT_VALUE_H (Struct, Type4, L2CacheHandle);
-      PRINT_STRUCT_VALUE_H (Struct, Type4, L3CacheHandle);
+      ShellPrintEx (-1, -1, L"L1 Cache Handle: 0x%x\n", Struct->Type4->L1CacheHandle);
+      ShellPrintEx (-1, -1, L"L2 Cache Handle: 0x%x\n", Struct->Type4->L2CacheHandle);
+      ShellPrintEx (-1, -1, L"L3 Cache Handle: 0x%x\n", Struct->Type4->L3CacheHandle);
       if (AE_SMBIOS_VERSION (0x2, 0x3) && (Struct->Hdr->Length > 0x20)) {
-        PRINT_PENDING_STRING (Struct, Type4, SerialNumber);
-        PRINT_PENDING_STRING (Struct, Type4, AssetTag);
-        PRINT_PENDING_STRING (Struct, Type4, PartNumber);
+        ShellPrintEx (-1, -1, L"Serial Number: %a\n", LibGetSmbiosString (Struct, Struct->Type4->SerialNumber));
+        ShellPrintEx (-1, -1, L"Asset Tag: %a\n", LibGetSmbiosString (Struct, Struct->Type4->AssetTag));
+        ShellPrintEx (-1, -1, L"Part Number: %a\n", LibGetSmbiosString (Struct, Struct->Type4->PartNumber));
       }
 
       if (AE_SMBIOS_VERSION (0x2, 0x5) && (Struct->Hdr->Length > 0x23)) {
-        PRINT_STRUCT_VALUE (Struct, Type4, CoreCount);
-        PRINT_STRUCT_VALUE (Struct, Type4, EnabledCoreCount);
-        PRINT_STRUCT_VALUE (Struct, Type4, ThreadCount);
+        ShellPrintEx (-1, -1, L"Core Count: %u\n", Struct->Type4->CoreCount);
+        ShellPrintEx (-1, -1, L"Core Enabled: %u\n", Struct->Type4->EnabledCoreCount);
+        ShellPrintEx (-1, -1, L"Thread Count: %u\n", Struct->Type4->ThreadCount);
         DisplayProcessorCharacteristics (Struct->Type4->ProcessorCharacteristics, Option);
       }
 
+      if (AE_SMBIOS_VERSION (0x2, 0x6) && (Struct->Hdr->Length > 0x28) &&
+          (Struct->Type4->ProcessorFamily2 >= 0x100))
+      {
+        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PROCESSOR_FAMILY2), gShellDebug1HiiHandle);
+        DisplayProcessorFamily2 (Struct->Type4->ProcessorFamily2, Option);
+      } else {
+        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PROCESSOR_FAMILY2), gShellDebug1HiiHandle);
+        DisplayProcessorFamily (Struct->Type4->ProcessorFamily, Option);
+      }
+
       if ((SmbiosMajorVersion >= 0x3) && (Struct->Hdr->Length > 0x2A)) {
-        PRINT_STRUCT_VALUE (Struct, Type4, CoreCount2);
-        PRINT_STRUCT_VALUE (Struct, Type4, EnabledCoreCount2);
-        PRINT_STRUCT_VALUE (Struct, Type4, ThreadCount2);
+        ShellPrintEx (-1, -1, L"Core Count 2: %u\n", Struct->Type4->CoreCount2);
+        ShellPrintEx (-1, -1, L"Core Enabled 2: %u\n", Struct->Type4->EnabledCoreCount2);
+        ShellPrintEx (-1, -1, L"Thread Count 2: %u\n", Struct->Type4->ThreadCount2);
       }
 
       break;
@@ -829,68 +831,68 @@ SmbiosPrintStructure (
     // Memory Device (Type 17)
     //
     case 17:
-      PRINT_STRUCT_VALUE_H (Struct, Type17, MemoryArrayHandle);
-      PRINT_STRUCT_VALUE_H (Struct, Type17, MemoryErrorInformationHandle);
-      PRINT_STRUCT_VALUE_H (Struct, Type17, TotalWidth);
-      PRINT_STRUCT_VALUE_H (Struct, Type17, DataWidth);
+      ShellPrintEx (-1, -1, L"Physical Memory Array Handle: 0x%x\n", Struct->Type17->MemoryArrayHandle);
+      ShellPrintEx (-1, -1, L"Memory Error Information Handle: 0x%x\n", Struct->Type17->MemoryErrorInformationHandle);
+      ShellPrintEx (-1, -1, L"Total Width: 0x%x\n", Struct->Type17->TotalWidth);
+      ShellPrintEx (-1, -1, L"Data Width: 0x%x\n", Struct->Type17->DataWidth);
       PRINT_STRUCT_VALUE (Struct, Type17, Size);
       DisplayMemoryDeviceFormFactor (Struct->Type17->FormFactor, Option);
-      PRINT_STRUCT_VALUE_H (Struct, Type17, DeviceSet);
-      PRINT_PENDING_STRING (Struct, Type17, DeviceLocator);
-      PRINT_PENDING_STRING (Struct, Type17, BankLocator);
+      ShellPrintEx (-1, -1, L"Device Set: 0x%x\n", Struct->Type17->DeviceSet);
+      ShellPrintEx (-1, -1, L"Device Locator: %a\n", LibGetSmbiosString(Struct, Struct->Type17->DeviceLocator));
+      ShellPrintEx (-1, -1, L"Bank Locator: %a\n", LibGetSmbiosString(Struct, Struct->Type17->BankLocator));
       DisplayMemoryDeviceType (Struct->Type17->MemoryType, Option);
       DisplayMemoryDeviceTypeDetail (ReadUnaligned16 ((UINT16 *)(UINTN)&(Struct->Type17->TypeDetail)), Option);
       PRINT_STRUCT_VALUE_H (Struct, Type17, Speed);
       PRINT_PENDING_STRING (Struct, Type17, Manufacturer);
-      PRINT_PENDING_STRING (Struct, Type17, SerialNumber);
-      PRINT_PENDING_STRING (Struct, Type17, AssetTag);
-      PRINT_PENDING_STRING (Struct, Type17, PartNumber);
+      ShellPrintEx (-1, -1, L"Serial Number: %a\n", LibGetSmbiosString(Struct, Struct->Type17->SerialNumber));
+      ShellPrintEx (-1, -1, L"Asset Tag: %a\n", LibGetSmbiosString(Struct, Struct->Type17->AssetTag));
+      ShellPrintEx (-1, -1, L"Part Number: %a\n", LibGetSmbiosString(Struct, Struct->Type17->PartNumber));
       if (AE_SMBIOS_VERSION (0x2, 0x6) && (Struct->Hdr->Length > 0x1B)) {
         PRINT_STRUCT_VALUE_H (Struct, Type17, Attributes);
       }
 
       if (AE_SMBIOS_VERSION (0x2, 0x7) && (Struct->Hdr->Length > 0x1C)) {
-        PRINT_STRUCT_VALUE (Struct, Type17, ExtendedSize);
-        PRINT_STRUCT_VALUE_H (Struct, Type17, ConfiguredMemoryClockSpeed);
+        ShellPrintEx (-1, -1, L"Extended Size: %u\n", Struct->Type17->ExtendedSize);
+        ShellPrintEx (-1, -1, L"Configured Memory Speed: 0x%x\n", Struct->Type17->ConfiguredMemoryClockSpeed);
       }
 
       if (AE_SMBIOS_VERSION (0x2, 0x8) && (Struct->Hdr->Length > 0x22)) {
-        PRINT_STRUCT_VALUE (Struct, Type17, MinimumVoltage);
-        PRINT_STRUCT_VALUE (Struct, Type17, MaximumVoltage);
-        PRINT_STRUCT_VALUE (Struct, Type17, ConfiguredVoltage);
+        ShellPrintEx (-1, -1, L"Minimum voltage: %u\n", Struct->Type17->MinimumVoltage);
+        ShellPrintEx (-1, -1, L"Maximum voltage: %u\n", Struct->Type17->MaximumVoltage);
+        ShellPrintEx (-1, -1, L"Configured voltage: %u\n", Struct->Type17->ConfiguredVoltage);
       }
 
       if (AE_SMBIOS_VERSION (0x3, 0x2)) {
         if (Struct->Hdr->Length > 0x28) {
           DisplayMemoryDeviceMemoryTechnology (Struct->Type17->MemoryTechnology, Option);
           DisplayMemoryDeviceMemoryOperatingModeCapability (Struct->Type17->MemoryOperatingModeCapability.Uint16, Option);
-          PRINT_PENDING_STRING (Struct, Type17, FirmwareVersion);
-          PRINT_STRUCT_VALUE_H (Struct, Type17, ModuleManufacturerID);
-          PRINT_STRUCT_VALUE_H (Struct, Type17, ModuleProductID);
-          PRINT_STRUCT_VALUE_H (Struct, Type17, MemorySubsystemControllerManufacturerID);
-          PRINT_STRUCT_VALUE_H (Struct, Type17, MemorySubsystemControllerProductID);
+          ShellPrintEx (-1, -1, L"Firmware Version: %a\n", LibGetSmbiosString(Struct, Struct->Type17->FirmwareVersion));
+          ShellPrintEx (-1, -1, L"Module Manufacturer ID: 0x%x\n", Struct->Type17->ModuleManufacturerID);
+          ShellPrintEx (-1, -1, L"Module Product ID: 0x%x\n", Struct->Type17->ModuleProductID);
+          ShellPrintEx (-1, -1, L"Memory Subsystem Controller Manufacturer ID: 0x%x\n", Struct->Type17->MemorySubsystemControllerManufacturerID);
+          ShellPrintEx (-1, -1, L"Memory Subsystem Controller Product ID: 0x%x\n", Struct->Type17->MemorySubsystemControllerProductID);
         }
 
         if (Struct->Hdr->Length > 0x34) {
-          PRINT_STRUCT_VALUE_LH (Struct, Type17, NonVolatileSize);
+          ShellPrintEx (-1, -1, L"Non-volatile Size: 0x%lx\n", Struct->Type17->NonVolatileSize);
         }
 
         if (Struct->Hdr->Length > 0x3C) {
-          PRINT_STRUCT_VALUE_LH (Struct, Type17, VolatileSize);
+          ShellPrintEx (-1, -1, L"Volatile Size: 0x%lx\n", Struct->Type17->VolatileSize);
         }
 
         if (Struct->Hdr->Length > 0x44) {
-          PRINT_STRUCT_VALUE_LH (Struct, Type17, CacheSize);
+          ShellPrintEx (-1, -1, L"Cache Size: 0x%lx\n", Struct->Type17->CacheSize);
         }
 
         if (Struct->Hdr->Length > 0x4C) {
-          PRINT_STRUCT_VALUE_LH (Struct, Type17, LogicalSize);
+          ShellPrintEx (-1, -1, L"Logical Size: 0x%lx\n", Struct->Type17->LogicalSize);
         }
       }
 
       if (AE_SMBIOS_VERSION (0x3, 0x3) && (Struct->Hdr->Length > 0x54)) {
-        PRINT_STRUCT_VALUE_H (Struct, Type17, ExtendedSpeed);
-        PRINT_STRUCT_VALUE_H (Struct, Type17, ExtendedConfiguredMemorySpeed);
+        ShellPrintEx (-1, -1, L"Extended Speed: 0x%x\n", Struct->Type17->ExtendedSpeed);
+        ShellPrintEx (-1, -1, L"Extended Configured Memory Speed: 0x%x\n", Struct->Type17->ExtendedConfiguredMemorySpeed);
       }
 
       break;
@@ -1258,13 +1260,13 @@ SmbiosPrintStructure (
     // Onboard Devices Extended Information (Type 41)
     //
     case 41:
-      PRINT_PENDING_STRING (Struct, Type41, ReferenceDesignation);
+      ShellPrintEx (-1, -1, L"Reference Designation: %a\n", LibGetSmbiosString (Struct, Struct->Type41->ReferenceDesignation));
       ShellPrintEx (-1, -1, (((Struct->Type41->DeviceType) & 0x80) != 0) ? L"Device Enabled\n" : L"Device Disabled\n");
       DisplayOnboardDeviceTypes ((Struct->Type41->DeviceType) & 0x7F, Option);
-      PRINT_STRUCT_VALUE_H (Struct, Type41, DeviceTypeInstance);
-      PRINT_STRUCT_VALUE_H (Struct, Type41, SegmentGroupNum);
-      PRINT_STRUCT_VALUE_H (Struct, Type41, BusNum);
-      PRINT_STRUCT_VALUE_H (Struct, Type41, DevFuncNum);
+      ShellPrintEx (-1, -1, L"Device Type Instance: 0x%x\n", Struct->Type41->DeviceTypeInstance);
+      ShellPrintEx (-1, -1, L"Segment Group Number: 0x%x\n", Struct->Type41->SegmentGroupNum);
+      ShellPrintEx (-1, -1, L"Bus Number: 0x%x\n", Struct->Type41->BusNum);
+      ShellPrintEx (-1, -1, L"Device/Function Number: 0x%x\n", Struct->Type41->DevFuncNum);
       break;
 
     //
@@ -1606,10 +1608,6 @@ DisplayProcessorFamily (
   UINT8  Option
   )
 {
-  //
-  // Print prompt message
-  //
-  ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PROCESSOR_FAMILY), gShellDebug1HiiHandle);
   //
   // Print option
   //
@@ -2411,6 +2409,10 @@ DisplayProcessorFamily (
       Print (L"i960\n");
       break;
 
+    case 0xFE:
+      Print (L"Indicator to obtain the processor family from the Processor Family 2 field\n");
+      break;
+
     default:
       ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNDEFINED_PROC_FAMILY), gShellDebug1HiiHandle);
   }
@@ -2432,11 +2434,6 @@ DisplayProcessorFamily2 (
   IN UINT8   Option
   )
 {
-  //
-  // Print prompt message
-  //
-  ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PROCESSOR_FAMILY), gShellDebug1HiiHandle);
-
   //
   // Print option
   //
diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/SmbiosViewStrings.uni b/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/SmbiosViewStrings.uni
index 05f7a61d9d..73f7b2ab19 100644
--- a/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/SmbiosViewStrings.uni
+++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/SmbiosViewStrings.uni
@@ -88,8 +88,8 @@
 #string STR_SMBIOSVIEW_PRINTINFO_FORMATTED_AREA                 #language en-US "Formatted Area:  \r\n"
 #string STR_SMBIOSVIEW_PRINTINFO_INTER_ACHOR                    #language en-US "Inter Anchor:         %a\r\n"
 #string STR_SMBIOSVIEW_PRINTINFO_INTER_CHECKSUM                 #language en-US "Inter Checksum:       0x%x\r\n"
-#string STR_SMBIOSVIEW_PRINTINFO_FORMAT_PART_LEN                #language en-US "Format part Len : %d\r\n"
-#string STR_SMBIOSVIEW_PRINTINFO_STRUCT_HANDLE                  #language en-US "Structure Handle: %d\r\n"
+#string STR_SMBIOSVIEW_PRINTINFO_FORMAT_PART_LEN                #language en-US "Length: %d\r\n"
+#string STR_SMBIOSVIEW_PRINTINFO_STRUCT_HANDLE                  #language en-US "Handle: %d\r\n"
 #string STR_SMBIOSVIEW_PRINTINFO_BOOTUP_STATE                   #language en-US "Bootup state "
 #string STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_STATE             #language en-US "Power Supply State "
 #string STR_SMBIOSVIEW_PRINTINFO_THERMAL_STATE                  #language en-US "Thermal state "
@@ -168,6 +168,8 @@
 #string STR_SMBIOSVIEW_PRINTINFO_MCFG_ENABLED                   #language en-US "Manufacturing mode is enabled\r\n"
 #string STR_SMBIOSVIEW_PRINTINFO_BITS_RSVD_FOR_FUTURE           #language en-US " Bits %d:7 are reserved for future assignment\r\n"
 #string STR_SMBIOSVIEW_PRINTINFO_PROCESSOR_FAMILY               #language en-US "Processor Family: "
+#string STR_SMBIOSVIEW_PRINTINFO_PROCESSOR_ID                   #language en-US "Processor ID\r\nsize=%d:\r\n"
+#string STR_SMBIOSVIEW_PRINTINFO_PROCESSOR_FAMILY2              #language en-US "Processor Family 2: "
 #string STR_SMBIOSVIEW_PRINTINFO_OTHER                          #language en-US "Other\r\n"
 #string STR_SMBIOSVIEW_PRINTINFO_UNKNOWN                        #language en-US "Unknown\r\n"
 #string STR_SMBIOSVIEW_PRINTINFO_INTEL386_PROCESSOR             #language en-US "Intel386(TM) Processor\r\n"
@@ -255,7 +257,7 @@
 #string STR_SMBIOSVIEW_PRINTINFO_RSVD_FOR_SPEC_K5               #language en-US "Reserved for specific K5 versions\r\n"
 #string STR_SMBIOSVIEW_PRINTINFO_RSVD_FOR_SPEC_PENTIUM          #language en-US "Reserved for specific Pentium(R) Processor versions\r\n"
 #string STR_SMBIOSVIEW_PRINTINFO_UNDEFINED_PROC_FAMILY          #language en-US "Undefined processor family and type\r\n"
-#string STR_SMBIOSVIEW_PRINTINFO_PROC_INFO                      #language en-US "Processor Information -  Voltage:\r\n"
+#string STR_SMBIOSVIEW_PRINTINFO_PROC_INFO                      #language en-US "Voltage:\r\n"
 #string STR_SMBIOSVIEW_PRINTINFO_PROC_CURRENT_VOLTAGE           #language en-US "Processor current voltage = (%d/10)V\r\n"
 #string STR_SMBIOSVIEW_PRINTINFO_5V_SUPOPRTED                   #language en-US " 5V is supported\r\n"
 #string STR_SMBIOSVIEW_PRINTINFO_33V_SUPPORTED                  #language en-US " 3.3V is supported\r\n"
@@ -271,7 +273,7 @@
 #string STR_SMBIOSVIEW_PRINTINFO_BIT13_NOT_ZERO                 #language en-US "Error, reserved BIT 13 must be zero\r\n"
 #string STR_SMBIOSVIEW_PRINTINFO_BIT14_NOT_ZERO                 #language en-US "Error, reserved BIT 14 must be zero\r\n"
 #string STR_SMBIOSVIEW_PRINTINFO_BIT15_NOT_ZERO                 #language en-US "Error, reserved BIT 15 must be zero\r\n"
-#string STR_SMBIOSVIEW_PRINTINFO_PROC_STATUS                    #language en-US "Processor Status:\r\n"
+#string STR_SMBIOSVIEW_PRINTINFO_PROC_STATUS                    #language en-US "Status:\r\n"
 #string STR_SMBIOSVIEW_PRINTINFO_CPU_SOCKET_POPULATED           #language en-US "CPU Socket Populated\r\n"
 #string STR_SMBIOSVIEW_PRINTINFO_CPU_SOCKET_UNPOPULATED         #language en-US "CPU Socket Unpopulated\r\n"
 #string STR_SMBIOSVIEW_PRINTINFO_CPU_ENABLED                    #language en-US "CPU Enabled\r\n"
@@ -382,8 +384,8 @@
 #string STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_NOT_PRESENT       #language en-US "Power supply is not present\r\n"
 #string STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_REPLACE           #language en-US "Power supply is hot replaceable\r\n"
 #string STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_NOT_REPLACE       #language en-US "Power supply is not hot replaceable\r\n"
-#string STR_SMBIOSVIEW_PRINTINFO_BIOS_SIZE                      #language en-US "BiosSize:  %d KB\r\n"
-#string STR_SMBIOSVIEW_PRINTINFO_EXTENDED_BIOS_SIZE             #language en-US "ExtendedBiosSize:  %d %s\r\n"
+#string STR_SMBIOSVIEW_PRINTINFO_BIOS_SIZE                      #language en-US "BIOS ROM Size:  %d KB\r\n"
+#string STR_SMBIOSVIEW_PRINTINFO_EXTENDED_BIOS_SIZE             #language en-US "Extended BIOS ROM Size:  %d %s\r\n"
 #string STR_SMBIOSVIEW_QUERYTABLE_NO_INFO                       #language en-US "No Info"
 #string STR_SMBIOSVIEW_QUERYTABLE_RSVD_BITS_SET                 #language en-US "\r\nIt also has reserved bits set 1 --- reserved bits: 0x%x"
 #string STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_WAKEUP_TYPE            #language en-US "System Wakeup Type:"
@@ -419,7 +421,7 @@
 #string STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_SLOT_HEIGHT            #language en-US "System Slot Height: "
 #string STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_SLOT_PHYSICAL_WIDTH    #language en-US "System Slot Physical Width: "
 #string STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_SLOT_PITCH             #language en-US "System Slot Pitch: %d\r\n"
-#string STR_SMBIOSVIEW_QUERYTABLE_ONBOARD_DEVICE_TYPE           #language en-US "Onboard Device Type: "
+#string STR_SMBIOSVIEW_QUERYTABLE_ONBOARD_DEVICE_TYPE           #language en-US "Device Type: "
 #string STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_EVENT_LOG_TYPE         #language en-US "System Event Log Type: "
 #string STR_SMBIOSVIEW_QUERYTABLE_EVENT_LOG_VAR_DATA_FORMAT     #language en-US "Event Log Variable Data Format Types: "
 #string STR_SMBIOSVIEW_QUERYTABLE_POST_RESULTS_BITMAP           #language en-US "POST Results Bitmap - First DWORD:\r\n"
@@ -431,11 +433,11 @@
 #string STR_SMBIOSVIEW_QUERYTABLE_PHYS_MEM_ARRAY_LOCATION       #language en-US "Physical Memory Array Location: "
 #string STR_SMBIOSVIEW_QUERYTABLE_PHYS_MEM_ARRAY_USE            #language en-US "Physical Memory Array Use: "
 #string STR_SMBIOSVIEW_QUERYTABLE_PHYS_MEM_ARRAY_ERROR          #language en-US "Physical Memory Array Error Correction Types: "
-#string STR_SMBIOSVIEW_QUERYTABLE_MEM_DEVICE_FORM_FACTOR        #language en-US "Memory Device - Form Factor: "
-#string STR_SMBIOSVIEW_QUERYTABLE_MEM_DEVICE_TYPE               #language en-US "Memory Device - Type: "
-#string STR_SMBIOSVIEW_QUERYTABLE_MEM_DEVICE_TYPE_DETAIL        #language en-US "Memory Device - Type Detail: "
-#string STR_SMBIOSVIEW_QUERYTABLE_MEM_DEVICE_MEMORY_TECHNOLOGY  #language en-US "Memory Device - Memory Technology: "
-#string STR_SMBIOSVIEW_QUERYTABLE_MEM_DEVICE_MEM_OPER_MODE_CAPA #language en-US "Memory Device - Memory Operating Mode Capability: "
+#string STR_SMBIOSVIEW_QUERYTABLE_MEM_DEVICE_FORM_FACTOR        #language en-US "Form Factor: "
+#string STR_SMBIOSVIEW_QUERYTABLE_MEM_DEVICE_TYPE               #language en-US "Memory Type: "
+#string STR_SMBIOSVIEW_QUERYTABLE_MEM_DEVICE_TYPE_DETAIL        #language en-US "Type Detail: "
+#string STR_SMBIOSVIEW_QUERYTABLE_MEM_DEVICE_MEMORY_TECHNOLOGY  #language en-US "Memory Technology: "
+#string STR_SMBIOSVIEW_QUERYTABLE_MEM_DEVICE_MEM_OPER_MODE_CAPA #language en-US "Memory Operating Mode Capability: "
 #string STR_SMBIOSVIEW_QUERYTABLE_MEM_ERROR_INFO                #language en-US "32-bit Memory Error Information - Type: "
 #string STR_SMBIOSVIEW_QUERYTABLE_MEM_ERROR_GRANULARITY         #language en-US "Memory Error - Error granularity: "
 #string STR_SMBIOSVIEW_QUERYTABLE_MEM_ERROR_OP                  #language en-US "Memory Error - Error Operation: "
@@ -454,7 +456,7 @@
 #string STR_SMBIOSVIEW_QUERYTABLE_MEM_CHANNEL_TYPE              #language en-US "Memory Channel Type:"
 #string STR_SMBIOSVIEW_QUERYTABLE_BMC_INTERFACE_TYPE            #language en-US "BMC Interface Type:"
 #string STR_SMBIOSVIEW_QUERYTABLE_MC_HOST_INTERFACE_TYPE        #language en-US "MC Host Interface Type:"
-#string STR_SMBIOSVIEW_QUERYTABLE_STRUCT_TYPE                   #language en-US "Structure Type:"
+#string STR_SMBIOSVIEW_QUERYTABLE_STRUCT_TYPE                   #language en-US "Type:"
 #string STR_SMBIOSVIEW_QUERYTABLE_PROCESSOR_ARCH_TYPE           #language en-US "Processor Architecture Type:"
 #string STR_SMBIOSVIEW_SMBIOSVIEW_ONE_VAR_ARGV                  #language en-US "%s "
 #string STR_SMBIOSVIEW_SMBIOSVIEW_QUERY_STRUCT_COND             #language en-US "Query Structure, conditions are:\r\n"
-- 
2.39.1.windows.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#101146): https://edk2.groups.io/g/devel/message/101146
Mute This Topic: https://groups.io/mt/97587620/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
Re: [edk2-devel] [PATCH] ShellPkg: Update smbiosview type 0/4/17/41 with SMBIOS 3.5 fields
Posted by Gao, Zhichao 11 months, 3 weeks ago

> -----Original Message-----
> From: Lin, MillerX <millerx.lin@intel.com>
> Sent: Monday, March 13, 2023 10:30 AM
> To: devel@edk2.groups.io
> Cc: Lin, MillerX <millerx.lin@intel.com>; Ni, Ray <ray.ni@intel.com>; Gao,
> Zhichao <zhichao.gao@intel.com>
> Subject: [PATCH] ShellPkg: Update smbiosview type 0/4/17/41 with SMBIOS
> 3.5 fields
> 
> Cc: Signed-off-by: MillerX Lin <millerx.lin@intel.com>
> Cc: Ray Ni <ray.ni@intel.com>
> Cc: Zhichao Gao <zhichao.gao@intel.com>
> 
> ---
>  .../SmbiosView/PrintInfo.c                    | 153 +++++++++---------
>  .../SmbiosView/SmbiosViewStrings.uni          |  28 ++--
>  2 files changed, 90 insertions(+), 91 deletions(-)
> 
> diff --git
> a/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.c
> b/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.c
> index 2611601230..de9cc8becd 100644
> ---
> a/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.c
> +++
> b/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.c
> @@ -335,10 +335,10 @@ SmbiosPrintStructure (
>      // BIOS Information (Type 0)
>      //
>      case 0:
> -      PRINT_PENDING_STRING (Struct, Type0, Vendor);
> -      PRINT_PENDING_STRING (Struct, Type0, BiosVersion);
> -      PRINT_STRUCT_VALUE_H (Struct, Type0, BiosSegment);
> -      PRINT_PENDING_STRING (Struct, Type0, BiosReleaseDate);
> +      ShellPrintEx (-1, -1, L"Vendor: %a\n", LibGetSmbiosString (Struct, Struct-
> >Type0->Vendor));
> +      ShellPrintEx (-1, -1, L"BIOS Version: %a\n", LibGetSmbiosString (Struct,
> Struct->Type0->BiosVersion));
> +      ShellPrintEx (-1, -1, L"BIOS Starting Address Segment: 0x%x\n", Struct-
> >Type0->BiosSegment);
> +      ShellPrintEx (-1, -1, L"BIOS Release Date: %a\n",
> + LibGetSmbiosString (Struct, Struct->Type0->BiosReleaseDate));
>        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN
> (STR_SMBIOSVIEW_PRINTINFO_BIOS_SIZE), gShellDebug1HiiHandle, 64 *
> (Struct->Type0->BiosSize + 1));
> 
>        DisplayBiosCharacteristics (ReadUnaligned64 ((UINT64
> *)(UINTN)&(Struct->Type0->BiosCharacteristics)), Option); @@ -352,10
> +352,10 @@ SmbiosPrintStructure (
>        }
> 
>        if (AE_SMBIOS_VERSION (0x2, 0x4) && (Struct->Hdr->Length > 0x14)) {
> -        PRINT_STRUCT_VALUE (Struct, Type0, SystemBiosMajorRelease);
> -        PRINT_STRUCT_VALUE (Struct, Type0, SystemBiosMinorRelease);
> -        PRINT_STRUCT_VALUE (Struct, Type0,
> EmbeddedControllerFirmwareMajorRelease);
> -        PRINT_STRUCT_VALUE (Struct, Type0,
> EmbeddedControllerFirmwareMinorRelease);
> +        ShellPrintEx (-1, -1, L"System BIOS Major Release: %u\n", Struct-
> >Type0->SystemBiosMajorRelease);
> +        ShellPrintEx (-1, -1, L"System BIOS Minor Release: %u\n", Struct-
> >Type0->SystemBiosMinorRelease);
> +        ShellPrintEx (-1, -1, L"Embedded Controller Firmware Major
> Release: %u\n", Struct->Type0-
> >EmbeddedControllerFirmwareMajorRelease);
> +        ShellPrintEx (-1, -1, L"Embedded Controller Firmware Minor
> + Release: %u\n",
> + Struct->Type0->EmbeddedControllerFirmwareMinorRelease);
>        }
> 
>        if (AE_SMBIOS_VERSION (0x3, 0x1) && (Struct->Hdr->Length > 0x18))
> { @@ -470,48 +470,50 @@ SmbiosPrintStructure (
>      // Processor Information (Type 4)
>      //
>      case 4:
> -      PRINT_SMBIOS_STRING (Struct, Struct->Type4->Socket,
> SocketDesignation)
> +      ShellPrintEx (-1, -1, L"Socket Designation: %a\n",
> + LibGetSmbiosString (Struct, Struct->Type4->Socket));
>        DisplayProcessorType (Struct->Type4->ProcessorType, Option);
> -      if (AE_SMBIOS_VERSION (0x2, 0x6) && (Struct->Hdr->Length > 0x28) &&
> -          (Struct->Type4->ProcessorFamily == 0xFE))
> -      {
> -        //
> -        // Get family from ProcessorFamily2 field
> -        //
> -        DisplayProcessorFamily2 (Struct->Type4->ProcessorFamily2, Option);
> -      } else {
> -        DisplayProcessorFamily (Struct->Type4->ProcessorFamily, Option);
> -      }
> -
> -      PRINT_PENDING_STRING (Struct, Type4, ProcessorManufacturer);
> -      PRINT_BIT_FIELD (Struct, Type4, ProcessorId, 8);
> -      PRINT_PENDING_STRING (Struct, Type4, ProcessorVersion);
> +      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN
> (STR_SMBIOSVIEW_PRINTINFO_PROCESSOR_FAMILY),
> gShellDebug1HiiHandle);
> +      DisplayProcessorFamily (Struct->Type4->ProcessorFamily, Option);
> +      ShellPrintEx (-1, -1, L"Processor Manufacturer: %a\n",
> LibGetSmbiosString (Struct, Struct->Type4->ProcessorManufacturer));
> +      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN
> (STR_SMBIOSVIEW_PRINTINFO_PROCESSOR_ID), gShellDebug1HiiHandle, 8);
> +      DumpHex (0, 0, 8, &(Struct->Type4->ProcessorId));
> +      ShellPrintEx (-1, -1, L"Processor Version: %a\n",
> + LibGetSmbiosString (Struct, Struct->Type4->ProcessorVersion));
>        DisplayProcessorVoltage (*(UINT8 *)&(Struct->Type4->Voltage), Option);
> -      PRINT_STRUCT_VALUE (Struct, Type4, ExternalClock);
> -      PRINT_STRUCT_VALUE (Struct, Type4, MaxSpeed);
> -      PRINT_STRUCT_VALUE (Struct, Type4, CurrentSpeed);
> +      ShellPrintEx (-1, -1, L"External Clock: %u\n", Struct->Type4-
> >ExternalClock);
> +      ShellPrintEx (-1, -1, L"Max Speed: %u\n", Struct->Type4->MaxSpeed);
> +      ShellPrintEx (-1, -1, L"Current Speed: %u\n",
> + Struct->Type4->CurrentSpeed);
>        DisplayProcessorStatus (Struct->Type4->Status, Option);
>        DisplayProcessorUpgrade (Struct->Type4->ProcessorUpgrade, Option);
> -      PRINT_STRUCT_VALUE_H (Struct, Type4, L1CacheHandle);
> -      PRINT_STRUCT_VALUE_H (Struct, Type4, L2CacheHandle);
> -      PRINT_STRUCT_VALUE_H (Struct, Type4, L3CacheHandle);
> +      ShellPrintEx (-1, -1, L"L1 Cache Handle: 0x%x\n", Struct->Type4-
> >L1CacheHandle);
> +      ShellPrintEx (-1, -1, L"L2 Cache Handle: 0x%x\n", Struct->Type4-
> >L2CacheHandle);
> +      ShellPrintEx (-1, -1, L"L3 Cache Handle: 0x%x\n",
> + Struct->Type4->L3CacheHandle);
>        if (AE_SMBIOS_VERSION (0x2, 0x3) && (Struct->Hdr->Length > 0x20)) {
> -        PRINT_PENDING_STRING (Struct, Type4, SerialNumber);
> -        PRINT_PENDING_STRING (Struct, Type4, AssetTag);
> -        PRINT_PENDING_STRING (Struct, Type4, PartNumber);
> +        ShellPrintEx (-1, -1, L"Serial Number: %a\n", LibGetSmbiosString (Struct,
> Struct->Type4->SerialNumber));
> +        ShellPrintEx (-1, -1, L"Asset Tag: %a\n", LibGetSmbiosString (Struct,
> Struct->Type4->AssetTag));
> +        ShellPrintEx (-1, -1, L"Part Number: %a\n", LibGetSmbiosString
> + (Struct, Struct->Type4->PartNumber));
>        }
> 
>        if (AE_SMBIOS_VERSION (0x2, 0x5) && (Struct->Hdr->Length > 0x23)) {
> -        PRINT_STRUCT_VALUE (Struct, Type4, CoreCount);
> -        PRINT_STRUCT_VALUE (Struct, Type4, EnabledCoreCount);
> -        PRINT_STRUCT_VALUE (Struct, Type4, ThreadCount);
> +        ShellPrintEx (-1, -1, L"Core Count: %u\n", Struct->Type4->CoreCount);
> +        ShellPrintEx (-1, -1, L"Core Enabled: %u\n", Struct->Type4-
> >EnabledCoreCount);
> +        ShellPrintEx (-1, -1, L"Thread Count: %u\n",
> + Struct->Type4->ThreadCount);
>          DisplayProcessorCharacteristics (Struct->Type4-
> >ProcessorCharacteristics, Option);
>        }
> 
> +      if (AE_SMBIOS_VERSION (0x2, 0x6) && (Struct->Hdr->Length > 0x28) &&
> +          (Struct->Type4->ProcessorFamily2 >= 0x100))
> +      {
> +        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN
> (STR_SMBIOSVIEW_PRINTINFO_PROCESSOR_FAMILY2),
> gShellDebug1HiiHandle);
> +        DisplayProcessorFamily2 (Struct->Type4->ProcessorFamily2, Option);
> +      } else {
> +        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN
> (STR_SMBIOSVIEW_PRINTINFO_PROCESSOR_FAMILY2),
> gShellDebug1HiiHandle);
This should be family instead of family2.
Others look good to me.

Thanks,
Zhichao

> +        DisplayProcessorFamily (Struct->Type4->ProcessorFamily, Option);
> +      }
> +
>        if ((SmbiosMajorVersion >= 0x3) && (Struct->Hdr->Length > 0x2A)) {
> -        PRINT_STRUCT_VALUE (Struct, Type4, CoreCount2);
> -        PRINT_STRUCT_VALUE (Struct, Type4, EnabledCoreCount2);
> -        PRINT_STRUCT_VALUE (Struct, Type4, ThreadCount2);
> +        ShellPrintEx (-1, -1, L"Core Count 2: %u\n", Struct->Type4-
> >CoreCount2);
> +        ShellPrintEx (-1, -1, L"Core Enabled 2: %u\n", Struct->Type4-
> >EnabledCoreCount2);
> +        ShellPrintEx (-1, -1, L"Thread Count 2: %u\n",
> + Struct->Type4->ThreadCount2);
>        }
> 
>        break;
> @@ -829,68 +831,68 @@ SmbiosPrintStructure (
>      // Memory Device (Type 17)
>      //
>      case 17:
> -      PRINT_STRUCT_VALUE_H (Struct, Type17, MemoryArrayHandle);
> -      PRINT_STRUCT_VALUE_H (Struct, Type17,
> MemoryErrorInformationHandle);
> -      PRINT_STRUCT_VALUE_H (Struct, Type17, TotalWidth);
> -      PRINT_STRUCT_VALUE_H (Struct, Type17, DataWidth);
> +      ShellPrintEx (-1, -1, L"Physical Memory Array Handle: 0x%x\n", Struct-
> >Type17->MemoryArrayHandle);
> +      ShellPrintEx (-1, -1, L"Memory Error Information Handle: 0x%x\n",
> Struct->Type17->MemoryErrorInformationHandle);
> +      ShellPrintEx (-1, -1, L"Total Width: 0x%x\n", Struct->Type17->TotalWidth);
> +      ShellPrintEx (-1, -1, L"Data Width: 0x%x\n",
> + Struct->Type17->DataWidth);
>        PRINT_STRUCT_VALUE (Struct, Type17, Size);
>        DisplayMemoryDeviceFormFactor (Struct->Type17->FormFactor, Option);
> -      PRINT_STRUCT_VALUE_H (Struct, Type17, DeviceSet);
> -      PRINT_PENDING_STRING (Struct, Type17, DeviceLocator);
> -      PRINT_PENDING_STRING (Struct, Type17, BankLocator);
> +      ShellPrintEx (-1, -1, L"Device Set: 0x%x\n", Struct->Type17->DeviceSet);
> +      ShellPrintEx (-1, -1, L"Device Locator: %a\n", LibGetSmbiosString(Struct,
> Struct->Type17->DeviceLocator));
> +      ShellPrintEx (-1, -1, L"Bank Locator: %a\n",
> + LibGetSmbiosString(Struct, Struct->Type17->BankLocator));
>        DisplayMemoryDeviceType (Struct->Type17->MemoryType, Option);
>        DisplayMemoryDeviceTypeDetail (ReadUnaligned16 ((UINT16
> *)(UINTN)&(Struct->Type17->TypeDetail)), Option);
>        PRINT_STRUCT_VALUE_H (Struct, Type17, Speed);
>        PRINT_PENDING_STRING (Struct, Type17, Manufacturer);
> -      PRINT_PENDING_STRING (Struct, Type17, SerialNumber);
> -      PRINT_PENDING_STRING (Struct, Type17, AssetTag);
> -      PRINT_PENDING_STRING (Struct, Type17, PartNumber);
> +      ShellPrintEx (-1, -1, L"Serial Number: %a\n", LibGetSmbiosString(Struct,
> Struct->Type17->SerialNumber));
> +      ShellPrintEx (-1, -1, L"Asset Tag: %a\n", LibGetSmbiosString(Struct,
> Struct->Type17->AssetTag));
> +      ShellPrintEx (-1, -1, L"Part Number: %a\n",
> + LibGetSmbiosString(Struct, Struct->Type17->PartNumber));
>        if (AE_SMBIOS_VERSION (0x2, 0x6) && (Struct->Hdr->Length > 0x1B)) {
>          PRINT_STRUCT_VALUE_H (Struct, Type17, Attributes);
>        }
> 
>        if (AE_SMBIOS_VERSION (0x2, 0x7) && (Struct->Hdr->Length > 0x1C)) {
> -        PRINT_STRUCT_VALUE (Struct, Type17, ExtendedSize);
> -        PRINT_STRUCT_VALUE_H (Struct, Type17,
> ConfiguredMemoryClockSpeed);
> +        ShellPrintEx (-1, -1, L"Extended Size: %u\n", Struct->Type17-
> >ExtendedSize);
> +        ShellPrintEx (-1, -1, L"Configured Memory Speed: 0x%x\n",
> + Struct->Type17->ConfiguredMemoryClockSpeed);
>        }
> 
>        if (AE_SMBIOS_VERSION (0x2, 0x8) && (Struct->Hdr->Length > 0x22)) {
> -        PRINT_STRUCT_VALUE (Struct, Type17, MinimumVoltage);
> -        PRINT_STRUCT_VALUE (Struct, Type17, MaximumVoltage);
> -        PRINT_STRUCT_VALUE (Struct, Type17, ConfiguredVoltage);
> +        ShellPrintEx (-1, -1, L"Minimum voltage: %u\n", Struct->Type17-
> >MinimumVoltage);
> +        ShellPrintEx (-1, -1, L"Maximum voltage: %u\n", Struct->Type17-
> >MaximumVoltage);
> +        ShellPrintEx (-1, -1, L"Configured voltage: %u\n",
> + Struct->Type17->ConfiguredVoltage);
>        }
> 
>        if (AE_SMBIOS_VERSION (0x3, 0x2)) {
>          if (Struct->Hdr->Length > 0x28) {
>            DisplayMemoryDeviceMemoryTechnology (Struct->Type17-
> >MemoryTechnology, Option);
>            DisplayMemoryDeviceMemoryOperatingModeCapability (Struct-
> >Type17->MemoryOperatingModeCapability.Uint16, Option);
> -          PRINT_PENDING_STRING (Struct, Type17, FirmwareVersion);
> -          PRINT_STRUCT_VALUE_H (Struct, Type17, ModuleManufacturerID);
> -          PRINT_STRUCT_VALUE_H (Struct, Type17, ModuleProductID);
> -          PRINT_STRUCT_VALUE_H (Struct, Type17,
> MemorySubsystemControllerManufacturerID);
> -          PRINT_STRUCT_VALUE_H (Struct, Type17,
> MemorySubsystemControllerProductID);
> +          ShellPrintEx (-1, -1, L"Firmware Version: %a\n",
> LibGetSmbiosString(Struct, Struct->Type17->FirmwareVersion));
> +          ShellPrintEx (-1, -1, L"Module Manufacturer ID: 0x%x\n", Struct-
> >Type17->ModuleManufacturerID);
> +          ShellPrintEx (-1, -1, L"Module Product ID: 0x%x\n", Struct->Type17-
> >ModuleProductID);
> +          ShellPrintEx (-1, -1, L"Memory Subsystem Controller Manufacturer ID:
> 0x%x\n", Struct->Type17->MemorySubsystemControllerManufacturerID);
> +          ShellPrintEx (-1, -1, L"Memory Subsystem Controller Product
> + ID: 0x%x\n", Struct->Type17->MemorySubsystemControllerProductID);
>          }
> 
>          if (Struct->Hdr->Length > 0x34) {
> -          PRINT_STRUCT_VALUE_LH (Struct, Type17, NonVolatileSize);
> +          ShellPrintEx (-1, -1, L"Non-volatile Size: 0x%lx\n",
> + Struct->Type17->NonVolatileSize);
>          }
> 
>          if (Struct->Hdr->Length > 0x3C) {
> -          PRINT_STRUCT_VALUE_LH (Struct, Type17, VolatileSize);
> +          ShellPrintEx (-1, -1, L"Volatile Size: 0x%lx\n",
> + Struct->Type17->VolatileSize);
>          }
> 
>          if (Struct->Hdr->Length > 0x44) {
> -          PRINT_STRUCT_VALUE_LH (Struct, Type17, CacheSize);
> +          ShellPrintEx (-1, -1, L"Cache Size: 0x%lx\n",
> + Struct->Type17->CacheSize);
>          }
> 
>          if (Struct->Hdr->Length > 0x4C) {
> -          PRINT_STRUCT_VALUE_LH (Struct, Type17, LogicalSize);
> +          ShellPrintEx (-1, -1, L"Logical Size: 0x%lx\n",
> + Struct->Type17->LogicalSize);
>          }
>        }
> 
>        if (AE_SMBIOS_VERSION (0x3, 0x3) && (Struct->Hdr->Length > 0x54)) {
> -        PRINT_STRUCT_VALUE_H (Struct, Type17, ExtendedSpeed);
> -        PRINT_STRUCT_VALUE_H (Struct, Type17,
> ExtendedConfiguredMemorySpeed);
> +        ShellPrintEx (-1, -1, L"Extended Speed: 0x%x\n", Struct->Type17-
> >ExtendedSpeed);
> +        ShellPrintEx (-1, -1, L"Extended Configured Memory Speed:
> + 0x%x\n", Struct->Type17->ExtendedConfiguredMemorySpeed);
>        }
> 
>        break;
> @@ -1258,13 +1260,13 @@ SmbiosPrintStructure (
>      // Onboard Devices Extended Information (Type 41)
>      //
>      case 41:
> -      PRINT_PENDING_STRING (Struct, Type41, ReferenceDesignation);
> +      ShellPrintEx (-1, -1, L"Reference Designation: %a\n",
> + LibGetSmbiosString (Struct, Struct->Type41->ReferenceDesignation));
>        ShellPrintEx (-1, -1, (((Struct->Type41->DeviceType) & 0x80) != 0) ?
> L"Device Enabled\n" : L"Device Disabled\n");
>        DisplayOnboardDeviceTypes ((Struct->Type41->DeviceType) & 0x7F,
> Option);
> -      PRINT_STRUCT_VALUE_H (Struct, Type41, DeviceTypeInstance);
> -      PRINT_STRUCT_VALUE_H (Struct, Type41, SegmentGroupNum);
> -      PRINT_STRUCT_VALUE_H (Struct, Type41, BusNum);
> -      PRINT_STRUCT_VALUE_H (Struct, Type41, DevFuncNum);
> +      ShellPrintEx (-1, -1, L"Device Type Instance: 0x%x\n", Struct->Type41-
> >DeviceTypeInstance);
> +      ShellPrintEx (-1, -1, L"Segment Group Number: 0x%x\n", Struct-
> >Type41->SegmentGroupNum);
> +      ShellPrintEx (-1, -1, L"Bus Number: 0x%x\n", Struct->Type41->BusNum);
> +      ShellPrintEx (-1, -1, L"Device/Function Number: 0x%x\n",
> + Struct->Type41->DevFuncNum);
>        break;
> 
>      //
> @@ -1606,10 +1608,6 @@ DisplayProcessorFamily (
>    UINT8  Option
>    )
>  {
> -  //
> -  // Print prompt message
> -  //
> -  ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN
> (STR_SMBIOSVIEW_PRINTINFO_PROCESSOR_FAMILY),
> gShellDebug1HiiHandle);
>    //
>    // Print option
>    //
> @@ -2411,6 +2409,10 @@ DisplayProcessorFamily (
>        Print (L"i960\n");
>        break;
> 
> +    case 0xFE:
> +      Print (L"Indicator to obtain the processor family from the Processor
> Family 2 field\n");
> +      break;
> +
>      default:
>        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN
> (STR_SMBIOSVIEW_PRINTINFO_UNDEFINED_PROC_FAMILY),
> gShellDebug1HiiHandle);
>    }
> @@ -2432,11 +2434,6 @@ DisplayProcessorFamily2 (
>    IN UINT8   Option
>    )
>  {
> -  //
> -  // Print prompt message
> -  //
> -  ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN
> (STR_SMBIOSVIEW_PRINTINFO_PROCESSOR_FAMILY),
> gShellDebug1HiiHandle);
> -
>    //
>    // Print option
>    //
> diff --git
> a/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/SmbiosView
> Strings.uni
> b/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/SmbiosView
> Strings.uni
> index 05f7a61d9d..73f7b2ab19 100644
> ---
> a/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/SmbiosView
> Strings.uni
> +++
> b/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/SmbiosView
> S
> +++ trings.uni
> @@ -88,8 +88,8 @@
>  #string STR_SMBIOSVIEW_PRINTINFO_FORMATTED_AREA
> #language en-US "Formatted Area:  \r\n"
>  #string STR_SMBIOSVIEW_PRINTINFO_INTER_ACHOR                    #language
> en-US "Inter Anchor:         %a\r\n"
>  #string STR_SMBIOSVIEW_PRINTINFO_INTER_CHECKSUM
> #language en-US "Inter Checksum:       0x%x\r\n"
> -#string STR_SMBIOSVIEW_PRINTINFO_FORMAT_PART_LEN
> #language en-US "Format part Len : %d\r\n"
> -#string STR_SMBIOSVIEW_PRINTINFO_STRUCT_HANDLE                  #language
> en-US "Structure Handle: %d\r\n"
> +#string STR_SMBIOSVIEW_PRINTINFO_FORMAT_PART_LEN
> #language en-US "Length: %d\r\n"
> +#string STR_SMBIOSVIEW_PRINTINFO_STRUCT_HANDLE
> #language en-US "Handle: %d\r\n"
>  #string STR_SMBIOSVIEW_PRINTINFO_BOOTUP_STATE                   #language
> en-US "Bootup state "
>  #string STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_STATE
> #language en-US "Power Supply State "
>  #string STR_SMBIOSVIEW_PRINTINFO_THERMAL_STATE                  #language
> en-US "Thermal state "
> @@ -168,6 +168,8 @@
>  #string STR_SMBIOSVIEW_PRINTINFO_MCFG_ENABLED                   #language
> en-US "Manufacturing mode is enabled\r\n"
>  #string STR_SMBIOSVIEW_PRINTINFO_BITS_RSVD_FOR_FUTURE
> #language en-US " Bits %d:7 are reserved for future assignment\r\n"
>  #string STR_SMBIOSVIEW_PRINTINFO_PROCESSOR_FAMILY
> #language en-US "Processor Family: "
> +#string STR_SMBIOSVIEW_PRINTINFO_PROCESSOR_ID                   #language
> en-US "Processor ID\r\nsize=%d:\r\n"
> +#string STR_SMBIOSVIEW_PRINTINFO_PROCESSOR_FAMILY2
> #language en-US "Processor Family 2: "
>  #string STR_SMBIOSVIEW_PRINTINFO_OTHER                          #language en-US
> "Other\r\n"
>  #string STR_SMBIOSVIEW_PRINTINFO_UNKNOWN                        #language
> en-US "Unknown\r\n"
>  #string STR_SMBIOSVIEW_PRINTINFO_INTEL386_PROCESSOR
> #language en-US "Intel386(TM) Processor\r\n"
> @@ -255,7 +257,7 @@
>  #string STR_SMBIOSVIEW_PRINTINFO_RSVD_FOR_SPEC_K5
> #language en-US "Reserved for specific K5 versions\r\n"
>  #string STR_SMBIOSVIEW_PRINTINFO_RSVD_FOR_SPEC_PENTIUM
> #language en-US "Reserved for specific Pentium(R) Processor versions\r\n"
>  #string STR_SMBIOSVIEW_PRINTINFO_UNDEFINED_PROC_FAMILY
> #language en-US "Undefined processor family and type\r\n"
> -#string STR_SMBIOSVIEW_PRINTINFO_PROC_INFO                      #language
> en-US "Processor Information -  Voltage:\r\n"
> +#string STR_SMBIOSVIEW_PRINTINFO_PROC_INFO                      #language
> en-US "Voltage:\r\n"
>  #string STR_SMBIOSVIEW_PRINTINFO_PROC_CURRENT_VOLTAGE
> #language en-US "Processor current voltage = (%d/10)V\r\n"
>  #string STR_SMBIOSVIEW_PRINTINFO_5V_SUPOPRTED                   #language
> en-US " 5V is supported\r\n"
>  #string STR_SMBIOSVIEW_PRINTINFO_33V_SUPPORTED                  #language
> en-US " 3.3V is supported\r\n"
> @@ -271,7 +273,7 @@
>  #string STR_SMBIOSVIEW_PRINTINFO_BIT13_NOT_ZERO                 #language
> en-US "Error, reserved BIT 13 must be zero\r\n"
>  #string STR_SMBIOSVIEW_PRINTINFO_BIT14_NOT_ZERO                 #language
> en-US "Error, reserved BIT 14 must be zero\r\n"
>  #string STR_SMBIOSVIEW_PRINTINFO_BIT15_NOT_ZERO                 #language
> en-US "Error, reserved BIT 15 must be zero\r\n"
> -#string STR_SMBIOSVIEW_PRINTINFO_PROC_STATUS                    #language
> en-US "Processor Status:\r\n"
> +#string STR_SMBIOSVIEW_PRINTINFO_PROC_STATUS                    #language
> en-US "Status:\r\n"
>  #string STR_SMBIOSVIEW_PRINTINFO_CPU_SOCKET_POPULATED
> #language en-US "CPU Socket Populated\r\n"
>  #string STR_SMBIOSVIEW_PRINTINFO_CPU_SOCKET_UNPOPULATED
> #language en-US "CPU Socket Unpopulated\r\n"
>  #string STR_SMBIOSVIEW_PRINTINFO_CPU_ENABLED                    #language
> en-US "CPU Enabled\r\n"
> @@ -382,8 +384,8 @@
>  #string STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_NOT_PRESENT
> #language en-US "Power supply is not present\r\n"
>  #string STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_REPLACE
> #language en-US "Power supply is hot replaceable\r\n"
>  #string STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_NOT_REPLACE
> #language en-US "Power supply is not hot replaceable\r\n"
> -#string STR_SMBIOSVIEW_PRINTINFO_BIOS_SIZE                      #language en-
> US "BiosSize:  %d KB\r\n"
> -#string STR_SMBIOSVIEW_PRINTINFO_EXTENDED_BIOS_SIZE
> #language en-US "ExtendedBiosSize:  %d %s\r\n"
> +#string STR_SMBIOSVIEW_PRINTINFO_BIOS_SIZE                      #language en-
> US "BIOS ROM Size:  %d KB\r\n"
> +#string STR_SMBIOSVIEW_PRINTINFO_EXTENDED_BIOS_SIZE
> #language en-US "Extended BIOS ROM Size:  %d %s\r\n"
>  #string STR_SMBIOSVIEW_QUERYTABLE_NO_INFO                       #language en-
> US "No Info"
>  #string STR_SMBIOSVIEW_QUERYTABLE_RSVD_BITS_SET                 #language
> en-US "\r\nIt also has reserved bits set 1 --- reserved bits: 0x%x"
>  #string STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_WAKEUP_TYPE
> #language en-US "System Wakeup Type:"
> @@ -419,7 +421,7 @@
>  #string STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_SLOT_HEIGHT
> #language en-US "System Slot Height: "
>  #string STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_SLOT_PHYSICAL_WIDTH
> #language en-US "System Slot Physical Width: "
>  #string STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_SLOT_PITCH
> #language en-US "System Slot Pitch: %d\r\n"
> -#string STR_SMBIOSVIEW_QUERYTABLE_ONBOARD_DEVICE_TYPE
> #language en-US "Onboard Device Type: "
> +#string STR_SMBIOSVIEW_QUERYTABLE_ONBOARD_DEVICE_TYPE
> #language en-US "Device Type: "
>  #string STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_EVENT_LOG_TYPE
> #language en-US "System Event Log Type: "
>  #string STR_SMBIOSVIEW_QUERYTABLE_EVENT_LOG_VAR_DATA_FORMAT
> #language en-US "Event Log Variable Data Format Types: "
>  #string STR_SMBIOSVIEW_QUERYTABLE_POST_RESULTS_BITMAP
> #language en-US "POST Results Bitmap - First DWORD:\r\n"
> @@ -431,11 +433,11 @@
>  #string STR_SMBIOSVIEW_QUERYTABLE_PHYS_MEM_ARRAY_LOCATION
> #language en-US "Physical Memory Array Location: "
>  #string STR_SMBIOSVIEW_QUERYTABLE_PHYS_MEM_ARRAY_USE
> #language en-US "Physical Memory Array Use: "
>  #string STR_SMBIOSVIEW_QUERYTABLE_PHYS_MEM_ARRAY_ERROR
> #language en-US "Physical Memory Array Error Correction Types: "
> -#string STR_SMBIOSVIEW_QUERYTABLE_MEM_DEVICE_FORM_FACTOR
> #language en-US "Memory Device - Form Factor: "
> -#string STR_SMBIOSVIEW_QUERYTABLE_MEM_DEVICE_TYPE
> #language en-US "Memory Device - Type: "
> -#string STR_SMBIOSVIEW_QUERYTABLE_MEM_DEVICE_TYPE_DETAIL
> #language en-US "Memory Device - Type Detail: "
> -#string
> STR_SMBIOSVIEW_QUERYTABLE_MEM_DEVICE_MEMORY_TECHNOLOGY
> #language en-US "Memory Device - Memory Technology: "
> -#string
> STR_SMBIOSVIEW_QUERYTABLE_MEM_DEVICE_MEM_OPER_MODE_CAPA
> #language en-US "Memory Device - Memory Operating Mode Capability: "
> +#string STR_SMBIOSVIEW_QUERYTABLE_MEM_DEVICE_FORM_FACTOR
> #language en-US "Form Factor: "
> +#string STR_SMBIOSVIEW_QUERYTABLE_MEM_DEVICE_TYPE
> #language en-US "Memory Type: "
> +#string STR_SMBIOSVIEW_QUERYTABLE_MEM_DEVICE_TYPE_DETAIL
> #language en-US "Type Detail: "
> +#string
> STR_SMBIOSVIEW_QUERYTABLE_MEM_DEVICE_MEMORY_TECHNOLOGY
> #language en-US "Memory Technology: "
> +#string
> STR_SMBIOSVIEW_QUERYTABLE_MEM_DEVICE_MEM_OPER_MODE_CAPA
> #language en-US "Memory Operating Mode Capability: "
>  #string STR_SMBIOSVIEW_QUERYTABLE_MEM_ERROR_INFO
> #language en-US "32-bit Memory Error Information - Type: "
>  #string STR_SMBIOSVIEW_QUERYTABLE_MEM_ERROR_GRANULARITY
> #language en-US "Memory Error - Error granularity: "
>  #string STR_SMBIOSVIEW_QUERYTABLE_MEM_ERROR_OP
> #language en-US "Memory Error - Error Operation: "
> @@ -454,7 +456,7 @@
>  #string STR_SMBIOSVIEW_QUERYTABLE_MEM_CHANNEL_TYPE
> #language en-US "Memory Channel Type:"
>  #string STR_SMBIOSVIEW_QUERYTABLE_BMC_INTERFACE_TYPE
> #language en-US "BMC Interface Type:"
>  #string STR_SMBIOSVIEW_QUERYTABLE_MC_HOST_INTERFACE_TYPE
> #language en-US "MC Host Interface Type:"
> -#string STR_SMBIOSVIEW_QUERYTABLE_STRUCT_TYPE                   #language
> en-US "Structure Type:"
> +#string STR_SMBIOSVIEW_QUERYTABLE_STRUCT_TYPE                   #language
> en-US "Type:"
>  #string STR_SMBIOSVIEW_QUERYTABLE_PROCESSOR_ARCH_TYPE
> #language en-US "Processor Architecture Type:"
>  #string STR_SMBIOSVIEW_SMBIOSVIEW_ONE_VAR_ARGV
> #language en-US "%s "
>  #string STR_SMBIOSVIEW_SMBIOSVIEW_QUERY_STRUCT_COND
> #language en-US "Query Structure, conditions are:\r\n"
> --
> 2.39.1.windows.1



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