#include <PiDxe.h>\r
#include <Protocol/VariableWrite.h>\r
#include <Protocol/Variable.h>\r
-#include <Protocol/SmmCommunication.h>\r
+#include <Protocol/MmCommunication2.h>\r
#include <Protocol/SmmVariable.h>\r
#include <Protocol/VariableLock.h>\r
#include <Protocol/VarCheck.h>\r
EFI_HANDLE mHandle = NULL;\r
EFI_SMM_VARIABLE_PROTOCOL *mSmmVariable = NULL;\r
EFI_EVENT mVirtualAddressChangeEvent = NULL;\r
-EFI_SMM_COMMUNICATION_PROTOCOL *mSmmCommunication = NULL;\r
+EFI_MM_COMMUNICATION2_PROTOCOL *mMmCommunication2 = NULL;\r
UINT8 *mVariableBuffer = NULL;\r
UINT8 *mVariableBufferPhysical = NULL;\r
VARIABLE_INFO_ENTRY *mVariableInfo = NULL;\r
IN UINTN Function\r
)\r
{\r
- EFI_SMM_COMMUNICATE_HEADER *SmmCommunicateHeader;\r
+ EFI_MM_COMMUNICATE_HEADER *SmmCommunicateHeader;\r
SMM_VARIABLE_COMMUNICATE_HEADER *SmmVariableFunctionHeader;\r
\r
\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
- SmmCommunicateHeader = (EFI_SMM_COMMUNICATE_HEADER *) mVariableBuffer;\r
+ SmmCommunicateHeader = (EFI_MM_COMMUNICATE_HEADER *) mVariableBuffer;\r
CopyGuid (&SmmCommunicateHeader->HeaderGuid, &gEfiSmmVariableProtocolGuid);\r
SmmCommunicateHeader->MessageLength = DataSize + SMM_VARIABLE_COMMUNICATE_HEADER_SIZE;\r
\r
{\r
EFI_STATUS Status;\r
UINTN CommSize;\r
- EFI_SMM_COMMUNICATE_HEADER *SmmCommunicateHeader;\r
+ EFI_MM_COMMUNICATE_HEADER *SmmCommunicateHeader;\r
SMM_VARIABLE_COMMUNICATE_HEADER *SmmVariableFunctionHeader;\r
\r
CommSize = DataSize + SMM_COMMUNICATE_HEADER_SIZE + SMM_VARIABLE_COMMUNICATE_HEADER_SIZE;\r
- Status = mSmmCommunication->Communicate (mSmmCommunication, mVariableBufferPhysical, &CommSize);\r
+ Status = mMmCommunication2->Communicate (mMmCommunication2,\r
+ mVariableBufferPhysical,\r
+ mVariableBuffer,\r
+ &CommSize);\r
ASSERT_EFI_ERROR (Status);\r
\r
- SmmCommunicateHeader = (EFI_SMM_COMMUNICATE_HEADER *) mVariableBuffer;\r
+ SmmCommunicateHeader = (EFI_MM_COMMUNICATE_HEADER *) mVariableBuffer;\r
SmmVariableFunctionHeader = (SMM_VARIABLE_COMMUNICATE_HEADER *)SmmCommunicateHeader->Data;\r
return SmmVariableFunctionHeader->ReturnStatus;\r
}\r
)\r
{\r
EfiConvertPointer (0x0, (VOID **) &mVariableBuffer);\r
- EfiConvertPointer (0x0, (VOID **) &mSmmCommunication);\r
+ EfiConvertPointer (0x0, (VOID **) &mMmCommunication2);\r
EfiConvertPointer (EFI_OPTIONAL_PTR, (VOID **) &mVariableRuntimeHobCacheBuffer);\r
EfiConvertPointer (EFI_OPTIONAL_PTR, (VOID **) &mVariableRuntimeNvCacheBuffer);\r
EfiConvertPointer (EFI_OPTIONAL_PTR, (VOID **) &mVariableRuntimeVolatileCacheBuffer);\r
{\r
EFI_STATUS Status;\r
SMM_VARIABLE_COMMUNICATE_GET_PAYLOAD_SIZE *SmmGetPayloadSize;\r
- EFI_SMM_COMMUNICATE_HEADER *SmmCommunicateHeader;\r
+ EFI_MM_COMMUNICATE_HEADER *SmmCommunicateHeader;\r
SMM_VARIABLE_COMMUNICATE_HEADER *SmmVariableFunctionHeader;\r
UINTN CommSize;\r
UINT8 *CommBuffer;\r
goto Done;\r
}\r
\r
- SmmCommunicateHeader = (EFI_SMM_COMMUNICATE_HEADER *) CommBuffer;\r
+ SmmCommunicateHeader = (EFI_MM_COMMUNICATE_HEADER *) CommBuffer;\r
CopyGuid (&SmmCommunicateHeader->HeaderGuid, &gEfiSmmVariableProtocolGuid);\r
SmmCommunicateHeader->MessageLength = SMM_VARIABLE_COMMUNICATE_HEADER_SIZE + sizeof (SMM_VARIABLE_COMMUNICATE_GET_PAYLOAD_SIZE);\r
\r
//\r
// Send data to SMM.\r
//\r
- Status = mSmmCommunication->Communicate (mSmmCommunication, CommBuffer, &CommSize);\r
+ Status = mMmCommunication2->Communicate (mMmCommunication2, CommBuffer, CommBuffer, &CommSize);\r
ASSERT_EFI_ERROR (Status);\r
\r
Status = SmmVariableFunctionHeader->ReturnStatus;\r
{\r
EFI_STATUS Status;\r
SMM_VARIABLE_COMMUNICATE_GET_RUNTIME_CACHE_INFO *SmmGetRuntimeCacheInfo;\r
- EFI_SMM_COMMUNICATE_HEADER *SmmCommunicateHeader;\r
+ EFI_MM_COMMUNICATE_HEADER *SmmCommunicateHeader;\r
SMM_VARIABLE_COMMUNICATE_HEADER *SmmVariableFunctionHeader;\r
UINTN CommSize;\r
UINT8 *CommBuffer;\r
CommSize = SMM_COMMUNICATE_HEADER_SIZE + SMM_VARIABLE_COMMUNICATE_HEADER_SIZE + sizeof (SMM_VARIABLE_COMMUNICATE_GET_RUNTIME_CACHE_INFO);\r
ZeroMem (CommBuffer, CommSize);\r
\r
- SmmCommunicateHeader = (EFI_SMM_COMMUNICATE_HEADER *) CommBuffer;\r
+ SmmCommunicateHeader = (EFI_MM_COMMUNICATE_HEADER *) CommBuffer;\r
CopyGuid (&SmmCommunicateHeader->HeaderGuid, &gEfiSmmVariableProtocolGuid);\r
SmmCommunicateHeader->MessageLength = SMM_VARIABLE_COMMUNICATE_HEADER_SIZE + sizeof (SMM_VARIABLE_COMMUNICATE_GET_RUNTIME_CACHE_INFO);\r
\r
//\r
// Send data to SMM.\r
//\r
- Status = mSmmCommunication->Communicate (mSmmCommunication, CommBuffer, &CommSize);\r
+ Status = mMmCommunication2->Communicate (mMmCommunication2, CommBuffer, CommBuffer, &CommSize);\r
ASSERT_EFI_ERROR (Status);\r
if (CommSize <= SMM_VARIABLE_COMMUNICATE_HEADER_SIZE) {\r
Status = EFI_BAD_BUFFER_SIZE;\r
{\r
EFI_STATUS Status;\r
SMM_VARIABLE_COMMUNICATE_RUNTIME_VARIABLE_CACHE_CONTEXT *SmmRuntimeVarCacheContext;\r
- EFI_SMM_COMMUNICATE_HEADER *SmmCommunicateHeader;\r
+ EFI_MM_COMMUNICATE_HEADER *SmmCommunicateHeader;\r
SMM_VARIABLE_COMMUNICATE_HEADER *SmmVariableFunctionHeader;\r
UINTN CommSize;\r
UINT8 *CommBuffer;\r
CommSize = SMM_COMMUNICATE_HEADER_SIZE + SMM_VARIABLE_COMMUNICATE_HEADER_SIZE + sizeof (SMM_VARIABLE_COMMUNICATE_RUNTIME_VARIABLE_CACHE_CONTEXT);\r
ZeroMem (CommBuffer, CommSize);\r
\r
- SmmCommunicateHeader = (EFI_SMM_COMMUNICATE_HEADER *) CommBuffer;\r
+ SmmCommunicateHeader = (EFI_MM_COMMUNICATE_HEADER *) CommBuffer;\r
CopyGuid (&SmmCommunicateHeader->HeaderGuid, &gEfiSmmVariableProtocolGuid);\r
SmmCommunicateHeader->MessageLength = SMM_VARIABLE_COMMUNICATE_HEADER_SIZE + sizeof (SMM_VARIABLE_COMMUNICATE_RUNTIME_VARIABLE_CACHE_CONTEXT);\r
\r
//\r
// Send data to SMM.\r
//\r
- Status = mSmmCommunication->Communicate (mSmmCommunication, CommBuffer, &CommSize);\r
+ Status = mMmCommunication2->Communicate (mMmCommunication2, CommBuffer, CommBuffer, &CommSize);\r
ASSERT_EFI_ERROR (Status);\r
if (CommSize <= SMM_VARIABLE_COMMUNICATE_HEADER_SIZE) {\r
Status = EFI_BAD_BUFFER_SIZE;\r
return;\r
}\r
\r
- Status = gBS->LocateProtocol (&gEfiSmmCommunicationProtocolGuid, NULL, (VOID **) &mSmmCommunication);\r
+ Status = gBS->LocateProtocol (&gEfiMmCommunication2ProtocolGuid, NULL, (VOID **) &mMmCommunication2);\r
ASSERT_EFI_ERROR (Status);\r
\r
//\r