Currently, the serial and part number of a processor are filled with
fixed PCDs. However, they may be updated dynamically according to the
information being passed from a the pre-UEFI firmware during booting.
So, this patch is to support updating these string fields from
OemMiscLib if the PCDs are empty.

Cc: Leif Lindholm <l...@nuviainc.com>
Cc: Ard Biesheuvel <ardb+tianoc...@kernel.org>
Cc: Rebecca Cran <rebe...@nuviainc.com>
Signed-off-by: Nhi Pham <n...@os.amperecomputing.com>
Reviewed-by: Sami Mujawar <sami.muja...@arm.com>
---
 ArmPkg/Include/Library/OemMiscLib.h                              |  2 ++
 ArmPkg/Universal/Smbios/ProcessorSubClassDxe/ProcessorSubClass.c | 14 
++++++++++++--
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/ArmPkg/Include/Library/OemMiscLib.h 
b/ArmPkg/Include/Library/OemMiscLib.h
index f25c8f3342a9..47cb30d84a62 100644
--- a/ArmPkg/Include/Library/OemMiscLib.h
+++ b/ArmPkg/Include/Library/OemMiscLib.h
@@ -56,6 +56,8 @@ typedef enum {
   ChassisTypeType03,

   ManufacturerType03,

   SkuNumberType03,

+  ProcessorPartNumType04,

+  ProcessorSerialNumType04,

   SmbiosHiiStringFieldMax

 } OEM_MISC_SMBIOS_HII_STRING_FIELD;

 

diff --git a/ArmPkg/Universal/Smbios/ProcessorSubClassDxe/ProcessorSubClass.c 
b/ArmPkg/Universal/Smbios/ProcessorSubClassDxe/ProcessorSubClass.c
index a4f98e6a81d2..0b9af9bd7e1c 100644
--- a/ArmPkg/Universal/Smbios/ProcessorSubClassDxe/ProcessorSubClass.c
+++ b/ArmPkg/Universal/Smbios/ProcessorSubClassDxe/ProcessorSubClass.c
@@ -513,9 +513,19 @@ AllocateType4AndSetProcessorInformationStrings (
 

   SET_HII_STRING_IF_PCD_NOT_EMPTY (PcdProcessorManufacturer, ProcessorManu);

   SET_HII_STRING_IF_PCD_NOT_EMPTY (PcdProcessorVersion, ProcessorVersion);

-  SET_HII_STRING_IF_PCD_NOT_EMPTY (PcdProcessorSerialNumber, SerialNumber);

   SET_HII_STRING_IF_PCD_NOT_EMPTY (PcdProcessorAssetTag, AssetTag);

-  SET_HII_STRING_IF_PCD_NOT_EMPTY (PcdProcessorPartNumber, PartNumber);

+

+  if (StrLen ((CHAR16 *)FixedPcdGetPtr (PcdProcessorSerialNumber)) > 0) {

+    HiiSetString (mHiiHandle, SerialNumber, (CHAR16 *)FixedPcdGetPtr 
(PcdProcessorSerialNumber), NULL);

+  } else {

+    OemUpdateSmbiosInfo (mHiiHandle, SerialNumber, ProcessorSerialNumType04);

+  }

+

+  if (StrLen ((CHAR16 *)FixedPcdGetPtr (PcdProcessorPartNumber)) > 0) {

+    HiiSetString (mHiiHandle, PartNumber, (CHAR16 *)FixedPcdGetPtr 
(PcdProcessorPartNumber), NULL);

+  } else {

+    OemUpdateSmbiosInfo (mHiiHandle, PartNumber, ProcessorPartNumType04);

+  }

 

   // Processor Designation

   StringBufferSize = sizeof (CHAR16) * SMBIOS_STRING_MAX_LENGTH;

-- 
2.25.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#84958): https://edk2.groups.io/g/devel/message/84958
Mute This Topic: https://groups.io/mt/87760771/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to