Skip to content

Commit b451c69

Browse files
nhivpmergify[bot]
authored andcommitted
ArmPkg/ProcessorSubClassDxe: Get serial and part number from OemMiscLib
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. Signed-off-by: Nhi Pham <nhi@os.amperecomputing.com> Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
1 parent 45e3842 commit b451c69

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

ArmPkg/Include/Library/OemMiscLib.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ typedef enum {
5656
ChassisTypeType03,
5757
ManufacturerType03,
5858
SkuNumberType03,
59+
ProcessorPartNumType04,
60+
ProcessorSerialNumType04,
5961
SmbiosHiiStringFieldMax
6062
} OEM_MISC_SMBIOS_HII_STRING_FIELD;
6163

ArmPkg/Universal/Smbios/ProcessorSubClassDxe/ProcessorSubClass.c

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -513,9 +513,19 @@ AllocateType4AndSetProcessorInformationStrings (
513513

514514
SET_HII_STRING_IF_PCD_NOT_EMPTY (PcdProcessorManufacturer, ProcessorManu);
515515
SET_HII_STRING_IF_PCD_NOT_EMPTY (PcdProcessorVersion, ProcessorVersion);
516-
SET_HII_STRING_IF_PCD_NOT_EMPTY (PcdProcessorSerialNumber, SerialNumber);
517516
SET_HII_STRING_IF_PCD_NOT_EMPTY (PcdProcessorAssetTag, AssetTag);
518-
SET_HII_STRING_IF_PCD_NOT_EMPTY (PcdProcessorPartNumber, PartNumber);
517+
518+
if (StrLen ((CHAR16 *)FixedPcdGetPtr (PcdProcessorSerialNumber)) > 0) {
519+
HiiSetString (mHiiHandle, SerialNumber, (CHAR16 *)FixedPcdGetPtr (PcdProcessorSerialNumber), NULL);
520+
} else {
521+
OemUpdateSmbiosInfo (mHiiHandle, SerialNumber, ProcessorSerialNumType04);
522+
}
523+
524+
if (StrLen ((CHAR16 *)FixedPcdGetPtr (PcdProcessorPartNumber)) > 0) {
525+
HiiSetString (mHiiHandle, PartNumber, (CHAR16 *)FixedPcdGetPtr (PcdProcessorPartNumber), NULL);
526+
} else {
527+
OemUpdateSmbiosInfo (mHiiHandle, PartNumber, ProcessorPartNumType04);
528+
}
519529

520530
// Processor Designation
521531
StringBufferSize = sizeof (CHAR16) * SMBIOS_STRING_MAX_LENGTH;

0 commit comments

Comments
 (0)