[edk2-devel] [PATCH v6 17/22] ArmPkg: Add Universal/Smbios/SmbiosMiscDxe/Type02

Rebecca Cran posted 22 patches 3 years, 10 months ago
There is a newer version of this series
[edk2-devel] [PATCH v6 17/22] ArmPkg: Add Universal/Smbios/SmbiosMiscDxe/Type02
Posted by Rebecca Cran 3 years, 10 months ago
This code provides information for the SMBIOS Type 2 table.

Signed-off-by: Rebecca Cran <rebecca@nuviainc.com>
---
 ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturerData.c     |  46 ++++
 ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturerFunction.c | 230 ++++++++++++++++++++
 ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturer.uni       |  20 ++
 3 files changed, 296 insertions(+)

diff --git a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturerData.c b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturerData.c
new file mode 100644
index 000000000000..dfe1f2d45b92
--- /dev/null
+++ b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturerData.c
@@ -0,0 +1,46 @@
+/** @file
+
+  This file provide OEM to define Smbios Type2 Data
+
+  Based on files under Nt32Pkg/MiscSubClassPlatformDxe/
+
+  Copyright (c) 2021, NUVIA Inc. All rights reserved.<BR>
+  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) Chassis Manufacturer data.
+//
+SMBIOS_MISC_TABLE_DATA(SMBIOS_TABLE_TYPE2, MiscBaseBoardManufacturer) = {
+  {                                                       // Hdr
+    EFI_SMBIOS_TYPE_BASEBOARD_INFORMATION,                // Type,
+    0,                                                    // Length,
+    0                                                     // Handle
+  },
+  1,                                                      // BaseBoardManufacturer
+  2,                                                      // BaseBoardProductName
+  3,                                                      // BaseBoardVersion
+  4,                                                      // BaseBoardSerialNumber
+  5,                                                      // BaseBoardAssetTag
+  {                                                       // FeatureFlag
+    1,                                                    // Motherboard           :1
+    0,                                                    // RequiresDaughterCard  :1
+    0,                                                    // Removable             :1
+    1,                                                    // Replaceable           :1
+    0,                                                    // HotSwappable          :1
+    0                                                     // Reserved              :3
+  },
+  6,                                                      // BaseBoardChassisLocation
+  0,                                                      // ChassisHandle;
+  BaseBoardTypeMotherBoard,                               // BoardType;
+  0,                                                      // NumberOfContainedObjectHandles;
+  {
+    0
+  }                                                       // ContainedObjectHandles[1];
+};
diff --git a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturerFunction.c b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturerFunction.c
new file mode 100644
index 000000000000..097777a23904
--- /dev/null
+++ b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturerFunction.c
@@ -0,0 +1,230 @@
+/** @file
+  This driver parses the mSmbiosMiscDataTable structure and reports
+  any generated data using SMBIOS protocol.
+
+  Based on files under Nt32Pkg/MiscSubClassPlatformDxe/
+
+  Copyright (c) 2021, NUVIA Inc. All rights reserved.<BR>
+  Copyright (c) 2009 - 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/BaseLib.h>
+#include <Library/BaseMemoryLib.h>
+#include <Library/DebugLib.h>
+#include <Library/HiiLib.h>
+#include <Library/MemoryAllocationLib.h>
+#include <Library/OemMiscLib.h>
+#include <Library/PrintLib.h>
+#include <Library/UefiBootServicesTableLib.h>
+
+#include "SmbiosMisc.h"
+
+
+/**
+  This function makes boot time changes to the contents of the
+  MiscBaseBoardManufacturer (Type 2) record.
+
+  @param  RecordData                 Pointer to SMBIOS table with default values.
+  @param  Smbios                     SMBIOS protocol.
+
+  @retval EFI_SUCCESS                The SMBIOS table was successfully added.
+  @retval EFI_INVALID_PARAMETER      Invalid parameter was found.
+  @retval EFI_OUT_OF_RESOURCES       Failed to allocate required memory.
+
+**/
+SMBIOS_MISC_TABLE_FUNCTION(MiscBaseBoardManufacturer)
+{
+  CHAR8                             *OptionalStrStart;
+  CHAR8                             *StrStart;
+  UINTN                             RecordLength;
+  UINTN                             ManuStrLen;
+  UINTN                             ProductNameStrLen;
+  UINTN                             VerStrLen;
+  UINTN                             SerialNumStrLen;
+  UINTN                             AssetTagStrLen;
+  UINTN                             ChassisLocaStrLen;
+  UINTN                             HandleCount;
+  UINT16                            *HandleArray;
+  CHAR16                            *BaseBoardManufacturer;
+  CHAR16                            *BaseBoardProductName;
+  CHAR16                            *Version;
+  EFI_STRING                        SerialNumber;
+  EFI_STRING                        AssetTag;
+  EFI_STRING                        ChassisLocation;
+  EFI_STRING_ID                     TokenToGet;
+  SMBIOS_TABLE_TYPE2                *SmbiosRecord;
+  SMBIOS_TABLE_TYPE2                *InputData;
+  EFI_STATUS                        Status;
+
+  EFI_STRING_ID                     TokenToUpdate;
+
+  HandleCount = 0;
+  HandleArray = NULL;
+  InputData = NULL;
+
+  //
+  // First check for invalid parameters.
+  //
+  if (RecordData == NULL) {
+    return EFI_INVALID_PARAMETER;
+  }
+
+  InputData = (SMBIOS_TABLE_TYPE2*)RecordData;
+
+  BaseBoardManufacturer = (CHAR16 *) PcdGetPtr (PcdBaseBoardManufacturer);
+  if (StrLen (BaseBoardManufacturer) > 0) {
+    TokenToUpdate = STRING_TOKEN (STR_MISC_BASE_BOARD_MANUFACTURER);
+    HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate, BaseBoardManufacturer, NULL);
+  }
+
+  BaseBoardProductName = (CHAR16 *) PcdGetPtr (PcdBaseBoardProductName);
+  if (StrLen (BaseBoardProductName) > 0) {
+    TokenToUpdate = STRING_TOKEN (STR_MISC_BASE_BOARD_PRODUCT_NAME);
+    HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate, BaseBoardProductName, NULL);
+  }
+
+  Version = (CHAR16 *) PcdGetPtr (PcdBaseBoardVersion);
+  if (StrLen (Version) > 0) {
+    TokenToUpdate = STRING_TOKEN (STR_MISC_BASE_BOARD_VERSION);
+    HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate, Version, NULL);
+  }
+
+  OemUpdateSmbiosInfo (mSmbiosMiscHiiHandle,
+    STRING_TOKEN (STR_MISC_BASE_BOARD_ASSET_TAG),
+    AssertTagType02
+    );
+  OemUpdateSmbiosInfo (mSmbiosMiscHiiHandle,
+    STRING_TOKEN (STR_MISC_BASE_BOARD_SERIAL_NUMBER),
+    SerialNumberType02
+    );
+  OemUpdateSmbiosInfo (mSmbiosMiscHiiHandle,
+    STRING_TOKEN (STR_MISC_BASE_BOARD_MANUFACTURER),
+    BoardManufacturerType02
+    );
+  OemUpdateSmbiosInfo (mSmbiosMiscHiiHandle,
+    STRING_TOKEN (STR_MISC_BASE_BOARD_SERIAL_NUMBER),
+    SerialNumberType02
+    );
+  OemUpdateSmbiosInfo (mSmbiosMiscHiiHandle,
+    STRING_TOKEN (STR_MISC_BASE_BOARD_SKU_NUMBER),
+    SerialNumberType02
+    );
+  OemUpdateSmbiosInfo (mSmbiosMiscHiiHandle,
+    STRING_TOKEN (STR_MISC_BASE_BOARD_CHASSIS_LOCATION),
+    ChassisLocationType02
+    );
+
+  TokenToGet = STRING_TOKEN (STR_MISC_BASE_BOARD_MANUFACTURER);
+  BaseBoardManufacturer = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet, NULL);
+  ManuStrLen = StrLen (BaseBoardManufacturer);
+
+  TokenToGet = STRING_TOKEN (STR_MISC_BASE_BOARD_PRODUCT_NAME);
+  BaseBoardProductName = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet, NULL);
+  ProductNameStrLen = StrLen (BaseBoardProductName);
+
+  TokenToGet = STRING_TOKEN (STR_MISC_BASE_BOARD_VERSION);
+  Version = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet, NULL);
+  VerStrLen = StrLen (Version);
+
+  TokenToGet = STRING_TOKEN (STR_MISC_BASE_BOARD_SERIAL_NUMBER);
+  SerialNumber = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet, NULL);
+  SerialNumStrLen = StrLen (SerialNumber);
+
+  TokenToGet = STRING_TOKEN (STR_MISC_BASE_BOARD_ASSET_TAG);
+  AssetTag = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet, NULL);
+  AssetTagStrLen = StrLen (AssetTag);
+
+  TokenToGet = STRING_TOKEN (STR_MISC_BASE_BOARD_CHASSIS_LOCATION);
+  ChassisLocation = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet, NULL);
+  ChassisLocaStrLen = StrLen (ChassisLocation);
+
+  //
+  // Two zeros following the last string.
+  //
+  RecordLength = sizeof (SMBIOS_TABLE_TYPE2) +
+                 ManuStrLen        + 1 +
+                 ProductNameStrLen + 1 +
+                 VerStrLen         + 1 +
+                 SerialNumStrLen   + 1 +
+                 AssetTagStrLen    + 1 +
+                 ChassisLocaStrLen + 1 + 1;
+  SmbiosRecord = AllocateZeroPool (RecordLength);
+  if (SmbiosRecord == NULL) {
+    Status = EFI_OUT_OF_RESOURCES;
+    goto Exit;
+  }
+
+  (VOID)CopyMem (SmbiosRecord, InputData, sizeof (SMBIOS_TABLE_TYPE2));
+  SmbiosRecord->Hdr.Length        = sizeof (SMBIOS_TABLE_TYPE2);
+
+  //
+  //  Update Contained objects Handle
+  //
+  SmbiosRecord->NumberOfContainedObjectHandles = 0;
+  SmbiosMiscGetLinkTypeHandle (EFI_SMBIOS_TYPE_SYSTEM_ENCLOSURE, &HandleArray,
+                               &HandleCount);
+  // It's assumed there's at most a single chassis
+  ASSERT (HandleCount < 2);
+  if (HandleCount > 0) {
+    SmbiosRecord->ChassisHandle = HandleArray[0];
+  }
+
+  FreePool (HandleArray);
+
+  OptionalStrStart = (CHAR8 *)(SmbiosRecord + 1);
+  UnicodeStrToAsciiStrS (BaseBoardManufacturer, OptionalStrStart, ManuStrLen + 1);
+
+  StrStart = OptionalStrStart + ManuStrLen + 1;
+  UnicodeStrToAsciiStrS (BaseBoardProductName, StrStart, ProductNameStrLen + 1);
+
+  StrStart += ProductNameStrLen + 1;
+  UnicodeStrToAsciiStrS (Version, StrStart, VerStrLen + 1);
+
+  StrStart += VerStrLen + 1;
+  UnicodeStrToAsciiStrS (SerialNumber, StrStart, SerialNumStrLen + 1);
+
+  StrStart += SerialNumStrLen + 1;
+  UnicodeStrToAsciiStrS (AssetTag, StrStart, AssetTagStrLen + 1);
+
+  StrStart += AssetTagStrLen + 1;
+  UnicodeStrToAsciiStrS (ChassisLocation, StrStart, ChassisLocaStrLen + 1);
+
+  Status = SmbiosMiscAddRecord ((UINT8 *)SmbiosRecord, NULL);
+  if (EFI_ERROR (Status)) {
+    DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Smbios Type02 Table Log Failed! %r \n",
+            __FUNCTION__, __LINE__, Status));
+  }
+
+  FreePool (SmbiosRecord);
+
+Exit:
+  if (BaseBoardManufacturer != NULL) {
+    FreePool (BaseBoardManufacturer);
+  }
+
+  if (BaseBoardProductName != NULL) {
+    FreePool (BaseBoardProductName);
+  }
+
+  if (Version != NULL) {
+    FreePool (Version);
+  }
+
+  if (SerialNumber != NULL) {
+    FreePool (SerialNumber);
+  }
+
+  if (AssetTag != NULL) {
+    FreePool (AssetTag);
+  }
+
+  if (ChassisLocation != NULL) {
+    FreePool (ChassisLocation);
+  }
+
+  return 0;
+}
diff --git a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturer.uni b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturer.uni
new file mode 100644
index 000000000000..0f0fb1f93bbb
--- /dev/null
+++ b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturer.uni
@@ -0,0 +1,20 @@
+/** @file
+  Based on files under Nt32Pkg/MiscSubClassPlatformDxe/
+
+  Copyright (c) 2021, NUVIA Inc. All rights reserved.<BR>
+  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_BASE_BOARD_MANUFACTURER     #language en-US  "Not Specified"
+#string STR_MISC_BASE_BOARD_PRODUCT_NAME     #language en-US  "Not Specified"
+#string STR_MISC_BASE_BOARD_VERSION          #language en-US  "Not Specified"
+#string STR_MISC_BASE_BOARD_SERIAL_NUMBER    #language en-US  "Not Specified"
+#string STR_MISC_BASE_BOARD_ASSET_TAG        #language en-US  "Not Specified"
+#string STR_MISC_BASE_BOARD_CHASSIS_LOCATION #language en-US  "Not Specified"
+#string STR_MISC_BASE_BOARD_SKU_NUMBER       #language en-US  "Not Specified"
-- 
2.26.2



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


Re: [edk2-devel] [PATCH v6 17/22] ArmPkg: Add Universal/Smbios/SmbiosMiscDxe/Type02
Posted by Samer El-Haj-Mahmoud 3 years, 10 months ago
Reviewed-by: Samer El-Haj-Mahmoud <Samer.El-Haj-Mahmoud@arm.com>

> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Rebecca
> Cran via groups.io
> Sent: Thursday, January 14, 2021 11:36 AM
> To: devel@edk2.groups.io
> Cc: Rebecca Cran <rebecca@nuviainc.com>; Leif Lindholm
> <leif@nuviainc.com>; Ard Biesheuvel <Ard.Biesheuvel@arm.com>; nd
> <nd@arm.com>; Sami Mujawar <Sami.Mujawar@arm.com>; Liming Gao
> <gaoliming@byosoft.com.cn>; Michael D Kinney
> <michael.d.kinney@intel.com>; Zhiguang Liu <zhiguang.liu@intel.com>
> Subject: [edk2-devel] [PATCH v6 17/22] ArmPkg: Add
> Universal/Smbios/SmbiosMiscDxe/Type02
> 
> This code provides information for the SMBIOS Type 2 table.
> 
> Signed-off-by: Rebecca Cran <rebecca@nuviainc.com>
> ---
> 
> ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufac
> turerData.c     |  46 ++++
> 
> ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufac
> turerFunction.c | 230 ++++++++++++++++++++
> 
> ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufac
> turer.uni       |  20 ++
>  3 files changed, 296 insertions(+)
> 
> diff --git
> a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManuf
> acturerData.c
> b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManuf
> acturerData.c
> new file mode 100644
> index 000000000000..dfe1f2d45b92
> --- /dev/null
> +++
> b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManuf
> act
> +++ urerData.c
> @@ -0,0 +1,46 @@
> +/** @file
> +
> +  This file provide OEM to define Smbios Type2 Data
> +
> +  Based on files under Nt32Pkg/MiscSubClassPlatformDxe/
> +
> +  Copyright (c) 2021, NUVIA Inc. All rights reserved.<BR>  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) Chassis Manufacturer data.
> +//
> +SMBIOS_MISC_TABLE_DATA(SMBIOS_TABLE_TYPE2,
> MiscBaseBoardManufacturer) = {
> +  {                                                       // Hdr
> +    EFI_SMBIOS_TYPE_BASEBOARD_INFORMATION,                // Type,
> +    0,                                                    // Length,
> +    0                                                     // Handle
> +  },
> +  1,                                                      // BaseBoardManufacturer
> +  2,                                                      // BaseBoardProductName
> +  3,                                                      // BaseBoardVersion
> +  4,                                                      // BaseBoardSerialNumber
> +  5,                                                      // BaseBoardAssetTag
> +  {                                                       // FeatureFlag
> +    1,                                                    // Motherboard           :1
> +    0,                                                    // RequiresDaughterCard  :1
> +    0,                                                    // Removable             :1
> +    1,                                                    // Replaceable           :1
> +    0,                                                    // HotSwappable          :1
> +    0                                                     // Reserved              :3
> +  },
> +  6,                                                      // BaseBoardChassisLocation
> +  0,                                                      // ChassisHandle;
> +  BaseBoardTypeMotherBoard,                               // BoardType;
> +  0,                                                      // NumberOfContainedObjectHandles;
> +  {
> +    0
> +  }                                                       // ContainedObjectHandles[1];
> +};
> diff --git
> a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManuf
> acturerFunction.c
> b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManuf
> acturerFunction.c
> new file mode 100644
> index 000000000000..097777a23904
> --- /dev/null
> +++
> b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManuf
> act
> +++ urerFunction.c
> @@ -0,0 +1,230 @@
> +/** @file
> +  This driver parses the mSmbiosMiscDataTable structure and reports
> +  any generated data using SMBIOS protocol.
> +
> +  Based on files under Nt32Pkg/MiscSubClassPlatformDxe/
> +
> +  Copyright (c) 2021, NUVIA Inc. All rights reserved.<BR>  Copyright
> + (c) 2009 - 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/BaseLib.h>
> +#include <Library/BaseMemoryLib.h>
> +#include <Library/DebugLib.h>
> +#include <Library/HiiLib.h>
> +#include <Library/MemoryAllocationLib.h> #include
> +<Library/OemMiscLib.h> #include <Library/PrintLib.h> #include
> +<Library/UefiBootServicesTableLib.h>
> +
> +#include "SmbiosMisc.h"
> +
> +
> +/**
> +  This function makes boot time changes to the contents of the
> +  MiscBaseBoardManufacturer (Type 2) record.
> +
> +  @param  RecordData                 Pointer to SMBIOS table with default values.
> +  @param  Smbios                     SMBIOS protocol.
> +
> +  @retval EFI_SUCCESS                The SMBIOS table was successfully added.
> +  @retval EFI_INVALID_PARAMETER      Invalid parameter was found.
> +  @retval EFI_OUT_OF_RESOURCES       Failed to allocate required memory.
> +
> +**/
> +SMBIOS_MISC_TABLE_FUNCTION(MiscBaseBoardManufacturer)
> +{
> +  CHAR8                             *OptionalStrStart;
> +  CHAR8                             *StrStart;
> +  UINTN                             RecordLength;
> +  UINTN                             ManuStrLen;
> +  UINTN                             ProductNameStrLen;
> +  UINTN                             VerStrLen;
> +  UINTN                             SerialNumStrLen;
> +  UINTN                             AssetTagStrLen;
> +  UINTN                             ChassisLocaStrLen;
> +  UINTN                             HandleCount;
> +  UINT16                            *HandleArray;
> +  CHAR16                            *BaseBoardManufacturer;
> +  CHAR16                            *BaseBoardProductName;
> +  CHAR16                            *Version;
> +  EFI_STRING                        SerialNumber;
> +  EFI_STRING                        AssetTag;
> +  EFI_STRING                        ChassisLocation;
> +  EFI_STRING_ID                     TokenToGet;
> +  SMBIOS_TABLE_TYPE2                *SmbiosRecord;
> +  SMBIOS_TABLE_TYPE2                *InputData;
> +  EFI_STATUS                        Status;
> +
> +  EFI_STRING_ID                     TokenToUpdate;
> +
> +  HandleCount = 0;
> +  HandleArray = NULL;
> +  InputData = NULL;
> +
> +  //
> +  // First check for invalid parameters.
> +  //
> +  if (RecordData == NULL) {
> +    return EFI_INVALID_PARAMETER;
> +  }
> +
> +  InputData = (SMBIOS_TABLE_TYPE2*)RecordData;
> +
> +  BaseBoardManufacturer = (CHAR16 *) PcdGetPtr
> + (PcdBaseBoardManufacturer);  if (StrLen (BaseBoardManufacturer) > 0) {
> +    TokenToUpdate = STRING_TOKEN
> (STR_MISC_BASE_BOARD_MANUFACTURER);
> +    HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate,
> + BaseBoardManufacturer, NULL);  }
> +
> +  BaseBoardProductName = (CHAR16 *) PcdGetPtr
> + (PcdBaseBoardProductName);  if (StrLen (BaseBoardProductName) > 0) {
> +    TokenToUpdate = STRING_TOKEN
> (STR_MISC_BASE_BOARD_PRODUCT_NAME);
> +    HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate,
> + BaseBoardProductName, NULL);  }
> +
> +  Version = (CHAR16 *) PcdGetPtr (PcdBaseBoardVersion);  if (StrLen
> + (Version) > 0) {
> +    TokenToUpdate = STRING_TOKEN (STR_MISC_BASE_BOARD_VERSION);
> +    HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate, Version, NULL);
> + }
> +
> +  OemUpdateSmbiosInfo (mSmbiosMiscHiiHandle,
> +    STRING_TOKEN (STR_MISC_BASE_BOARD_ASSET_TAG),
> +    AssertTagType02
> +    );
> +  OemUpdateSmbiosInfo (mSmbiosMiscHiiHandle,
> +    STRING_TOKEN (STR_MISC_BASE_BOARD_SERIAL_NUMBER),
> +    SerialNumberType02
> +    );
> +  OemUpdateSmbiosInfo (mSmbiosMiscHiiHandle,
> +    STRING_TOKEN (STR_MISC_BASE_BOARD_MANUFACTURER),
> +    BoardManufacturerType02
> +    );
> +  OemUpdateSmbiosInfo (mSmbiosMiscHiiHandle,
> +    STRING_TOKEN (STR_MISC_BASE_BOARD_SERIAL_NUMBER),
> +    SerialNumberType02
> +    );
> +  OemUpdateSmbiosInfo (mSmbiosMiscHiiHandle,
> +    STRING_TOKEN (STR_MISC_BASE_BOARD_SKU_NUMBER),
> +    SerialNumberType02
> +    );
> +  OemUpdateSmbiosInfo (mSmbiosMiscHiiHandle,
> +    STRING_TOKEN (STR_MISC_BASE_BOARD_CHASSIS_LOCATION),
> +    ChassisLocationType02
> +    );
> +
> +  TokenToGet = STRING_TOKEN
> (STR_MISC_BASE_BOARD_MANUFACTURER);
> +  BaseBoardManufacturer = HiiGetPackageString (&gEfiCallerIdGuid,
> + TokenToGet, NULL);  ManuStrLen = StrLen (BaseBoardManufacturer);
> +
> +  TokenToGet = STRING_TOKEN
> (STR_MISC_BASE_BOARD_PRODUCT_NAME);
> +  BaseBoardProductName = HiiGetPackageString (&gEfiCallerIdGuid,
> + TokenToGet, NULL);  ProductNameStrLen = StrLen
> (BaseBoardProductName);
> +
> +  TokenToGet = STRING_TOKEN (STR_MISC_BASE_BOARD_VERSION);
> Version =
> + HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet, NULL);  VerStrLen
> + = StrLen (Version);
> +
> +  TokenToGet = STRING_TOKEN
> (STR_MISC_BASE_BOARD_SERIAL_NUMBER);
> +  SerialNumber = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet,
> + NULL);  SerialNumStrLen = StrLen (SerialNumber);
> +
> +  TokenToGet = STRING_TOKEN (STR_MISC_BASE_BOARD_ASSET_TAG);
> AssetTag
> + = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet, NULL);
> + AssetTagStrLen = StrLen (AssetTag);
> +
> +  TokenToGet = STRING_TOKEN
> (STR_MISC_BASE_BOARD_CHASSIS_LOCATION);
> +  ChassisLocation = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet,
> + NULL);  ChassisLocaStrLen = StrLen (ChassisLocation);
> +
> +  //
> +  // Two zeros following the last string.
> +  //
> +  RecordLength = sizeof (SMBIOS_TABLE_TYPE2) +
> +                 ManuStrLen        + 1 +
> +                 ProductNameStrLen + 1 +
> +                 VerStrLen         + 1 +
> +                 SerialNumStrLen   + 1 +
> +                 AssetTagStrLen    + 1 +
> +                 ChassisLocaStrLen + 1 + 1;  SmbiosRecord =
> + AllocateZeroPool (RecordLength);  if (SmbiosRecord == NULL) {
> +    Status = EFI_OUT_OF_RESOURCES;
> +    goto Exit;
> +  }
> +
> +  (VOID)CopyMem (SmbiosRecord, InputData, sizeof
> (SMBIOS_TABLE_TYPE2));
> +  SmbiosRecord->Hdr.Length        = sizeof (SMBIOS_TABLE_TYPE2);
> +
> +  //
> +  //  Update Contained objects Handle
> +  //
> +  SmbiosRecord->NumberOfContainedObjectHandles = 0;
> + SmbiosMiscGetLinkTypeHandle (EFI_SMBIOS_TYPE_SYSTEM_ENCLOSURE,
> &HandleArray,
> +                               &HandleCount);  // It's assumed there's
> + at most a single chassis  ASSERT (HandleCount < 2);  if (HandleCount >
> + 0) {
> +    SmbiosRecord->ChassisHandle = HandleArray[0];  }
> +
> +  FreePool (HandleArray);
> +
> +  OptionalStrStart = (CHAR8 *)(SmbiosRecord + 1);
> + UnicodeStrToAsciiStrS (BaseBoardManufacturer, OptionalStrStart,
> + ManuStrLen + 1);
> +
> +  StrStart = OptionalStrStart + ManuStrLen + 1;  UnicodeStrToAsciiStrS
> + (BaseBoardProductName, StrStart, ProductNameStrLen + 1);
> +
> +  StrStart += ProductNameStrLen + 1;
> +  UnicodeStrToAsciiStrS (Version, StrStart, VerStrLen + 1);
> +
> +  StrStart += VerStrLen + 1;
> +  UnicodeStrToAsciiStrS (SerialNumber, StrStart, SerialNumStrLen + 1);
> +
> +  StrStart += SerialNumStrLen + 1;
> +  UnicodeStrToAsciiStrS (AssetTag, StrStart, AssetTagStrLen + 1);
> +
> +  StrStart += AssetTagStrLen + 1;
> +  UnicodeStrToAsciiStrS (ChassisLocation, StrStart, ChassisLocaStrLen +
> + 1);
> +
> +  Status = SmbiosMiscAddRecord ((UINT8 *)SmbiosRecord, NULL);  if
> + (EFI_ERROR (Status)) {
> +    DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Smbios Type02 Table Log Failed! %r
> \n",
> +            __FUNCTION__, __LINE__, Status));  }
> +
> +  FreePool (SmbiosRecord);
> +
> +Exit:
> +  if (BaseBoardManufacturer != NULL) {
> +    FreePool (BaseBoardManufacturer);
> +  }
> +
> +  if (BaseBoardProductName != NULL) {
> +    FreePool (BaseBoardProductName);
> +  }
> +
> +  if (Version != NULL) {
> +    FreePool (Version);
> +  }
> +
> +  if (SerialNumber != NULL) {
> +    FreePool (SerialNumber);
> +  }
> +
> +  if (AssetTag != NULL) {
> +    FreePool (AssetTag);
> +  }
> +
> +  if (ChassisLocation != NULL) {
> +    FreePool (ChassisLocation);
> +  }
> +
> +  return 0;
> +}
> diff --git
> a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManuf
> acturer.uni
> b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManuf
> acturer.uni
> new file mode 100644
> index 000000000000..0f0fb1f93bbb
> --- /dev/null
> +++
> b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManuf
> act
> +++ urer.uni
> @@ -0,0 +1,20 @@
> +/** @file
> +  Based on files under Nt32Pkg/MiscSubClassPlatformDxe/
> +
> +  Copyright (c) 2021, NUVIA Inc. All rights reserved.<BR>  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_BASE_BOARD_MANUFACTURER     #language en-US
> "Not Specified"
> +#string STR_MISC_BASE_BOARD_PRODUCT_NAME     #language en-US
> "Not Specified"
> +#string STR_MISC_BASE_BOARD_VERSION          #language en-US  "Not
> Specified"
> +#string STR_MISC_BASE_BOARD_SERIAL_NUMBER    #language en-US  "Not
> Specified"
> +#string STR_MISC_BASE_BOARD_ASSET_TAG        #language en-US  "Not
> Specified"
> +#string STR_MISC_BASE_BOARD_CHASSIS_LOCATION #language en-US
> "Not Specified"
> +#string STR_MISC_BASE_BOARD_SKU_NUMBER       #language en-US  "Not
> Specified"
> --
> 2.26.2
> 
> 
> 
> 
> 



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


Re: [edk2-devel] [PATCH v6 17/22] ArmPkg: Add Universal/Smbios/SmbiosMiscDxe/Type02
Posted by Leif Lindholm 3 years, 10 months ago
On Thu, Jan 14, 2021 at 09:36:23 -0700, Rebecca Cran wrote:
> This code provides information for the SMBIOS Type 2 table.
> 
> Signed-off-by: Rebecca Cran <rebecca@nuviainc.com>

Reviewed-by: Leif Lindholm <leif@nuviainc.com>

> ---
>  ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturerData.c     |  46 ++++
>  ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturerFunction.c | 230 ++++++++++++++++++++
>  ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturer.uni       |  20 ++
>  3 files changed, 296 insertions(+)
> 
> diff --git a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturerData.c b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturerData.c
> new file mode 100644
> index 000000000000..dfe1f2d45b92
> --- /dev/null
> +++ b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturerData.c
> @@ -0,0 +1,46 @@
> +/** @file
> +
> +  This file provide OEM to define Smbios Type2 Data
> +
> +  Based on files under Nt32Pkg/MiscSubClassPlatformDxe/
> +
> +  Copyright (c) 2021, NUVIA Inc. All rights reserved.<BR>
> +  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) Chassis Manufacturer data.
> +//
> +SMBIOS_MISC_TABLE_DATA(SMBIOS_TABLE_TYPE2, MiscBaseBoardManufacturer) = {
> +  {                                                       // Hdr
> +    EFI_SMBIOS_TYPE_BASEBOARD_INFORMATION,                // Type,
> +    0,                                                    // Length,
> +    0                                                     // Handle
> +  },
> +  1,                                                      // BaseBoardManufacturer
> +  2,                                                      // BaseBoardProductName
> +  3,                                                      // BaseBoardVersion
> +  4,                                                      // BaseBoardSerialNumber
> +  5,                                                      // BaseBoardAssetTag
> +  {                                                       // FeatureFlag
> +    1,                                                    // Motherboard           :1
> +    0,                                                    // RequiresDaughterCard  :1
> +    0,                                                    // Removable             :1
> +    1,                                                    // Replaceable           :1
> +    0,                                                    // HotSwappable          :1
> +    0                                                     // Reserved              :3
> +  },
> +  6,                                                      // BaseBoardChassisLocation
> +  0,                                                      // ChassisHandle;
> +  BaseBoardTypeMotherBoard,                               // BoardType;
> +  0,                                                      // NumberOfContainedObjectHandles;
> +  {
> +    0
> +  }                                                       // ContainedObjectHandles[1];
> +};
> diff --git a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturerFunction.c b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturerFunction.c
> new file mode 100644
> index 000000000000..097777a23904
> --- /dev/null
> +++ b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturerFunction.c
> @@ -0,0 +1,230 @@
> +/** @file
> +  This driver parses the mSmbiosMiscDataTable structure and reports
> +  any generated data using SMBIOS protocol.
> +
> +  Based on files under Nt32Pkg/MiscSubClassPlatformDxe/
> +
> +  Copyright (c) 2021, NUVIA Inc. All rights reserved.<BR>
> +  Copyright (c) 2009 - 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/BaseLib.h>
> +#include <Library/BaseMemoryLib.h>
> +#include <Library/DebugLib.h>
> +#include <Library/HiiLib.h>
> +#include <Library/MemoryAllocationLib.h>
> +#include <Library/OemMiscLib.h>
> +#include <Library/PrintLib.h>
> +#include <Library/UefiBootServicesTableLib.h>
> +
> +#include "SmbiosMisc.h"
> +
> +
> +/**
> +  This function makes boot time changes to the contents of the
> +  MiscBaseBoardManufacturer (Type 2) record.
> +
> +  @param  RecordData                 Pointer to SMBIOS table with default values.
> +  @param  Smbios                     SMBIOS protocol.
> +
> +  @retval EFI_SUCCESS                The SMBIOS table was successfully added.
> +  @retval EFI_INVALID_PARAMETER      Invalid parameter was found.
> +  @retval EFI_OUT_OF_RESOURCES       Failed to allocate required memory.
> +
> +**/
> +SMBIOS_MISC_TABLE_FUNCTION(MiscBaseBoardManufacturer)
> +{
> +  CHAR8                             *OptionalStrStart;
> +  CHAR8                             *StrStart;
> +  UINTN                             RecordLength;
> +  UINTN                             ManuStrLen;
> +  UINTN                             ProductNameStrLen;
> +  UINTN                             VerStrLen;
> +  UINTN                             SerialNumStrLen;
> +  UINTN                             AssetTagStrLen;
> +  UINTN                             ChassisLocaStrLen;
> +  UINTN                             HandleCount;
> +  UINT16                            *HandleArray;
> +  CHAR16                            *BaseBoardManufacturer;
> +  CHAR16                            *BaseBoardProductName;
> +  CHAR16                            *Version;
> +  EFI_STRING                        SerialNumber;
> +  EFI_STRING                        AssetTag;
> +  EFI_STRING                        ChassisLocation;
> +  EFI_STRING_ID                     TokenToGet;
> +  SMBIOS_TABLE_TYPE2                *SmbiosRecord;
> +  SMBIOS_TABLE_TYPE2                *InputData;
> +  EFI_STATUS                        Status;
> +
> +  EFI_STRING_ID                     TokenToUpdate;
> +
> +  HandleCount = 0;
> +  HandleArray = NULL;
> +  InputData = NULL;
> +
> +  //
> +  // First check for invalid parameters.
> +  //
> +  if (RecordData == NULL) {
> +    return EFI_INVALID_PARAMETER;
> +  }
> +
> +  InputData = (SMBIOS_TABLE_TYPE2*)RecordData;
> +
> +  BaseBoardManufacturer = (CHAR16 *) PcdGetPtr (PcdBaseBoardManufacturer);
> +  if (StrLen (BaseBoardManufacturer) > 0) {
> +    TokenToUpdate = STRING_TOKEN (STR_MISC_BASE_BOARD_MANUFACTURER);
> +    HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate, BaseBoardManufacturer, NULL);
> +  }
> +
> +  BaseBoardProductName = (CHAR16 *) PcdGetPtr (PcdBaseBoardProductName);
> +  if (StrLen (BaseBoardProductName) > 0) {
> +    TokenToUpdate = STRING_TOKEN (STR_MISC_BASE_BOARD_PRODUCT_NAME);
> +    HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate, BaseBoardProductName, NULL);
> +  }
> +
> +  Version = (CHAR16 *) PcdGetPtr (PcdBaseBoardVersion);
> +  if (StrLen (Version) > 0) {
> +    TokenToUpdate = STRING_TOKEN (STR_MISC_BASE_BOARD_VERSION);
> +    HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate, Version, NULL);
> +  }
> +
> +  OemUpdateSmbiosInfo (mSmbiosMiscHiiHandle,
> +    STRING_TOKEN (STR_MISC_BASE_BOARD_ASSET_TAG),
> +    AssertTagType02
> +    );
> +  OemUpdateSmbiosInfo (mSmbiosMiscHiiHandle,
> +    STRING_TOKEN (STR_MISC_BASE_BOARD_SERIAL_NUMBER),
> +    SerialNumberType02
> +    );
> +  OemUpdateSmbiosInfo (mSmbiosMiscHiiHandle,
> +    STRING_TOKEN (STR_MISC_BASE_BOARD_MANUFACTURER),
> +    BoardManufacturerType02
> +    );
> +  OemUpdateSmbiosInfo (mSmbiosMiscHiiHandle,
> +    STRING_TOKEN (STR_MISC_BASE_BOARD_SERIAL_NUMBER),
> +    SerialNumberType02
> +    );
> +  OemUpdateSmbiosInfo (mSmbiosMiscHiiHandle,
> +    STRING_TOKEN (STR_MISC_BASE_BOARD_SKU_NUMBER),
> +    SerialNumberType02
> +    );
> +  OemUpdateSmbiosInfo (mSmbiosMiscHiiHandle,
> +    STRING_TOKEN (STR_MISC_BASE_BOARD_CHASSIS_LOCATION),
> +    ChassisLocationType02
> +    );
> +
> +  TokenToGet = STRING_TOKEN (STR_MISC_BASE_BOARD_MANUFACTURER);
> +  BaseBoardManufacturer = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet, NULL);
> +  ManuStrLen = StrLen (BaseBoardManufacturer);
> +
> +  TokenToGet = STRING_TOKEN (STR_MISC_BASE_BOARD_PRODUCT_NAME);
> +  BaseBoardProductName = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet, NULL);
> +  ProductNameStrLen = StrLen (BaseBoardProductName);
> +
> +  TokenToGet = STRING_TOKEN (STR_MISC_BASE_BOARD_VERSION);
> +  Version = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet, NULL);
> +  VerStrLen = StrLen (Version);
> +
> +  TokenToGet = STRING_TOKEN (STR_MISC_BASE_BOARD_SERIAL_NUMBER);
> +  SerialNumber = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet, NULL);
> +  SerialNumStrLen = StrLen (SerialNumber);
> +
> +  TokenToGet = STRING_TOKEN (STR_MISC_BASE_BOARD_ASSET_TAG);
> +  AssetTag = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet, NULL);
> +  AssetTagStrLen = StrLen (AssetTag);
> +
> +  TokenToGet = STRING_TOKEN (STR_MISC_BASE_BOARD_CHASSIS_LOCATION);
> +  ChassisLocation = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet, NULL);
> +  ChassisLocaStrLen = StrLen (ChassisLocation);
> +
> +  //
> +  // Two zeros following the last string.
> +  //
> +  RecordLength = sizeof (SMBIOS_TABLE_TYPE2) +
> +                 ManuStrLen        + 1 +
> +                 ProductNameStrLen + 1 +
> +                 VerStrLen         + 1 +
> +                 SerialNumStrLen   + 1 +
> +                 AssetTagStrLen    + 1 +
> +                 ChassisLocaStrLen + 1 + 1;
> +  SmbiosRecord = AllocateZeroPool (RecordLength);
> +  if (SmbiosRecord == NULL) {
> +    Status = EFI_OUT_OF_RESOURCES;
> +    goto Exit;
> +  }
> +
> +  (VOID)CopyMem (SmbiosRecord, InputData, sizeof (SMBIOS_TABLE_TYPE2));
> +  SmbiosRecord->Hdr.Length        = sizeof (SMBIOS_TABLE_TYPE2);
> +
> +  //
> +  //  Update Contained objects Handle
> +  //
> +  SmbiosRecord->NumberOfContainedObjectHandles = 0;
> +  SmbiosMiscGetLinkTypeHandle (EFI_SMBIOS_TYPE_SYSTEM_ENCLOSURE, &HandleArray,
> +                               &HandleCount);
> +  // It's assumed there's at most a single chassis
> +  ASSERT (HandleCount < 2);
> +  if (HandleCount > 0) {
> +    SmbiosRecord->ChassisHandle = HandleArray[0];
> +  }
> +
> +  FreePool (HandleArray);
> +
> +  OptionalStrStart = (CHAR8 *)(SmbiosRecord + 1);
> +  UnicodeStrToAsciiStrS (BaseBoardManufacturer, OptionalStrStart, ManuStrLen + 1);
> +
> +  StrStart = OptionalStrStart + ManuStrLen + 1;
> +  UnicodeStrToAsciiStrS (BaseBoardProductName, StrStart, ProductNameStrLen + 1);
> +
> +  StrStart += ProductNameStrLen + 1;
> +  UnicodeStrToAsciiStrS (Version, StrStart, VerStrLen + 1);
> +
> +  StrStart += VerStrLen + 1;
> +  UnicodeStrToAsciiStrS (SerialNumber, StrStart, SerialNumStrLen + 1);
> +
> +  StrStart += SerialNumStrLen + 1;
> +  UnicodeStrToAsciiStrS (AssetTag, StrStart, AssetTagStrLen + 1);
> +
> +  StrStart += AssetTagStrLen + 1;
> +  UnicodeStrToAsciiStrS (ChassisLocation, StrStart, ChassisLocaStrLen + 1);
> +
> +  Status = SmbiosMiscAddRecord ((UINT8 *)SmbiosRecord, NULL);
> +  if (EFI_ERROR (Status)) {
> +    DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Smbios Type02 Table Log Failed! %r \n",
> +            __FUNCTION__, __LINE__, Status));
> +  }
> +
> +  FreePool (SmbiosRecord);
> +
> +Exit:
> +  if (BaseBoardManufacturer != NULL) {
> +    FreePool (BaseBoardManufacturer);
> +  }
> +
> +  if (BaseBoardProductName != NULL) {
> +    FreePool (BaseBoardProductName);
> +  }
> +
> +  if (Version != NULL) {
> +    FreePool (Version);
> +  }
> +
> +  if (SerialNumber != NULL) {
> +    FreePool (SerialNumber);
> +  }
> +
> +  if (AssetTag != NULL) {
> +    FreePool (AssetTag);
> +  }
> +
> +  if (ChassisLocation != NULL) {
> +    FreePool (ChassisLocation);
> +  }
> +
> +  return 0;
> +}
> diff --git a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturer.uni b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturer.uni
> new file mode 100644
> index 000000000000..0f0fb1f93bbb
> --- /dev/null
> +++ b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturer.uni
> @@ -0,0 +1,20 @@
> +/** @file
> +  Based on files under Nt32Pkg/MiscSubClassPlatformDxe/
> +
> +  Copyright (c) 2021, NUVIA Inc. All rights reserved.<BR>
> +  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_BASE_BOARD_MANUFACTURER     #language en-US  "Not Specified"
> +#string STR_MISC_BASE_BOARD_PRODUCT_NAME     #language en-US  "Not Specified"
> +#string STR_MISC_BASE_BOARD_VERSION          #language en-US  "Not Specified"
> +#string STR_MISC_BASE_BOARD_SERIAL_NUMBER    #language en-US  "Not Specified"
> +#string STR_MISC_BASE_BOARD_ASSET_TAG        #language en-US  "Not Specified"
> +#string STR_MISC_BASE_BOARD_CHASSIS_LOCATION #language en-US  "Not Specified"
> +#string STR_MISC_BASE_BOARD_SKU_NUMBER       #language en-US  "Not Specified"
> -- 
> 2.26.2
> 


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