[edk2-devel] [PATCH v5 13/23] ArmPkg: Add Universal/Smbios/SmbiosMiscDxe/Type01
Samer El-Haj-Mahmoud
samer.el-haj-mahmoud at arm.com
Tue Jan 5 22:00:36 UTC 2021
> -----Original Message-----
> From: devel at edk2.groups.io <devel at edk2.groups.io> On Behalf Of Rebecca
> Cran via groups.io
> Sent: Monday, January 4, 2021 5:58 PM
> To: devel at edk2.groups.io
> Cc: Rebecca Cran <rebecca at nuviainc.com>; Leif Lindholm
> <leif at nuviainc.com>; Ard Biesheuvel <Ard.Biesheuvel at arm.com>; Sami
> Mujawar <Sami.Mujawar at arm.com>; Liming Gao
> <gaoliming at byosoft.com.cn>; Michael D Kinney
> <michael.d.kinney at intel.com>; Zhiguang Liu <zhiguang.liu at intel.com>
> Subject: [edk2-devel] [PATCH v5 13/23] ArmPkg: Add
> Universal/Smbios/SmbiosMiscDxe/Type01
>
> This code provides information for the SMBIOS Type 1 table.
>
> Signed-off-by: Rebecca Cran <rebecca at nuviainc.com>
> ---
>
> ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type01/MiscSystemManufactur
> erData.c | 35 ++++
>
> ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type01/MiscSystemManufactur
> erFunction.c | 178 ++++++++++++++++++++
>
> ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type01/MiscSystemManufactur
> er.uni | 20 +++
> 3 files changed, 233 insertions(+)
>
> diff --git
> a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type01/MiscSystemManufact
> urerData.c
> b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type01/MiscSystemManufact
> urerData.c
> new file mode 100644
> index 000000000000..908ab9164b63
> --- /dev/null
> +++
> b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type01/MiscSystemManufact
> ure
> +++ rData.c
> @@ -0,0 +1,35 @@
> +/** @file
> + This file provides Smbios Type1 Data
> +
> + Based on files under Nt32Pkg/MiscSubClassPlatformDxe/
> +
> + Copyright (c) 2006 - 2009, Intel Corporation. All rights
> + reserved.<BR> Copyright (c) 2015, Hisilicon Limited. All rights
> + reserved.<BR> Copyright (c) 2015, Linaro Limited. All rights
> + reserved.<BR>
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#include "SmbiosMisc.h"
> +
> +
> +//
> +// Static (possibly build generated) System Manufacturer data.
> +//
> +MISC_SMBIOS_TABLE_DATA(SMBIOS_TABLE_TYPE1,
> MiscSystemManufacturer) = {
> + { // Hdr
> + EFI_SMBIOS_TYPE_SYSTEM_INFORMATION, // Type,
> + 0, // Length,
> + 0 // Handle
> + },
> + 1, // Manufacturer
> + 2, // ProductName
> + 3, // Version
> + 4, // SerialNumber
> + { // Uuid
> + 0x00000000, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
> +0x00, 0x00}
> + },
> + SystemWakeupTypePowerSwitch, // SystemWakeupType
> + 5, // SKUNumber,
> + 6 // Family
> +};
> diff --git
> a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type01/MiscSystemManufact
> urerFunction.c
> b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type01/MiscSystemManufact
> urerFunction.c
> new file mode 100644
> index 000000000000..56f55f98b0d0
> --- /dev/null
> +++
> b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type01/MiscSystemManufact
> ure
> +++ rFunction.c
> @@ -0,0 +1,178 @@
> +/** @file
> + This driver parses the mMiscSubclassDataTable structure and reports
> + any generated data to smbios.
> +
> + Based on files under Nt32Pkg/MiscSubClassPlatformDxe/
> +
> + Copyright (c) 2006 - 2011, Intel Corporation. All rights
> + reserved.<BR> Copyright (c) 2015, Hisilicon Limited. All rights
> + reserved.<BR> Copyright (c) 2015, Linaro Limited. All rights
> + reserved.<BR>
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#include <Library/BaseMemoryLib.h>
> +
> +#include "SmbiosMisc.h"
> +
> +/**
> + This function makes boot time changes to the contents of the
> + MiscSystemManufacturer (Type 1).
> +
> + @param RecordData Pointer to copy of RecordData from the Data
> Table.
> + @param Smbios SMBIOS Protocol
> +
> + @retval EFI_SUCCESS All parameters were valid.
> + @retval EFI_UNSUPPORTED Unexpected RecordType value.
> + @retval EFI_INVALID_PARAMETER Invalid parameter was found.
> +
> +**/
> +MISC_SMBIOS_TABLE_FUNCTION(MiscSystemManufacturer)
> +{
> + CHAR8 *OptionalStrStart;
> + CHAR8 *StrStart;
> + UINTN ManuStrLen;
> + UINTN VerStrLen;
> + UINTN PdNameStrLen;
> + UINTN SerialNumStrLen;
> + UINTN SKUNumStrLen;
> + UINTN FamilyStrLen;
> + UINTN RecordLength;
> + EFI_STRING Manufacturer;
> + EFI_STRING ProductName;
> + EFI_STRING Version;
> + EFI_STRING SerialNumber;
> + EFI_STRING SKUNumber;
> + EFI_STRING Family;
> + EFI_STRING_ID TokenToGet;
> + EFI_SMBIOS_HANDLE SmbiosHandle;
> + SMBIOS_TABLE_TYPE1 *SmbiosRecord;
> + SMBIOS_TABLE_TYPE1 *InputData;
> + EFI_STATUS Status;
> + EFI_STRING_ID TokenToUpdate;
> + CHAR16 *Product;
> + CHAR16 *pVersion;
> +
> + Status = EFI_SUCCESS;
> +
> + //
> + // First check for invalid parameters.
> + //
> + if (RecordData == NULL) {
> + return EFI_INVALID_PARAMETER;
> + }
> +
> + InputData = (SMBIOS_TABLE_TYPE1 *)RecordData;
> +
> + Product = (CHAR16 *) PcdGetPtr (PcdSystemProductName); if (StrLen
> + (Product) > 0) {
> + TokenToUpdate = STRING_TOKEN
> (STR_MISC_SYSTEM_PRODUCT_NAME);
> + HiiSetString (mHiiHandle, TokenToUpdate, Product, NULL); }
> +
> + pVersion = (CHAR16 *) PcdGetPtr (PcdSystemVersion); if (StrLen
> + (pVersion) > 0) {
> + TokenToUpdate = STRING_TOKEN (STR_MISC_SYSTEM_VERSION);
> + HiiSetString (mHiiHandle, TokenToUpdate, pVersion, NULL); }
> + UpdateSmbiosInfo (mHiiHandle, STRING_TOKEN
> + (STR_MISC_SYSTEM_SERIAL_NUMBER), SerialNumType01);
> UpdateSmbiosInfo
> + (mHiiHandle, STRING_TOKEN (STR_MISC_SYSTEM_MANUFACTURER),
> + SystemManufacturerType01);
> +
> + TokenToGet = STRING_TOKEN (STR_MISC_SYSTEM_MANUFACTURER);
> + Manufacturer = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet,
> NULL);
> + ManuStrLen = StrLen (Manufacturer);
> +
> + TokenToGet = STRING_TOKEN (STR_MISC_SYSTEM_PRODUCT_NAME);
> + ProductName = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet,
> + NULL); PdNameStrLen = StrLen (ProductName);
> +
> + TokenToGet = STRING_TOKEN (STR_MISC_SYSTEM_VERSION);
> + Version = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet, NULL);
> + VerStrLen = StrLen (Version);
> +
> + TokenToGet = STRING_TOKEN (STR_MISC_SYSTEM_SERIAL_NUMBER);
> + SerialNumber = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet,
> NULL);
> + SerialNumStrLen = StrLen (SerialNumber);
> +
> + TokenToGet = STRING_TOKEN (STR_MISC_SYSTEM_SKU_NUMBER);
> + SKUNumber = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet,
> NULL);
> + SKUNumStrLen = StrLen (SKUNumber);
> +
> + TokenToGet = STRING_TOKEN (STR_MISC_SYSTEM_FAMILY);
> + Family = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet, NULL);
> + FamilyStrLen = StrLen (Family);
> +
> + //
> + // Two zeros following the last string.
> + //
> + RecordLength = sizeof (SMBIOS_TABLE_TYPE1) +
> + ManuStrLen + 1 +
> + PdNameStrLen + 1 +
> + VerStrLen + 1 +
> + SerialNumStrLen + 1 +
> + SKUNumStrLen + 1 +
> + FamilyStrLen + 1 + 1;
> + SmbiosRecord = AllocateZeroPool (RecordLength);
> +
> + if (SmbiosRecord == NULL) {
> + Status = EFI_OUT_OF_RESOURCES;
> + goto Exit;
> + }
> +
> + (VOID)CopyMem (SmbiosRecord, InputData, sizeof
> (SMBIOS_TABLE_TYPE1));
> +
> + SmbiosRecord->Hdr.Length = sizeof (SMBIOS_TABLE_TYPE1);
> +
> + CopyGuid(&SmbiosRecord->Uuid, &InputData->Uuid);
> +
> + OptionalStrStart = (CHAR8 *)(SmbiosRecord + 1);
> + UnicodeStrToAsciiStrS (Manufacturer, OptionalStrStart, ManuStrLen +
> + 1); StrStart = OptionalStrStart + ManuStrLen + 1;
> + UnicodeStrToAsciiStrS (ProductName, StrStart, PdNameStrLen + 1);
> + StrStart += PdNameStrLen + 1; UnicodeStrToAsciiStrS (Version,
> + StrStart, VerStrLen + 1); StrStart += VerStrLen + 1;
> + UnicodeStrToAsciiStrS (SerialNumber, StrStart, SerialNumStrLen + 1);
> + StrStart += SerialNumStrLen + 1; UnicodeStrToAsciiStrS (SKUNumber,
> + StrStart, SKUNumStrLen + 1); StrStart += SKUNumStrLen + 1;
> + UnicodeStrToAsciiStrS (Family, StrStart, FamilyStrLen + 1);
> +
> + //
> + // Now we have got the full smbios record, call smbios protocol to add this
> record.
> + //
> + Status = LogSmbiosData ((UINT8*)SmbiosRecord, &SmbiosHandle); if
> + (EFI_ERROR (Status)) {
> + DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Smbios Type01 Table Log Failed! %r
> \n",
> + __FUNCTION__, __LINE__, Status)); }
> +
> + FreePool (SmbiosRecord);
> +
> +Exit:
> + if (Manufacturer != NULL) {
> + FreePool (Manufacturer);
> + }
> +
> + if (ProductName != NULL) {
> + FreePool (ProductName);
> + }
> +
> + if (Version != NULL) {
> + FreePool (Version);
> + }
> +
> + if (SerialNumber != NULL) {
> + FreePool (SerialNumber);
> + }
> +
> + if (SKUNumber != NULL) {
> + FreePool (SKUNumber);
> + }
> +
> + if (Family != NULL) {
> + FreePool (Family);
> + }
> +
> + return Status;
> +}
> diff --git
> a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type01/MiscSystemManufact
> urer.uni
> b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type01/MiscSystemManufact
> urer.uni
> new file mode 100644
> index 000000000000..9d723ba684b8
> --- /dev/null
> +++
> b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type01/MiscSystemManufact
> ure
> +++ r.uni
> @@ -0,0 +1,20 @@
> +/** @file
> + Based on files under Nt32Pkg/MiscSubClassPlatformDxe/
> +
> + Copyright (c) 2006 - 2010, Intel Corporation. All rights
> + reserved.<BR> Copyright (c) 2015, Hisilicon Limited. All rights
> + reserved.<BR> Copyright (c) 2015, Linaro Limited. All rights
> + reserved.<BR>
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +/=#
> +
> +#string STR_MISC_SYSTEM_MANUFACTURER #language en-US "Not
> Specified"
> +#string STR_MISC_SYSTEM_PRODUCT_NAME #language en-US "Not
> Specified"
> +#string STR_MISC_SYSTEM_PRODUCT_NAME #language en-US "Not
> Specified"
> +#string STR_MISC_SYSTEM_VERSION #language en-US "Not Specified"
> +#string STR_MISC_SYSTEM_VERSION #language en-US "Not Specified"
> +#string STR_MISC_SYSTEM_SERIAL_NUMBER #language en-US "Not
> Specified"
> +#string STR_MISC_SYSTEM_SKU_NUMBER #language en-US "Not
> Specified"
> +#string STR_MISC_SYSTEM_FAMILY #language en-US "Not Specified"
> --
Can platforms customize these (using dynamic HII PCDs for instance?)
> 2.26.2
>
>
>
>
>
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#69753): https://edk2.groups.io/g/devel/message/69753
Mute This Topic: https://groups.io/mt/79438417/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-
More information about the edk2-devel-archive
mailing list