summaryrefslogtreecommitdiff
path: root/EdkCompatibilityPkg/Compatibility/SmmBaseOnSmmBase2Thunk/SmmBaseOnSmmBase2Thunk.c
diff options
context:
space:
mode:
Diffstat (limited to 'EdkCompatibilityPkg/Compatibility/SmmBaseOnSmmBase2Thunk/SmmBaseOnSmmBase2Thunk.c')
-rw-r--r--EdkCompatibilityPkg/Compatibility/SmmBaseOnSmmBase2Thunk/SmmBaseOnSmmBase2Thunk.c42
1 files changed, 13 insertions, 29 deletions
diff --git a/EdkCompatibilityPkg/Compatibility/SmmBaseOnSmmBase2Thunk/SmmBaseOnSmmBase2Thunk.c b/EdkCompatibilityPkg/Compatibility/SmmBaseOnSmmBase2Thunk/SmmBaseOnSmmBase2Thunk.c
index 9421670..61e40cc 100644
--- a/EdkCompatibilityPkg/Compatibility/SmmBaseOnSmmBase2Thunk/SmmBaseOnSmmBase2Thunk.c
+++ b/EdkCompatibilityPkg/Compatibility/SmmBaseOnSmmBase2Thunk/SmmBaseOnSmmBase2Thunk.c
@@ -160,15 +160,10 @@ SmmBaseHelperService (
mCommunicationData.FunctionData.Status = EFI_UNSUPPORTED;
- if (IsInSmm()) {
+ if ((mCommunicationData.FunctionData.Function != SMMBASE_COMMUNICATE) && IsInSmm()) {
///
/// If in SMM mode, directly call services in SMM Base Helper.
///
- if (mSmmBaseHelperReady == NULL) {
- ASSERT (FALSE);
- return;
- }
-
DataSize = (UINTN)(sizeof (SMMBASE_FUNCTION_DATA));
mSmmBaseHelperReady->ServiceEntry (
NULL,
@@ -178,13 +173,8 @@ SmmBaseHelperService (
);
} else {
///
- /// If in non-SMM mode, call services in SMM Base Helper via SMM Communication Protocol.
+ /// Call services in SMM Base Helper via SMM Communication Protocol.
///
- if (mSmmCommunication == NULL) {
- ASSERT (FALSE);
- return;
- }
-
DataSize = (UINTN)(sizeof (mCommunicationData));
mSmmCommunication->Communicate (
mSmmCommunication,
@@ -291,16 +281,17 @@ SmmBaseCommunicate (
IN OUT UINTN *BufferSize
)
{
- if (mSmmCommunication == NULL) {
- ASSERT (FALSE);
- return EFI_UNSUPPORTED;
- }
+ ///
+ /// Note this is a runtime interface
+ ///
+
+ mCommunicationData.FunctionData.Function = SMMBASE_COMMUNICATE;
+ mCommunicationData.FunctionData.Args.Communicate.ImageHandle = ImageHandle;
+ mCommunicationData.FunctionData.Args.Communicate.CommunicationBuffer = CommunicationBuffer;
+ mCommunicationData.FunctionData.Args.Communicate.SourceSize = BufferSize;
- return mSmmCommunication->Communicate (
- mSmmCommunication,
- CommunicationBuffer,
- BufferSize
- );
+ SmmBaseHelperService ();
+ return mCommunicationData.FunctionData.Status;
}
/**
@@ -451,11 +442,6 @@ SmmBaseGetSmstLocation (
OUT EFI_SMM_SYSTEM_TABLE **Smst
)
{
- if (mSmmBaseHelperReady == NULL) {
- ASSERT (FALSE);
- return EFI_UNSUPPORTED;
- }
-
if (!IsInSmm ()) {
return EFI_UNSUPPORTED;
}
@@ -484,9 +470,7 @@ SmmBaseAddressChangeEvent (
IN VOID *Context
)
{
- if (mSmmCommunication != NULL) {
- EfiConvertPointer (0x0, (VOID **) &mSmmCommunication);
- }
+ EfiConvertPointer (0x0, (VOID **) &mSmmCommunication);
}
/**