ArmPkg: Add a protocol notification for gEfiDxeMmReadyToLockProtocolGuid
Add and install a protocol notification handler for gEfiDxeMmReadyToLockProtocolGuid, in order to to trigger MMI handler to install gEfiMmReadyToLockProtocolGuid protocol in Mm. Signed-off-by: Crystal Lee <CrystalLee@ami.com>
This commit is contained in:
parent
f1a2bd2333
commit
1c6ce560f0
|
@ -14,6 +14,7 @@
|
||||||
#include <Library/HobLib.h>
|
#include <Library/HobLib.h>
|
||||||
#include <Library/PcdLib.h>
|
#include <Library/PcdLib.h>
|
||||||
#include <Library/UefiBootServicesTableLib.h>
|
#include <Library/UefiBootServicesTableLib.h>
|
||||||
|
#include <Library/UefiLib.h>
|
||||||
#include <Library/UefiRuntimeServicesTableLib.h>
|
#include <Library/UefiRuntimeServicesTableLib.h>
|
||||||
|
|
||||||
#include <Protocol/MmCommunication2.h>
|
#include <Protocol/MmCommunication2.h>
|
||||||
|
@ -553,6 +554,34 @@ STATIC EFI_GUID *CONST mGuidedEventGuid[] = {
|
||||||
|
|
||||||
STATIC EFI_EVENT mGuidedEvent[ARRAY_SIZE (mGuidedEventGuid)];
|
STATIC EFI_EVENT mGuidedEvent[ARRAY_SIZE (mGuidedEventGuid)];
|
||||||
|
|
||||||
|
/**
|
||||||
|
Event notification that is fired when ReadyToLockProtocol is signaled.
|
||||||
|
|
||||||
|
@param Event The Event that is being processed, not used.
|
||||||
|
@param Context Event Context, not used.
|
||||||
|
|
||||||
|
**/
|
||||||
|
VOID
|
||||||
|
EFIAPI
|
||||||
|
MMReadyToLockProtocolNotify (
|
||||||
|
IN EFI_EVENT Event,
|
||||||
|
IN VOID *Context
|
||||||
|
)
|
||||||
|
{
|
||||||
|
EFI_MM_COMMUNICATE_HEADER Header;
|
||||||
|
UINTN Size;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Use Guid to initialize EFI_SMM_COMMUNICATE_HEADER structure
|
||||||
|
//
|
||||||
|
CopyGuid (&Header.HeaderGuid, &gEfiDxeMmReadyToLockProtocolGuid);
|
||||||
|
Header.MessageLength = 1;
|
||||||
|
Header.Data[0] = 0;
|
||||||
|
|
||||||
|
Size = sizeof (Header);
|
||||||
|
MmCommunication2Communicate (&mMmCommunication2, &Header, &Header, &Size);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Event notification that is fired when GUIDed Event Group is signaled.
|
Event notification that is fired when GUIDed Event Group is signaled.
|
||||||
|
|
||||||
|
@ -680,6 +709,15 @@ MmCommunication2Initialize (
|
||||||
);
|
);
|
||||||
ASSERT_EFI_ERROR (Status);
|
ASSERT_EFI_ERROR (Status);
|
||||||
|
|
||||||
|
Status = EfiNamedEventListen (
|
||||||
|
&gEfiDxeMmReadyToLockProtocolGuid,
|
||||||
|
TPL_NOTIFY,
|
||||||
|
MMReadyToLockProtocolNotify,
|
||||||
|
NULL,
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
ASSERT_EFI_ERROR (Status);
|
||||||
|
|
||||||
for (Index = 0; Index < ARRAY_SIZE (mGuidedEventGuid); Index++) {
|
for (Index = 0; Index < ARRAY_SIZE (mGuidedEventGuid); Index++) {
|
||||||
Status = gBS->CreateEventEx (
|
Status = gBS->CreateEventEx (
|
||||||
EVT_NOTIFY_SIGNAL,
|
EVT_NOTIFY_SIGNAL,
|
||||||
|
|
|
@ -41,6 +41,7 @@
|
||||||
UefiDriverEntryPoint
|
UefiDriverEntryPoint
|
||||||
|
|
||||||
[Protocols]
|
[Protocols]
|
||||||
|
gEfiDxeMmReadyToLockProtocolGuid ## UNDEFINED # SmiHandlerRegister
|
||||||
gEfiMmCommunication2ProtocolGuid ## PRODUCES
|
gEfiMmCommunication2ProtocolGuid ## PRODUCES
|
||||||
|
|
||||||
[Guids]
|
[Guids]
|
||||||
|
|
Loading…
Reference in New Issue