On 2015/11/24 21:00, jiewen yao wrote:
We had put communication buffer to Runtime memory,
so that SMI handler can know it is not used by OS.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: "Yao, Jiewen" <[email protected]>
Cc: "Zeng, Star" <[email protected]>
Cc: "Fan, Jeff" <[email protected]>
Cc: "Kinney, Michael D" <[email protected]>
---
MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
Reviewed-by: Star Zeng <[email protected]>
diff --git a/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c
b/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c
index c534ee3..50c3b34 100644
--- a/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c
+++ b/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c
@@ -246,6 +246,8 @@ BOOLEAN mSmmLocked = FALSE;
EFI_PHYSICAL_ADDRESS mSmramCacheBase;
UINT64 mSmramCacheSize;
+EFI_SMM_COMMUNICATE_HEADER mCommunicateHeader;
+
//
// Table of Protocol notification and GUIDed Event notifications that the SMM
IPL requires
//
@@ -538,21 +540,20 @@ SmmIplGuidedEventNotify (
IN VOID *Context
)
{
- EFI_SMM_COMMUNICATE_HEADER CommunicateHeader;
UINTN Size;
//
// Use Guid to initialize EFI_SMM_COMMUNICATE_HEADER structure
//
- CopyGuid (&CommunicateHeader.HeaderGuid, (EFI_GUID *)Context);
- CommunicateHeader.MessageLength = 1;
- CommunicateHeader.Data[0] = 0;
+ CopyGuid (&mCommunicateHeader.HeaderGuid, (EFI_GUID *)Context);
+ mCommunicateHeader.MessageLength = 1;
+ mCommunicateHeader.Data[0] = 0;
//
// Generate the Software SMI and return the result
//
- Size = sizeof (CommunicateHeader);
- SmmCommunicationCommunicate (&mSmmCommunication, &CommunicateHeader, &Size);
+ Size = sizeof (mCommunicateHeader);
+ SmmCommunicationCommunicate (&mSmmCommunication, &mCommunicateHeader, &Size);
}
/**
@@ -569,7 +570,6 @@ SmmIplDxeDispatchEventNotify (
IN VOID *Context
)
{
- EFI_SMM_COMMUNICATE_HEADER CommunicateHeader;
UINTN Size;
EFI_STATUS Status;
@@ -582,20 +582,20 @@ SmmIplDxeDispatchEventNotify (
// Clear the buffer passed into the Software SMI. This buffer will return
// the status of the SMM Core Dispatcher.
//
- CopyGuid (&CommunicateHeader.HeaderGuid, (EFI_GUID *)Context);
- CommunicateHeader.MessageLength = 1;
- CommunicateHeader.Data[0] = 0;
+ CopyGuid (&mCommunicateHeader.HeaderGuid, (EFI_GUID *)Context);
+ mCommunicateHeader.MessageLength = 1;
+ mCommunicateHeader.Data[0] = 0;
//
// Generate the Software SMI and return the result
//
- Size = sizeof (CommunicateHeader);
- SmmCommunicationCommunicate (&mSmmCommunication, &CommunicateHeader,
&Size);
+ Size = sizeof (mCommunicateHeader);
+ SmmCommunicationCommunicate (&mSmmCommunication, &mCommunicateHeader,
&Size);
//
// Return if there is no request to restart the SMM Core Dispatcher
//
- if (CommunicateHeader.Data[0] != COMM_BUFFER_SMM_DISPATCH_RESTART) {
+ if (mCommunicateHeader.Data[0] != COMM_BUFFER_SMM_DISPATCH_RESTART) {
return;
}
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel