From 760f1cafdd689beedc8418ab89e856b54296389c Mon Sep 17 00:00:00 2001 From: CoolStar Date: Sun, 4 Dec 2016 12:07:30 -0800 Subject: [PATCH] CorebootBdsLib: Call End of DXE event to allow booting 3rd party efi binaries. --- .../Library/CorebootBdsLib/BdsPlatform.c | 42 ++++++++++++++++++++++ .../Library/CorebootBdsLib/PlatformBds.inf | 1 + 2 files changed, 43 insertions(+) diff --git a/CorebootModulePkg/Library/CorebootBdsLib/BdsPlatform.c b/CorebootModulePkg/Library/CorebootBdsLib/BdsPlatform.c index b6253a17f8..cf3e5320cb 100644 --- a/CorebootModulePkg/Library/CorebootBdsLib/BdsPlatform.c +++ b/CorebootModulePkg/Library/CorebootBdsLib/BdsPlatform.c @@ -1129,6 +1129,46 @@ Returns: Status = BaseMemoryTest (MemoryTestLevel); } +VOID +EFIAPI +InternalBdsEmptyCallbackFuntion ( + IN EFI_EVENT Event, + IN VOID *Context + ) +{ + return; +} + +VOID +InstallReadyToLock ( + VOID + ) +{ + EFI_STATUS Status; + EFI_EVENT EndOfDxeEvent; + + DEBUG((DEBUG_INFO,"InstallReadyToLock entering......\n")); + // + // Inform the SMM infrastructure that we're entering BDS and may run 3rd party code hereafter + // Since PI1.2.1, we need signal EndOfDxe as ExitPmAuth + // + Status = gBS->CreateEventEx ( + EVT_NOTIFY_SIGNAL, + TPL_CALLBACK, + InternalBdsEmptyCallbackFuntion, + NULL, + &gEfiEndOfDxeEventGroupGuid, + &EndOfDxeEvent + ); + ASSERT_EFI_ERROR (Status); + gBS->SignalEvent (EndOfDxeEvent); + gBS->CloseEvent (EndOfDxeEvent); + DEBUG((DEBUG_INFO,"All EndOfDxe callbacks have returned successfully\n")); + + DEBUG((DEBUG_INFO,"InstallReadyToLock end\n")); + return; +} + VOID EFIAPI PlatformBdsPolicyBehavior ( @@ -1164,6 +1204,8 @@ Returns: EFI_INPUT_KEY Key; EFI_BOOT_MODE BootMode; + InstallReadyToLock(); + // // Init the time out value // diff --git a/CorebootModulePkg/Library/CorebootBdsLib/PlatformBds.inf b/CorebootModulePkg/Library/CorebootBdsLib/PlatformBds.inf index 578c74afae..992bd846bd 100644 --- a/CorebootModulePkg/Library/CorebootBdsLib/PlatformBds.inf +++ b/CorebootModulePkg/Library/CorebootBdsLib/PlatformBds.inf @@ -58,6 +58,7 @@ gEfiSmbiosTableGuid gEfiAcpiTableGuid gLdrMemoryDescriptorGuid + gEfiEndOfDxeEventGroupGuid [Pcd] gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut -- 2.13.2.725.g09c95d1e9-goog