mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-23 13:44:33 +02:00
MdeModulePkg ErstFmpDxe: Create ESRT in ReadyToBoot event
Current code just creates ESRT entry in FMP notification and installs ESRT configuration table in ReadyToBoot event. The LastAttemptVersion and LastAttemptStatus in ESRT will be out of date after system continues to boot without reset after capsule update (reset is not required or capsule update is failed). This patches updates the code to create ESRT based on all FMP instances in ReadyToBoot event. Cc: Michael D Kinney <michael.d.kinney@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>
This commit is contained in:
parent
27e42bf61b
commit
6ec4d300fe
@ -55,47 +55,34 @@ PrintTable (
|
|||||||
//
|
//
|
||||||
#define GROWTH_STEP 10
|
#define GROWTH_STEP 10
|
||||||
|
|
||||||
//
|
|
||||||
// Module globals.
|
|
||||||
//
|
|
||||||
EFI_EVENT mEsrtReadyToBootEvent;
|
|
||||||
EFI_SYSTEM_RESOURCE_TABLE *mTable = NULL;
|
|
||||||
BOOLEAN mEsrtInstalled = FALSE;
|
|
||||||
EFI_EVENT mFmpInstallEvent;
|
|
||||||
VOID *mFmpInstallEventRegistration = NULL;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Install EFI System Resource Table into the UEFI Configuration Table
|
Install EFI System Resource Table into the UEFI Configuration Table
|
||||||
|
|
||||||
|
@param[in] Table Pointer to the ESRT.
|
||||||
|
|
||||||
@return Status code.
|
@return Status code.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
InstallEfiSystemResourceTableInUefiConfigurationTable (
|
InstallEfiSystemResourceTableInUefiConfigurationTable (
|
||||||
VOID
|
IN EFI_SYSTEM_RESOURCE_TABLE *Table
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
|
|
||||||
Status = EFI_SUCCESS;
|
Status = EFI_SUCCESS;
|
||||||
if (!mEsrtInstalled) {
|
if (Table->FwResourceCount == 0) {
|
||||||
if (mTable == NULL) {
|
DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Can't install ESRT table because it has zero Entries. \n"));
|
||||||
DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Can't install ESRT table because it is NULL. \n"));
|
Status = EFI_UNSUPPORTED;
|
||||||
Status = EFI_OUT_OF_RESOURCES;
|
} else {
|
||||||
} else if (mTable->FwResourceCount == 0) {
|
//
|
||||||
DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Can't install ESRT table because it has zero Entries. \n"));
|
// Install the pointer into config table
|
||||||
Status = EFI_UNSUPPORTED;
|
//
|
||||||
|
Status = gBS->InstallConfigurationTable (&gEfiSystemResourceTableGuid, Table);
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Can't install ESRT table. Status: %r. \n", Status));
|
||||||
} else {
|
} else {
|
||||||
//
|
DEBUG ((DEBUG_INFO, "EsrtFmpDxe: Installed ESRT table. \n"));
|
||||||
// Install the pointer into config table
|
|
||||||
//
|
|
||||||
Status = gBS->InstallConfigurationTable (&gEfiSystemResourceTableGuid, mTable);
|
|
||||||
if (EFI_ERROR (Status)) {
|
|
||||||
DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Can't install ESRT table. Status: %r. \n", Status));
|
|
||||||
} else {
|
|
||||||
DEBUG ((DEBUG_INFO, "EsrtFmpDxe: Installed ESRT table. \n"));
|
|
||||||
mEsrtInstalled = TRUE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Status;
|
return Status;
|
||||||
@ -135,15 +122,18 @@ IsSystemFmp (
|
|||||||
given a FMP descriptor. If the guid is already in the ESRT it
|
given a FMP descriptor. If the guid is already in the ESRT it
|
||||||
will be ignored. The ESRT will grow if it does not have enough room.
|
will be ignored. The ESRT will grow if it does not have enough room.
|
||||||
|
|
||||||
@param[in] FmpImageInfoBuf Pointer to the EFI_FIRMWARE_IMAGE_DESCRIPTOR.
|
@param[in, out] Table On input, pointer to the pointer to the ESRT.
|
||||||
@param[in] FmpVersion FMP Version.
|
On output, same as input or pointer to the pointer
|
||||||
|
to new enlarged ESRT.
|
||||||
|
@param[in] FmpImageInfoBuf Pointer to the EFI_FIRMWARE_IMAGE_DESCRIPTOR.
|
||||||
|
@param[in] FmpVersion FMP Version.
|
||||||
|
|
||||||
@return Status code.
|
@return Status code.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
|
||||||
CreateEsrtEntry (
|
CreateEsrtEntry (
|
||||||
|
IN OUT EFI_SYSTEM_RESOURCE_TABLE **Table,
|
||||||
IN EFI_FIRMWARE_IMAGE_DESCRIPTOR *FmpImageInfoBuf,
|
IN EFI_FIRMWARE_IMAGE_DESCRIPTOR *FmpImageInfoBuf,
|
||||||
IN UINT32 FmpVersion
|
IN UINT32 FmpVersion
|
||||||
)
|
)
|
||||||
@ -156,18 +146,11 @@ CreateEsrtEntry (
|
|||||||
Index = 0;
|
Index = 0;
|
||||||
Entry = NULL;
|
Entry = NULL;
|
||||||
|
|
||||||
//
|
Entry = (EFI_SYSTEM_RESOURCE_ENTRY *)((*Table) + 1);
|
||||||
// Get our ESRT table. This should never be null at this point
|
|
||||||
//
|
|
||||||
if (mTable == NULL) {
|
|
||||||
return EFI_DEVICE_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
Entry = (EFI_SYSTEM_RESOURCE_ENTRY *)(mTable + 1);
|
|
||||||
//
|
//
|
||||||
// Make sure Guid isn't already in the list
|
// Make sure Guid isn't already in the list
|
||||||
//
|
//
|
||||||
for (Index = 0; Index < mTable->FwResourceCount; Index++) {
|
for (Index = 0; Index < (*Table)->FwResourceCount; Index++) {
|
||||||
if (CompareGuid (&Entry->FwClass, &FmpImageInfoBuf->ImageTypeId)) {
|
if (CompareGuid (&Entry->FwClass, &FmpImageInfoBuf->ImageTypeId)) {
|
||||||
DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: ESRT Entry already exists for FMP Instance with GUID %g\n", &Entry->FwClass));
|
DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: ESRT Entry already exists for FMP Instance with GUID %g\n", &Entry->FwClass));
|
||||||
return EFI_INVALID_PARAMETER;
|
return EFI_INVALID_PARAMETER;
|
||||||
@ -178,18 +161,8 @@ CreateEsrtEntry (
|
|||||||
//
|
//
|
||||||
// Grow table if needed
|
// Grow table if needed
|
||||||
//
|
//
|
||||||
if (mTable->FwResourceCount >= mTable->FwResourceCountMax) {
|
if ((*Table)->FwResourceCount >= (*Table)->FwResourceCountMax) {
|
||||||
//
|
NewSize = (((*Table)->FwResourceCountMax + GROWTH_STEP) * sizeof (EFI_SYSTEM_RESOURCE_ENTRY)) + sizeof (EFI_SYSTEM_RESOURCE_TABLE);
|
||||||
// Can't grow table after installed.
|
|
||||||
// Only because didn't add support for this.
|
|
||||||
// Would need to re-install ESRT in system table if wanted to support
|
|
||||||
//
|
|
||||||
if (mEsrtInstalled) {
|
|
||||||
DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Failed to install entry because ESRT table needed to grow after table already installed. \n"));
|
|
||||||
return EFI_OUT_OF_RESOURCES;
|
|
||||||
}
|
|
||||||
|
|
||||||
NewSize = ((mTable->FwResourceCountMax + GROWTH_STEP) * sizeof (EFI_SYSTEM_RESOURCE_ENTRY)) + sizeof (EFI_SYSTEM_RESOURCE_TABLE);
|
|
||||||
NewTable = AllocateZeroPool (NewSize);
|
NewTable = AllocateZeroPool (NewSize);
|
||||||
if (NewTable == NULL) {
|
if (NewTable == NULL) {
|
||||||
DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Failed to allocate memory larger table for ESRT. \n"));
|
DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Failed to allocate memory larger table for ESRT. \n"));
|
||||||
@ -200,8 +173,8 @@ CreateEsrtEntry (
|
|||||||
//
|
//
|
||||||
CopyMem (
|
CopyMem (
|
||||||
NewTable,
|
NewTable,
|
||||||
mTable,
|
(*Table),
|
||||||
((mTable->FwResourceCountMax) * sizeof (EFI_SYSTEM_RESOURCE_ENTRY)) + sizeof (EFI_SYSTEM_RESOURCE_TABLE)
|
(((*Table)->FwResourceCountMax) * sizeof (EFI_SYSTEM_RESOURCE_ENTRY)) + sizeof (EFI_SYSTEM_RESOURCE_TABLE)
|
||||||
);
|
);
|
||||||
//
|
//
|
||||||
// Update max
|
// Update max
|
||||||
@ -210,25 +183,25 @@ CreateEsrtEntry (
|
|||||||
//
|
//
|
||||||
// Free old table
|
// Free old table
|
||||||
//
|
//
|
||||||
FreePool (mTable);
|
FreePool ((*Table));
|
||||||
//
|
//
|
||||||
// Reassign pointer to new table.
|
// Reassign pointer to new table.
|
||||||
//
|
//
|
||||||
mTable = NewTable;
|
(*Table) = NewTable;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// ESRT table has enough room for the new entry so add new entry
|
// ESRT table has enough room for the new entry so add new entry
|
||||||
//
|
//
|
||||||
Entry = (EFI_SYSTEM_RESOURCE_ENTRY *)(((UINT8 *)mTable) + sizeof (EFI_SYSTEM_RESOURCE_TABLE));
|
Entry = (EFI_SYSTEM_RESOURCE_ENTRY *)(((UINT8 *)(*Table)) + sizeof (EFI_SYSTEM_RESOURCE_TABLE));
|
||||||
//
|
//
|
||||||
// Move to the location of new entry
|
// Move to the location of new entry
|
||||||
//
|
//
|
||||||
Entry = Entry + mTable->FwResourceCount;
|
Entry = Entry + (*Table)->FwResourceCount;
|
||||||
//
|
//
|
||||||
// Increment resource count
|
// Increment resource count
|
||||||
//
|
//
|
||||||
mTable->FwResourceCount++;
|
(*Table)->FwResourceCount++;
|
||||||
|
|
||||||
CopyGuid (&Entry->FwClass, &FmpImageInfoBuf->ImageTypeId);
|
CopyGuid (&Entry->FwClass, &FmpImageInfoBuf->ImageTypeId);
|
||||||
|
|
||||||
@ -264,23 +237,23 @@ CreateEsrtEntry (
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Notify function for every Firmware Management Protocol being installed.
|
Function to create ESRT based on FMP Instances.
|
||||||
Get the descriptors from FMP Instance and create ESRT entries (ESRE)
|
Create ESRT table, get the descriptors from FMP Instance and
|
||||||
|
create ESRT entries (ESRE).
|
||||||
|
|
||||||
@param[in] Event The Event that is being processed.
|
@return Pointer to the ESRT created.
|
||||||
@param[in] Context The Event Context.
|
|
||||||
|
|
||||||
**/
|
**/
|
||||||
VOID
|
EFI_SYSTEM_RESOURCE_TABLE *
|
||||||
EFIAPI
|
CreateFmpBasedEsrt (
|
||||||
FmpInstallProtocolNotify (
|
VOID
|
||||||
IN EFI_EVENT Event,
|
|
||||||
IN VOID *Context
|
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
EFI_HANDLE Handle;
|
EFI_SYSTEM_RESOURCE_TABLE *Table;
|
||||||
UINTN BufferSize;
|
UINTN NoProtocols;
|
||||||
|
VOID **Buffer;
|
||||||
|
UINTN Index;
|
||||||
EFI_FIRMWARE_MANAGEMENT_PROTOCOL *Fmp;
|
EFI_FIRMWARE_MANAGEMENT_PROTOCOL *Fmp;
|
||||||
UINTN DescriptorSize;
|
UINTN DescriptorSize;
|
||||||
EFI_FIRMWARE_IMAGE_DESCRIPTOR *FmpImageInfoBuf;
|
EFI_FIRMWARE_IMAGE_DESCRIPTOR *FmpImageInfoBuf;
|
||||||
@ -292,29 +265,43 @@ FmpInstallProtocolNotify (
|
|||||||
CHAR16 *PackageVersionName;
|
CHAR16 *PackageVersionName;
|
||||||
|
|
||||||
Status = EFI_SUCCESS;
|
Status = EFI_SUCCESS;
|
||||||
Handle = 0;
|
Table = NULL;
|
||||||
BufferSize = 0;
|
NoProtocols = 0;
|
||||||
|
Buffer = NULL;
|
||||||
PackageVersionName = NULL;
|
PackageVersionName = NULL;
|
||||||
FmpImageInfoBuf = NULL;
|
FmpImageInfoBuf = NULL;
|
||||||
FmpImageInfoBufOrg = NULL;
|
FmpImageInfoBufOrg = NULL;
|
||||||
Fmp = NULL;
|
Fmp = NULL;
|
||||||
|
|
||||||
DEBUG ((DEBUG_INFO, "FMP Installed Notify\n"));
|
Status = EfiLocateProtocolBuffer (
|
||||||
while (TRUE) {
|
&gEfiFirmwareManagementProtocolGuid,
|
||||||
BufferSize = sizeof (EFI_HANDLE);
|
&NoProtocols,
|
||||||
Status = gBS->LocateHandle (ByRegisterNotify, NULL, mFmpInstallEventRegistration, &BufferSize, &Handle);
|
&Buffer
|
||||||
if (EFI_ERROR (Status)) {
|
);
|
||||||
DEBUG ((DEBUG_WARN, "EsrtFmpDxe: Failed to Locate handle from notify value. Status: %r\n", Status));
|
if (EFI_ERROR(Status) || (Buffer == NULL)) {
|
||||||
return;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Allocate Memory for table
|
||||||
|
//
|
||||||
|
Table = AllocateZeroPool (
|
||||||
|
(GROWTH_STEP * sizeof (EFI_SYSTEM_RESOURCE_ENTRY)) + sizeof (EFI_SYSTEM_RESOURCE_TABLE)
|
||||||
|
);
|
||||||
|
if (Table == NULL) {
|
||||||
|
DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Failed to allocate memory for ESRT.\n"));
|
||||||
|
gBS->FreePool (Buffer);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
Table->FwResourceCount = 0;
|
||||||
|
Table->FwResourceCountMax = GROWTH_STEP;
|
||||||
|
Table->FwResourceVersion = EFI_SYSTEM_RESOURCE_TABLE_FIRMWARE_RESOURCE_VERSION;
|
||||||
|
|
||||||
|
for (Index = 0; Index < NoProtocols; Index++) {
|
||||||
|
Fmp = (EFI_FIRMWARE_MANAGEMENT_PROTOCOL *) Buffer[Index];
|
||||||
|
|
||||||
Status = gBS->HandleProtocol (Handle, &gEfiFirmwareManagementProtocolGuid, (VOID **)&Fmp);
|
|
||||||
if (EFI_ERROR (Status)) {
|
|
||||||
DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Failed to get FMP for a handle 0x%x\n", Handle));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
ImageInfoSize = 0;
|
ImageInfoSize = 0;
|
||||||
|
|
||||||
Status = Fmp->GetImageInfo (
|
Status = Fmp->GetImageInfo (
|
||||||
Fmp, // FMP Pointer
|
Fmp, // FMP Pointer
|
||||||
&ImageInfoSize, // Buffer Size (in this case 0)
|
&ImageInfoSize, // Buffer Size (in this case 0)
|
||||||
@ -331,7 +318,6 @@ FmpInstallProtocolNotify (
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
FmpImageInfoBuf = NULL;
|
|
||||||
FmpImageInfoBuf = AllocateZeroPool (ImageInfoSize);
|
FmpImageInfoBuf = AllocateZeroPool (ImageInfoSize);
|
||||||
if (FmpImageInfoBuf == NULL) {
|
if (FmpImageInfoBuf == NULL) {
|
||||||
DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Failed to get memory for descriptors.\n"));
|
DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Failed to get memory for descriptors.\n"));
|
||||||
@ -352,7 +338,9 @@ FmpInstallProtocolNotify (
|
|||||||
);
|
);
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Failure in GetImageInfo. Status = %r\n", Status));
|
DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Failure in GetImageInfo. Status = %r\n", Status));
|
||||||
goto CleanUp;
|
FreePool (FmpImageInfoBufOrg);
|
||||||
|
FmpImageInfoBufOrg = NULL;
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -366,7 +354,7 @@ FmpInstallProtocolNotify (
|
|||||||
//
|
//
|
||||||
// Create ESRT entry
|
// Create ESRT entry
|
||||||
//
|
//
|
||||||
CreateEsrtEntry (FmpImageInfoBuf, FmpImageInfoDescriptorVer);
|
CreateEsrtEntry (&Table, FmpImageInfoBuf, FmpImageInfoDescriptorVer);
|
||||||
}
|
}
|
||||||
FmpImageInfoCount--;
|
FmpImageInfoCount--;
|
||||||
//
|
//
|
||||||
@ -379,17 +367,12 @@ FmpInstallProtocolNotify (
|
|||||||
FreePool (PackageVersionName);
|
FreePool (PackageVersionName);
|
||||||
PackageVersionName = NULL;
|
PackageVersionName = NULL;
|
||||||
}
|
}
|
||||||
if (FmpImageInfoBufOrg != NULL) {
|
FreePool (FmpImageInfoBufOrg);
|
||||||
FreePool (FmpImageInfoBufOrg);
|
FmpImageInfoBufOrg = NULL;
|
||||||
FmpImageInfoBufOrg = NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CleanUp:
|
gBS->FreePool (Buffer);
|
||||||
if (FmpImageInfoBufOrg != NULL) {
|
return Table;
|
||||||
FreePool (FmpImageInfoBufOrg);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -407,14 +390,30 @@ EsrtReadyToBootEventNotify (
|
|||||||
IN VOID *Context
|
IN VOID *Context
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
InstallEfiSystemResourceTableInUefiConfigurationTable ();
|
EFI_STATUS Status;
|
||||||
|
EFI_SYSTEM_RESOURCE_TABLE *Table;
|
||||||
|
|
||||||
|
Table = CreateFmpBasedEsrt ();
|
||||||
|
if (Table != NULL) {
|
||||||
|
//
|
||||||
|
// Print table on debug builds
|
||||||
|
//
|
||||||
|
DEBUG_CODE_BEGIN ();
|
||||||
|
PrintTable (Table);
|
||||||
|
DEBUG_CODE_END ();
|
||||||
|
|
||||||
|
Status = InstallEfiSystemResourceTableInUefiConfigurationTable (Table);
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
FreePool (Table);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Can't install ESRT table because it is NULL. \n"));
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Print table on debug builds
|
// Close the event to prevent it be signalled again.
|
||||||
//
|
//
|
||||||
DEBUG_CODE_BEGIN ();
|
gBS->CloseEvent (Event);
|
||||||
PrintTable (mTable);
|
|
||||||
DEBUG_CODE_END ();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -435,39 +434,7 @@ EsrtFmpEntryPoint (
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
|
EFI_EVENT EsrtReadyToBootEvent;
|
||||||
//
|
|
||||||
// Allocate Memory for table
|
|
||||||
//
|
|
||||||
mTable = AllocateZeroPool (
|
|
||||||
(GROWTH_STEP * sizeof (EFI_SYSTEM_RESOURCE_ENTRY)) + sizeof (EFI_SYSTEM_RESOURCE_TABLE)
|
|
||||||
);
|
|
||||||
ASSERT (mTable != NULL);
|
|
||||||
if (mTable == NULL) {
|
|
||||||
DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Failed to allocate memory for ESRT.\n"));
|
|
||||||
return EFI_OUT_OF_RESOURCES;
|
|
||||||
}
|
|
||||||
|
|
||||||
mTable->FwResourceCount = 0;
|
|
||||||
mTable->FwResourceCountMax = GROWTH_STEP;
|
|
||||||
mTable->FwResourceVersion = EFI_SYSTEM_RESOURCE_TABLE_FIRMWARE_RESOURCE_VERSION;
|
|
||||||
|
|
||||||
//
|
|
||||||
// Register notify function for all FMP installed
|
|
||||||
//
|
|
||||||
mFmpInstallEvent = EfiCreateProtocolNotifyEvent (
|
|
||||||
&gEfiFirmwareManagementProtocolGuid,
|
|
||||||
TPL_CALLBACK,
|
|
||||||
FmpInstallProtocolNotify,
|
|
||||||
NULL,
|
|
||||||
&mFmpInstallEventRegistration
|
|
||||||
);
|
|
||||||
|
|
||||||
ASSERT (mFmpInstallEvent != NULL);
|
|
||||||
|
|
||||||
if (mFmpInstallEvent == NULL) {
|
|
||||||
DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Failed to Create Protocol Notify Event for FMP.\n"));
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Register notify function to install ESRT on ReadyToBoot Event.
|
// Register notify function to install ESRT on ReadyToBoot Event.
|
||||||
@ -476,7 +443,7 @@ EsrtFmpEntryPoint (
|
|||||||
TPL_CALLBACK,
|
TPL_CALLBACK,
|
||||||
EsrtReadyToBootEventNotify,
|
EsrtReadyToBootEventNotify,
|
||||||
NULL,
|
NULL,
|
||||||
&mEsrtReadyToBootEvent
|
&EsrtReadyToBootEvent
|
||||||
);
|
);
|
||||||
|
|
||||||
ASSERT_EFI_ERROR (Status);
|
ASSERT_EFI_ERROR (Status);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user