mirror of https://github.com/acidanthera/audk.git
MdeModulePkg PiSmmCore: Unregister each other for LegacyBoot and EBS
Otherwise, LegacyBoot may be triggered wrongly by other code in UEFI OS, or vice versa. Cc: Jiewen Yao <jiewen.yao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
This commit is contained in:
parent
7b9b55b2ef
commit
c6ded48cdd
|
@ -157,6 +157,7 @@ SmmLegacyBootHandler (
|
|||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_HANDLE SmmHandle;
|
||||
UINTN Index;
|
||||
|
||||
//
|
||||
// Install SMM Legacy Boot protocol.
|
||||
|
@ -173,6 +174,16 @@ SmmLegacyBootHandler (
|
|||
|
||||
SmiHandlerUnRegister (DispatchHandle);
|
||||
|
||||
//
|
||||
// It is legacy boot, unregister ExitBootService SMI handler.
|
||||
//
|
||||
for (Index = 0; mSmmCoreSmiHandlers[Index].HandlerType != NULL; Index++) {
|
||||
if (CompareGuid (mSmmCoreSmiHandlers[Index].HandlerType, &gEfiEventExitBootServicesGuid)) {
|
||||
SmiHandlerUnRegister (mSmmCoreSmiHandlers[Index].DispatchHandle);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
@ -201,6 +212,7 @@ SmmExitBootServicesHandler (
|
|||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_HANDLE SmmHandle;
|
||||
UINTN Index;
|
||||
|
||||
//
|
||||
// Install SMM Exit Boot Services protocol.
|
||||
|
@ -215,6 +227,16 @@ SmmExitBootServicesHandler (
|
|||
|
||||
SmiHandlerUnRegister (DispatchHandle);
|
||||
|
||||
//
|
||||
// It is UEFI boot, unregister LegacyBoot SMI handler.
|
||||
//
|
||||
for (Index = 0; mSmmCoreSmiHandlers[Index].HandlerType != NULL; Index++) {
|
||||
if (CompareGuid (mSmmCoreSmiHandlers[Index].HandlerType, &gEfiEventLegacyBootGuid)) {
|
||||
SmiHandlerUnRegister (mSmmCoreSmiHandlers[Index].DispatchHandle);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue