mirror of https://github.com/acidanthera/audk.git
ArmPkg: Add Universal/Smbios/SmbiosMiscDxe
SmbiosMiscDxe provides SMBIOS tables 0, 1, 2, 3, 13, and 32. Signed-off-by: Rebecca Cran <rebecca@nuviainc.com> Reviewed-by: Leif Lindholm <leif@nuviainc.com> Reviewed-by: Samer El-Haj-Mahmoud <Samer.El-Haj-Mahmoud@arm.com>
This commit is contained in:
parent
660d4faa29
commit
ecc267fec5
|
@ -149,6 +149,7 @@
|
|||
ArmPkg/Drivers/ArmScmiDxe/ArmScmiDxe.inf
|
||||
|
||||
ArmPkg/Universal/Smbios/ProcessorSubClassDxe/ProcessorSubClassDxe.inf
|
||||
ArmPkg/Universal/Smbios/SmbiosMiscDxe/SmbiosMiscDxe.inf
|
||||
|
||||
[Components.AARCH64]
|
||||
ArmPkg/Drivers/MmCommunicationDxe/MmCommunication.inf
|
||||
|
|
|
@ -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_
|
|
@ -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);
|
|
@ -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
|
||||
|
||||
|
|
@ -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"
|
|
@ -0,0 +1,223 @@
|
|||
/** @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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue