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:
vanjeff 2012-09-25 02:44:53 +00:00
parent 565b3c807c
commit 9fa90bb491
1 changed files with 38 additions and 39 deletions

View File

@ -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) ;
}