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

Samer El-Haj-Mahmoud samer.el-haj-mahmoud at arm.com
Mon Jan 25 19:23:59 UTC 2021


I thought I reviewed this but maybe I forgot to send RB:

Reviewed-by: Samer El-Haj-Mahmoud <Samer.El-Haj-Mahmoud at arm.com>



> -----Original Message-----
> From: devel at edk2.groups.io <devel at edk2.groups.io> On Behalf Of Rebecca
> Cran via groups.io
> Sent: Thursday, January 14, 2021 11:36 AM
> 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>; nd
> <nd 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 v6 22/22] ArmPkg: Add
> Universal/Smbios/SmbiosMiscDxe
> 
> SmbiosMiscDxe provides SMBIOS tables 0, 1, 2, 3, 13, and 32.
> 
> Signed-off-by: Rebecca Cran <rebecca at nuviainc.com>
> ---
>  ArmPkg/ArmPkg.dsc                                              |   1 +
>  ArmPkg/Universal/Smbios/SmbiosMiscDxe/SmbiosMiscDxe.inf        |  89
> ++++++++
>  ArmPkg/Universal/Smbios/SmbiosMiscDxe/SmbiosMisc.h             | 134
> ++++++++++++
>  ArmPkg/Universal/Smbios/SmbiosMiscDxe/SmbiosMiscDataTable.c    |  62
> ++++++
>  ArmPkg/Universal/Smbios/SmbiosMiscDxe/SmbiosMiscEntryPoint.c   | 227
> ++++++++++++++++++++
>  ArmPkg/Universal/Smbios/SmbiosMiscDxe/SmbiosMiscDxeStrings.uni |  22
> ++
>  6 files changed, 535 insertions(+)
> 
> diff --git a/ArmPkg/ArmPkg.dsc b/ArmPkg/ArmPkg.dsc index
> fce86cb6d710..7194eb2d3c44 100644
> --- a/ArmPkg/ArmPkg.dsc
> +++ b/ArmPkg/ArmPkg.dsc
> @@ -149,6 +149,7 @@ [Components.common]
>    ArmPkg/Drivers/ArmScmiDxe/ArmScmiDxe.inf
> 
> 
> ArmPkg/Universal/Smbios/ProcessorSubClassDxe/ProcessorSubClassDxe.inf
> +  ArmPkg/Universal/Smbios/SmbiosMiscDxe/SmbiosMiscDxe.inf
> 
>  [Components.AARCH64]
>    ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.inf
> diff --git a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/SmbiosMiscDxe.inf
> b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/SmbiosMiscDxe.inf
> new file mode 100644
> index 000000000000..60d8fe31c219
> --- /dev/null
> +++ b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/SmbiosMiscDxe.inf
> @@ -0,0 +1,89 @@
> +#/** @file
> +# Component description file for SmbiosMisc instance.
> +#
> +# Parses the MiscSubclassDataTable and reports any generated data to the
> DataHub.
> +#  All .uni file who tagged with "ToolCode="DUMMY"" in following file
> +list is included by #  MiscSubclassDriver.uni file, the StrGather tool
> +will expand MiscSubclassDriver.uni file #  and parse all .uni file.
> +#
> +# 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 # # # Based on files under
> +Nt32Pkg/MiscSubClassPlatformDxe/ #**/
> +
> +
> +[Defines]
> +  INF_VERSION                    = 1.29
> +  BASE_NAME                      = SmbiosMiscDxe
> +  FILE_GUID                      = 7e5e26d4-0be9-401f-b5e1-1c2bda7ca777
> +  MODULE_TYPE                    = DXE_DRIVER
> +  VERSION_STRING                 = 1.0
> +  ENTRY_POINT                    = SmbiosMiscEntryPoint
> +
> +[Sources]
> +  SmbiosMisc.h
> +  SmbiosMiscDataTable.c
> +  SmbiosMiscEntryPoint.c
> +  SmbiosMiscDxeStrings.uni
> +  Type00/MiscBiosVendorData.c
> +  Type00/MiscBiosVendorFunction.c
> +  Type01/MiscSystemManufacturerData.c
> +  Type01/MiscSystemManufacturerFunction.c
> +  Type02/MiscBaseBoardManufacturerData.c
> +  Type02/MiscBaseBoardManufacturerFunction.c
> +  Type03/MiscChassisManufacturerData.c
> +  Type03/MiscChassisManufacturerFunction.c
> +  Type13/MiscNumberOfInstallableLanguagesData.c
> +  Type13/MiscNumberOfInstallableLanguagesFunction.c
> +  Type32/MiscBootInformationData.c
> +  Type32/MiscBootInformationFunction.c
> +
> +[Packages]
> +  ArmPkg/ArmPkg.dec
> +  MdeModulePkg/MdeModulePkg.dec
> +  MdePkg/MdePkg.dec
> +
> +[LibraryClasses]
> +  BaseLib
> +  BaseMemoryLib
> +  DebugLib
> +  DevicePathLib
> +  PcdLib
> +  HiiLib
> +  HobLib
> +  MemoryAllocationLib
> +  OemMiscLib
> +  UefiBootServicesTableLib
> +  UefiDriverEntryPoint
> +  UefiLib
> +  UefiRuntimeServicesTableLib
> +
> +[Protocols]
> +  gEfiSmbiosProtocolGuid                       # PROTOCOL ALWAYS_CONSUMED
> +
> +[Pcd]
> +  gArmTokenSpaceGuid.PcdFdSize
> +  gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVendor
> +  gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString
> +  gArmTokenSpaceGuid.PcdSystemBiosRelease
> +  gArmTokenSpaceGuid.PcdEmbeddedControllerFirmwareRelease
> +  gArmTokenSpaceGuid.PcdSystemProductName
> +  gArmTokenSpaceGuid.PcdSystemVersion
> +  gArmTokenSpaceGuid.PcdBaseBoardManufacturer
> +  gArmTokenSpaceGuid.PcdBaseBoardProductName
> +  gArmTokenSpaceGuid.PcdBaseBoardVersion
> +  gArmTokenSpaceGuid.PcdFdBaseAddress
> +
> +[Guids]
> +  gEfiGenericVariableGuid
> +
> +[Depex]
> +  gEfiSmbiosProtocolGuid
> +
> +
> diff --git a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/SmbiosMisc.h
> b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/SmbiosMisc.h
> new file mode 100644
> index 000000000000..4fd37c4cdc0b
> --- /dev/null
> +++ b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/SmbiosMisc.h
> @@ -0,0 +1,134 @@
> +/** @file
> +  Header file for the SmbiosMisc Driver.
> +
> +  Based on files under Nt32Pkg/MiscSubClassPlatformDxe/
> +
> +  Copyright (c) 2021, NUVIA Inc. All rights reserved.<BR>  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
> +
> +**/
> +
> +#ifndef SMBIOS_MISC_H_
> +#define SMBIOS_MISC_H_
> +
> +#include <Protocol/Smbios.h>
> +#include <IndustryStandard/SmBios.h>
> +
> +//
> +// Data table entry update function.
> +//
> +typedef EFI_STATUS (EFIAPI SMBIOS_MISC_DATA_FUNCTION) (
> +  IN  VOID                 *RecordData,
> +  IN  EFI_SMBIOS_PROTOCOL  *Smbios
> +  );
> +
> +
> +//
> +// Data table entry definition.
> +//
> +typedef struct {
> +  //
> +  // intermediate input data for SMBIOS record
> +  //
> +  VOID                          *RecordData;
> +  SMBIOS_MISC_DATA_FUNCTION     *Function;
> +} SMBIOS_MISC_DATA_TABLE;
> +
> +
> +//
> +// SMBIOS table extern definitions
> +//
> +#define SMBIOS_MISC_TABLE_EXTERNS(NAME1, NAME2, NAME3) \ extern
> NAME1
> +NAME2 ## Data; \ extern SMBIOS_MISC_DATA_FUNCTION NAME3 ##
> Function;
> +
> +
> +//
> +// SMBIOS data table entries
> +//
> +// This is used to define a pair of table structure pointer and
> +functions // in order to iterate through the list of tables, populate
> +them and add // them into the system.
> +#define SMBIOS_MISC_TABLE_ENTRY_DATA_AND_FUNCTION(NAME1,
> NAME2) \ { \
> +  & NAME1 ## Data, \
> +    NAME2 ## Function \
> +}
> +
> +//
> +// Global definition macros.
> +//
> +#define SMBIOS_MISC_TABLE_DATA(NAME1, NAME2) \
> +  NAME1 NAME2 ## Data
> +
> +#define SMBIOS_MISC_TABLE_FUNCTION(NAME2) \
> +  EFI_STATUS EFIAPI NAME2 ## Function( \
> +  IN  VOID                  *RecordData, \
> +  IN  EFI_SMBIOS_PROTOCOL   *Smbios \
> +  )
> +
> +//
> +// Data Table Array Entries
> +//
> +extern EFI_HII_HANDLE               mSmbiosMiscHiiHandle;
> +
> +typedef struct
> _SMBIOS_TYPE13_BIOS_LANGUAGE_INFORMATION_STRING{
> +  UINT8                               *LanguageSignature;
> +  EFI_STRING_ID                       InstallableLanguageLongString;
> +  EFI_STRING_ID                       InstallableLanguageAbbreviateString;
> +} SMBIOS_TYPE13_BIOS_LANGUAGE_INFORMATION_STRING;
> +
> +
> +/**
> +  Adds an SMBIOS record.
> +
> +  @param  Buffer        The data for the SMBIOS record.
> +                        The format of the record is determined by
> +                        EFI_SMBIOS_TABLE_HEADER.Type. The size of the
> +                        formatted area is defined by
> EFI_SMBIOS_TABLE_HEADER.Length
> +                        and either followed by a double-null (0x0000) or a set
> +                        of null terminated strings and a null.
> +  @param  SmbiosHandle  A unique handle will be assigned to the SMBIOS
> record
> +                        if not NULL.
> +
> +  @retval EFI_SUCCESS           Record was added.
> +  @retval EFI_OUT_OF_RESOURCES  Record was not added due to lack of
> system resources.
> +  @retval EFI_ALREADY_STARTED   The SmbiosHandle passed in was already
> in use.
> +
> +**/
> +EFI_STATUS
> +SmbiosMiscAddRecord (
> +  IN       UINT8                      *Buffer,
> +  IN  OUT  EFI_SMBIOS_HANDLE          *SmbiosHandle OPTIONAL
> +  );
> +
> +/**
> + Get Link Type Handle.
> +
> + @param [in]   SmbiosType     Get this Type from SMBIOS table
> + @param [out]  HandleArray    Pointer to handle array which will be freed by
> caller
> + @param [out]  HandleCount    Pointer to handle count
> +
> +**/
> +VOID
> +SmbiosMiscGetLinkTypeHandle(
> +  IN  UINT8                 SmbiosType,
> +  OUT UINT16                **HandleArray,
> +  OUT UINTN                 *HandleCount
> +  );
> +
> +//
> +// Data Table Array
> +//
> +extern SMBIOS_MISC_DATA_TABLE   mSmbiosMiscDataTable[];
> +
> +//
> +// Data Table Array Entries
> +//
> +extern UINTN   mSmbiosMiscDataTableEntries;
> +extern UINT8   mSmbiosMiscDxeStrings[];
> +
> +#endif // SMBIOS_MISC_H_
> diff --git
> a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/SmbiosMiscDataTable.c
> b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/SmbiosMiscDataTable.c
> new file mode 100644
> index 000000000000..ac16c3a2688e
> --- /dev/null
> +++ b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/SmbiosMiscDataTable.c
> @@ -0,0 +1,62 @@
> +/** @file
> +  This file provides SMBIOS Misc Type.
> +
> +  Based on files under Nt32Pkg/MiscSubClassPlatformDxe/
> +
> +  Copyright (c) 2021, NUVIA Inc. All rights reserved.<BR>  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 "SmbiosMisc.h"
> +
> +SMBIOS_MISC_TABLE_EXTERNS (SMBIOS_TABLE_TYPE0,
> +                           MiscBiosVendor,
> +                           MiscBiosVendor) SMBIOS_MISC_TABLE_EXTERNS
> +(SMBIOS_TABLE_TYPE1,
> +                           MiscSystemManufacturer,
> +                           MiscSystemManufacturer)
> +SMBIOS_MISC_TABLE_EXTERNS (SMBIOS_TABLE_TYPE3,
> +                          MiscChassisManufacturer,
> +                          MiscChassisManufacturer)
> +SMBIOS_MISC_TABLE_EXTERNS (SMBIOS_TABLE_TYPE2,
> +                           MiscBaseBoardManufacturer,
> +                           MiscBaseBoardManufacturer)
> +SMBIOS_MISC_TABLE_EXTERNS (SMBIOS_TABLE_TYPE13,
> +                           MiscNumberOfInstallableLanguages,
> +                           MiscNumberOfInstallableLanguages)
> +SMBIOS_MISC_TABLE_EXTERNS (SMBIOS_TABLE_TYPE32,
> +                           MiscBootInformation,
> +                           MiscBootInformation)
> +
> +
> +SMBIOS_MISC_DATA_TABLE mSmbiosMiscDataTable[] = {
> +  // Type0
> +  SMBIOS_MISC_TABLE_ENTRY_DATA_AND_FUNCTION (MiscBiosVendor,
> +                                             MiscBiosVendor),
> +  // Type1
> +  SMBIOS_MISC_TABLE_ENTRY_DATA_AND_FUNCTION
> (MiscSystemManufacturer,
> +                                             MiscSystemManufacturer),
> +  // Type3
> +  SMBIOS_MISC_TABLE_ENTRY_DATA_AND_FUNCTION
> (MiscChassisManufacturer,
> +                                             MiscChassisManufacturer),
> +  // Type2
> +  SMBIOS_MISC_TABLE_ENTRY_DATA_AND_FUNCTION
> (MiscBaseBoardManufacturer,
> +
> +MiscBaseBoardManufacturer),
> +  // Type13
> +  SMBIOS_MISC_TABLE_ENTRY_DATA_AND_FUNCTION
> (MiscNumberOfInstallableLanguages,
> +
> +MiscNumberOfInstallableLanguages),
> +  // Type32
> +  SMBIOS_MISC_TABLE_ENTRY_DATA_AND_FUNCTION
> (MiscBootInformation,
> +                                             MiscBootInformation), };
> +
> +
> +//
> +// Number of Data Table entries.
> +//
> +UINTN mSmbiosMiscDataTableEntries =
> +  (sizeof (mSmbiosMiscDataTable)) / sizeof (SMBIOS_MISC_DATA_TABLE);
> diff --git
> a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/SmbiosMiscEntryPoint.c
> b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/SmbiosMiscEntryPoint.c
> new file mode 100644
> index 000000000000..37e79d285e57
> --- /dev/null
> +++ b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/SmbiosMiscEntryPoint.c
> @@ -0,0 +1,227 @@
> +/** @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) 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/BaseLib.h>
> +#include <Library/BaseMemoryLib.h>
> +#include <Library/DebugLib.h>
> +#include <Library/HiiLib.h>
> +#include <Library/MemoryAllocationLib.h> #include
> +<Library/UefiBootServicesTableLib.h>
> +
> +#include "SmbiosMisc.h"
> +
> +
> +STATIC EFI_HANDLE           mSmbiosMiscImageHandle;
> +STATIC EFI_SMBIOS_PROTOCOL  *mSmbiosMiscSmbios = NULL;
> +
> +EFI_HII_HANDLE       mSmbiosMiscHiiHandle;
> +
> +/**
> +  Standard EFI driver point.  This driver parses the
> +mSmbiosMiscDataTable
> +  structure and reports any generated data using SMBIOS protocol.
> +
> +  @param  ImageHandle     Handle for the image of this driver
> +  @param  SystemTable     Pointer to the EFI System Table
> +
> +  @retval  EFI_SUCCESS    The data was successfully stored.
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +SmbiosMiscEntryPoint(
> +  IN EFI_HANDLE         ImageHandle,
> +  IN EFI_SYSTEM_TABLE   *SystemTable
> +  )
> +{
> +  UINTN                Index;
> +  EFI_STATUS           EfiStatus;
> +
> +  mSmbiosMiscImageHandle = ImageHandle;
> +
> +  EfiStatus = gBS->LocateProtocol (&gEfiSmbiosProtocolGuid, NULL,
> +                                   (VOID**)&mSmbiosMiscSmbios);  if
> + (EFI_ERROR (EfiStatus)) {
> +    DEBUG ((DEBUG_ERROR, "Could not locate SMBIOS protocol.  %r\n",
> EfiStatus));
> +    return EfiStatus;
> +  }
> +
> +  mSmbiosMiscHiiHandle = HiiAddPackages (
> +                 &gEfiCallerIdGuid,
> +                  mSmbiosMiscImageHandle,
> +                  SmbiosMiscDxeStrings,
> +                  NULL
> +                  );
> +  if (mSmbiosMiscHiiHandle == NULL) {
> +    return EFI_OUT_OF_RESOURCES;
> +  }
> +
> +  for (Index = 0; Index < mSmbiosMiscDataTableEntries; ++Index) {
> +    //
> +    // If the entry have a function pointer, just log the data.
> +    //
> +    if (mSmbiosMiscDataTable[Index].Function != NULL) {
> +      EfiStatus = (*mSmbiosMiscDataTable[Index].Function)(
> +          mSmbiosMiscDataTable[Index].RecordData,
> +          mSmbiosMiscSmbios
> +          );
> +
> +      if (EFI_ERROR(EfiStatus)) {
> +        DEBUG ((DEBUG_ERROR, "Misc smbios store error.  Index=%d,"
> +                "ReturnStatus=%r\n", Index, EfiStatus));
> +        return EfiStatus;
> +      }
> +    }
> +  }
> +
> +  return EfiStatus;
> +}
> +
> +
> +/**
> +  Adds an SMBIOS record.
> +
> +  @param  Buffer        The data for the SMBIOS record.
> +                        The format of the record is determined by
> +                        EFI_SMBIOS_TABLE_HEADER.Type. The size of the
> +                        formatted area is defined by
> EFI_SMBIOS_TABLE_HEADER.Length
> +                        and either followed by a double-null (0x0000) or a set
> +                        of null terminated strings and a null.
> +  @param  SmbiosHandle  A unique handle will be assigned to the SMBIOS
> record
> +                        if not NULL.
> +
> +  @retval EFI_SUCCESS           Record was added.
> +  @retval EFI_OUT_OF_RESOURCES  Record was not added due to lack of
> system resources.
> +  @retval EFI_ALREADY_STARTED   The SmbiosHandle passed in was already
> in use.
> +
> +**/
> +EFI_STATUS
> +SmbiosMiscAddRecord (
> +  IN  UINT8                 *Buffer,
> +  IN OUT EFI_SMBIOS_HANDLE  *SmbiosHandle OPTIONAL
> +  )
> +{
> +  EFI_STATUS         Status;
> +  EFI_SMBIOS_HANDLE  Handle;
> +
> +  Handle = SMBIOS_HANDLE_PI_RESERVED;
> +
> +  if (SmbiosHandle != NULL) {
> +    Handle = *SmbiosHandle;
> +  }
> +
> +  Status = mSmbiosMiscSmbios->Add (
> +             mSmbiosMiscSmbios,
> +             NULL,
> +             &Handle,
> +             (EFI_SMBIOS_TABLE_HEADER *)Buffer
> +             );
> +
> +  if (SmbiosHandle != NULL) {
> +    *SmbiosHandle = Handle;
> +  }
> +
> +  return Status;
> +}
> +
> +
> +/** Fetches the number of handles of the specified SMBIOS type
> + *
> + *  @param SmbiosType The type of SMBIOS record to look for
> + *
> + *  @return The number of handles
> + *
> +**/
> +STATIC
> +UINTN
> +GetHandleCount (
> +  IN  UINT8 SmbiosType
> +  )
> +{
> +  UINTN                    HandleCount;
> +  EFI_STATUS               Status;
> +  EFI_SMBIOS_HANDLE        SmbiosHandle;
> +  EFI_SMBIOS_TABLE_HEADER  *Record;
> +
> +  HandleCount = 0;
> +
> +  // Iterate through entries to get the number  do {
> +    Status = mSmbiosMiscSmbios->GetNext (
> +                        mSmbiosMiscSmbios,
> +                        &SmbiosHandle,
> +                        &SmbiosType,
> +                        &Record,
> +                        NULL
> +                        );
> +
> +    if (Status == EFI_SUCCESS) {
> +      HandleCount++;
> +    }
> +  } while (!EFI_ERROR (Status));
> +
> +  return HandleCount;
> +}
> +
> +/**
> +  Fetches a list of the specified SMBIOS table types.
> +
> +  @param[in]  SmbiosType    The type of table to fetch
> +  @param[out] **HandleArray The array of handles
> +  @param[out] *HandleCount  Number of handles in the array **/ VOID
> +SmbiosMiscGetLinkTypeHandle(
> +  IN  UINT8                 SmbiosType,
> +  OUT SMBIOS_HANDLE         **HandleArray,
> +  OUT UINTN                 *HandleCount
> +  )
> +{
> +  UINTN                    Index;
> +  EFI_STATUS               Status;
> +  EFI_SMBIOS_HANDLE        SmbiosHandle;
> +  EFI_SMBIOS_TABLE_HEADER  *Record;
> +
> +  if (mSmbiosMiscSmbios == NULL) {
> +    return;
> +  }
> +
> +  SmbiosHandle = SMBIOS_HANDLE_PI_RESERVED;  *HandleCount =
> + GetHandleCount (SmbiosType);
> +
> +  *HandleArray = AllocateZeroPool (sizeof (SMBIOS_HANDLE) *
> + (*HandleCount));  if (*HandleArray == NULL) {
> +    DEBUG ((DEBUG_ERROR, "HandleArray allocate memory resource
> failed.\n"));
> +    *HandleCount = 0;
> +    return;
> +  }
> +
> +  SmbiosHandle = SMBIOS_HANDLE_PI_RESERVED;
> +
> +  for (Index = 0; Index < (*HandleCount); Index++) {
> +    Status = mSmbiosMiscSmbios->GetNext (
> +                        mSmbiosMiscSmbios,
> +                        &SmbiosHandle,
> +                        &SmbiosType,
> +                        &Record,
> +                        NULL
> +                        );
> +
> +    if (!EFI_ERROR (Status)) {
> +      (*HandleArray)[Index] = Record->Handle;
> +    } else {
> +      break;
> +    }
> +  }
> +}
> +
> diff --git
> a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/SmbiosMiscDxeStrings.uni
> b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/SmbiosMiscDxeStrings.uni
> new file mode 100644
> index 000000000000..6f877e706922
> --- /dev/null
> +++ b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/SmbiosMiscDxeStrings.uni
> @@ -0,0 +1,22 @@
> +/** @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
> + *
> + *
> +**/
> +
> +
> +/=#
> +
> +#langdef en-US "English"
> +
> +#include "Type00/MiscBiosVendor.uni"
> +#include "Type01/MiscSystemManufacturer.uni"
> +#include "Type02/MiscBaseBoardManufacturer.uni"
> +#include "Type03/MiscChassisManufacturer.uni"
> +#include "Type13/MiscNumberOfInstallableLanguages.uni"
> --
> 2.26.2
> 
> 
> 
> 
> 



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#70741): https://edk2.groups.io/g/devel/message/70741
Mute This Topic: https://groups.io/mt/79679270/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