mirror of https://github.com/acidanthera/audk.git
CorebootPayloadPkg: Notify EndOfDxe and install ReadyToLock protocol.
Update PlatformBootManagerLib to notify EndOfDxe event and install SmmReadyToLock protocol since other modules depend on them. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: gdong1 <guo.dong@intel.com> Reviewed-by: Maurice Ma <maurice.ma@intel.com>
This commit is contained in:
parent
2f20bfd98e
commit
c46bf81d2d
|
@ -2,7 +2,7 @@
|
||||||
This file include all platform action which can be customized
|
This file include all platform action which can be customized
|
||||||
by IBV/OEM.
|
by IBV/OEM.
|
||||||
|
|
||||||
Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
|
@ -16,6 +16,63 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
#include "PlatformBootManager.h"
|
#include "PlatformBootManager.h"
|
||||||
#include "PlatformConsole.h"
|
#include "PlatformConsole.h"
|
||||||
|
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
InternalBdsEmptyCallbackFuntion (
|
||||||
|
IN EFI_EVENT Event,
|
||||||
|
IN VOID *Context
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
VOID
|
||||||
|
InstallReadyToLock (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
EFI_STATUS Status;
|
||||||
|
EFI_HANDLE Handle;
|
||||||
|
EFI_SMM_ACCESS2_PROTOCOL *SmmAccess;
|
||||||
|
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"));
|
||||||
|
|
||||||
|
//
|
||||||
|
// Install DxeSmmReadyToLock protocol in order to lock SMM
|
||||||
|
//
|
||||||
|
Status = gBS->LocateProtocol (&gEfiSmmAccess2ProtocolGuid, NULL, (VOID **) &SmmAccess);
|
||||||
|
if (!EFI_ERROR (Status)) {
|
||||||
|
Handle = NULL;
|
||||||
|
Status = gBS->InstallProtocolInterface (
|
||||||
|
&Handle,
|
||||||
|
&gEfiDxeSmmReadyToLockProtocolGuid,
|
||||||
|
EFI_NATIVE_INTERFACE,
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
ASSERT_EFI_ERROR (Status);
|
||||||
|
}
|
||||||
|
|
||||||
|
DEBUG((DEBUG_INFO,"InstallReadyToLock end\n"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Return the index of the load option in the load option array.
|
Return the index of the load option in the load option array.
|
||||||
|
|
||||||
|
@ -147,6 +204,12 @@ PlatformBootManagerBeforeConsole (
|
||||||
// Register UEFI Shell
|
// Register UEFI Shell
|
||||||
//
|
//
|
||||||
PlatformRegisterFvBootOption (PcdGetPtr (PcdShellFile), L"UEFI Shell", LOAD_OPTION_ACTIVE);
|
PlatformRegisterFvBootOption (PcdGetPtr (PcdShellFile), L"UEFI Shell", LOAD_OPTION_ACTIVE);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Install ready to lock.
|
||||||
|
// This needs to be done before option rom dispatched.
|
||||||
|
//
|
||||||
|
InstallReadyToLock ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/**@file
|
/**@file
|
||||||
Head file for BDS Platform specific code
|
Head file for BDS Platform specific code
|
||||||
|
|
||||||
Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
|
@ -32,7 +32,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
#include <Library/PrintLib.h>
|
#include <Library/PrintLib.h>
|
||||||
#include <Library/DxeServicesLib.h>
|
#include <Library/DxeServicesLib.h>
|
||||||
#include <Library/BootLogoLib.h>
|
#include <Library/BootLogoLib.h>
|
||||||
|
#include <Protocol/SmmAccess2.h>
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
||||||
|
|
|
@ -55,13 +55,15 @@
|
||||||
PlatformHookLib
|
PlatformHookLib
|
||||||
|
|
||||||
[Guids]
|
[Guids]
|
||||||
|
gEfiEndOfDxeEventGroupGuid
|
||||||
|
|
||||||
[Protocols]
|
[Protocols]
|
||||||
gEfiGenericMemTestProtocolGuid ## CONSUMES
|
gEfiGenericMemTestProtocolGuid ## CONSUMES
|
||||||
gEfiGraphicsOutputProtocolGuid ## CONSUMES
|
gEfiGraphicsOutputProtocolGuid ## CONSUMES
|
||||||
gEfiUgaDrawProtocolGuid ## CONSUMES
|
gEfiUgaDrawProtocolGuid ## CONSUMES
|
||||||
gEfiBootLogoProtocolGuid ## CONSUMES
|
gEfiBootLogoProtocolGuid ## CONSUMES
|
||||||
|
gEfiDxeSmmReadyToLockProtocolGuid
|
||||||
|
gEfiSmmAccess2ProtocolGuid
|
||||||
|
|
||||||
[Pcd]
|
[Pcd]
|
||||||
gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut
|
gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut
|
||||||
|
|
Loading…
Reference in New Issue