mirror of https://github.com/acidanthera/audk.git
1. Update PiSmmCore to always invoke SmiManage (NULL, NULL, NULL, NULL) when SMI triggered.
2. Fix issue that PlatformHookAfterSmiDispatch() and PERF_END() are not called in the case mInLegacyBoot is TRUE. signed-off-by: Jeff Fan <jeff.fan@intel.com> reviewed-by: Kinney, Michael D <michael.d.kinney@intel.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13740 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
565b3c807c
commit
9fa90bb491
|
@ -261,14 +261,7 @@ SmmEntryPoint (
|
|||
//
|
||||
// If a legacy boot has occured, then make sure gSmmCorePrivate is not accessed
|
||||
//
|
||||
if (mInLegacyBoot) {
|
||||
//
|
||||
// Asynchronous SMI
|
||||
//
|
||||
SmiManage (NULL, NULL, NULL, NULL);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!mInLegacyBoot) {
|
||||
//
|
||||
// Mark the InSmm flag as TRUE, it will be used by SmmBase2 protocol
|
||||
//
|
||||
|
@ -298,22 +291,28 @@ SmmEntryPoint (
|
|||
gSmmCorePrivate->BufferSize += OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, Data);
|
||||
gSmmCorePrivate->CommunicationBuffer = NULL;
|
||||
gSmmCorePrivate->ReturnStatus = (Status == EFI_SUCCESS) ? EFI_SUCCESS : EFI_NOT_FOUND;
|
||||
} else {
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Asynchronous SMI
|
||||
// Process Asynchronous SMI sources
|
||||
//
|
||||
SmiManage (NULL, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
//
|
||||
// Call platform hook after Smm Dispatch
|
||||
//
|
||||
PlatformHookAfterSmmDispatch ();
|
||||
|
||||
//
|
||||
// If a legacy boot has occured, then make sure gSmmCorePrivate is not accessed
|
||||
//
|
||||
if (!mInLegacyBoot) {
|
||||
//
|
||||
// Clear the InSmm flag as we are going to leave SMM
|
||||
//
|
||||
gSmmCorePrivate->InSmm = FALSE;
|
||||
}
|
||||
|
||||
PERF_END (NULL, "SMM", NULL, 0) ;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue