MdeModulePkg/FaultTolerantWriteSmmDxe: switch to MM communicate 2

Switch to the new MM communicate 2 protocol which supports both
traditional and standalone MM.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@arm.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
This commit is contained in:
Ard Biesheuvel 2020-04-18 18:45:29 +02:00 committed by mergify[bot]
parent 789ea79e94
commit fa37a846d0
4 changed files with 18 additions and 15 deletions

View File

@ -29,7 +29,7 @@ typedef struct {
/// ///
/// Size of SMM communicate header, without including the payload. /// Size of SMM communicate header, without including the payload.
/// ///
#define SMM_COMMUNICATE_HEADER_SIZE (OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, Data)) #define SMM_COMMUNICATE_HEADER_SIZE (OFFSET_OF (EFI_MM_COMMUNICATE_HEADER, Data))
/// ///
/// Size of SMM FTW communicate function header, without including the payload. /// Size of SMM FTW communicate function header, without including the payload.

View File

@ -11,7 +11,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
#include "FaultTolerantWriteSmmDxe.h" #include "FaultTolerantWriteSmmDxe.h"
EFI_HANDLE mHandle = NULL; EFI_HANDLE mHandle = NULL;
EFI_SMM_COMMUNICATION_PROTOCOL *mSmmCommunication = NULL; EFI_MM_COMMUNICATION2_PROTOCOL *mMmCommunication2 = NULL;
UINTN mPrivateDataSize = 0; UINTN mPrivateDataSize = 0;
EFI_FAULT_TOLERANT_WRITE_PROTOCOL mFaultTolerantWriteDriver = { EFI_FAULT_TOLERANT_WRITE_PROTOCOL mFaultTolerantWriteDriver = {
@ -40,7 +40,7 @@ InitCommunicateBuffer (
IN UINTN Function IN UINTN Function
) )
{ {
EFI_SMM_COMMUNICATE_HEADER *SmmCommunicateHeader; EFI_MM_COMMUNICATE_HEADER *SmmCommunicateHeader;
SMM_FTW_COMMUNICATE_FUNCTION_HEADER *SmmFtwFunctionHeader; SMM_FTW_COMMUNICATE_FUNCTION_HEADER *SmmFtwFunctionHeader;
// //
@ -74,7 +74,7 @@ InitCommunicateBuffer (
**/ **/
EFI_STATUS EFI_STATUS
SendCommunicateBuffer ( SendCommunicateBuffer (
IN OUT EFI_SMM_COMMUNICATE_HEADER *SmmCommunicateHeader, IN OUT EFI_MM_COMMUNICATE_HEADER *SmmCommunicateHeader,
IN UINTN DataSize IN UINTN DataSize
) )
{ {
@ -83,7 +83,10 @@ SendCommunicateBuffer (
SMM_FTW_COMMUNICATE_FUNCTION_HEADER *SmmFtwFunctionHeader; SMM_FTW_COMMUNICATE_FUNCTION_HEADER *SmmFtwFunctionHeader;
CommSize = DataSize + SMM_COMMUNICATE_HEADER_SIZE + SMM_FTW_COMMUNICATE_HEADER_SIZE; CommSize = DataSize + SMM_COMMUNICATE_HEADER_SIZE + SMM_FTW_COMMUNICATE_HEADER_SIZE;
Status = mSmmCommunication->Communicate (mSmmCommunication, SmmCommunicateHeader, &CommSize); Status = mMmCommunication2->Communicate (mMmCommunication2,
SmmCommunicateHeader,
SmmCommunicateHeader,
&CommSize);
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
SmmFtwFunctionHeader = (SMM_FTW_COMMUNICATE_FUNCTION_HEADER *) SmmCommunicateHeader->Data; SmmFtwFunctionHeader = (SMM_FTW_COMMUNICATE_FUNCTION_HEADER *) SmmCommunicateHeader->Data;
@ -148,7 +151,7 @@ FtwGetMaxBlockSize (
{ {
EFI_STATUS Status; EFI_STATUS Status;
UINTN PayloadSize; UINTN PayloadSize;
EFI_SMM_COMMUNICATE_HEADER *SmmCommunicateHeader; EFI_MM_COMMUNICATE_HEADER *SmmCommunicateHeader;
SMM_FTW_GET_MAX_BLOCK_SIZE_HEADER *SmmFtwBlockSizeHeader; SMM_FTW_GET_MAX_BLOCK_SIZE_HEADER *SmmFtwBlockSizeHeader;
// //
@ -204,7 +207,7 @@ FtwAllocate (
{ {
EFI_STATUS Status; EFI_STATUS Status;
UINTN PayloadSize; UINTN PayloadSize;
EFI_SMM_COMMUNICATE_HEADER *SmmCommunicateHeader; EFI_MM_COMMUNICATE_HEADER *SmmCommunicateHeader;
SMM_FTW_ALLOCATE_HEADER *SmmFtwAllocateHeader; SMM_FTW_ALLOCATE_HEADER *SmmFtwAllocateHeader;
// //
@ -270,7 +273,7 @@ FtwWrite (
{ {
EFI_STATUS Status; EFI_STATUS Status;
UINTN PayloadSize; UINTN PayloadSize;
EFI_SMM_COMMUNICATE_HEADER *SmmCommunicateHeader; EFI_MM_COMMUNICATE_HEADER *SmmCommunicateHeader;
SMM_FTW_WRITE_HEADER *SmmFtwWriteHeader; SMM_FTW_WRITE_HEADER *SmmFtwWriteHeader;
// //
@ -336,7 +339,7 @@ FtwRestart (
{ {
EFI_STATUS Status; EFI_STATUS Status;
UINTN PayloadSize; UINTN PayloadSize;
EFI_SMM_COMMUNICATE_HEADER *SmmCommunicateHeader; EFI_MM_COMMUNICATE_HEADER *SmmCommunicateHeader;
SMM_FTW_RESTART_HEADER *SmmFtwRestartHeader; SMM_FTW_RESTART_HEADER *SmmFtwRestartHeader;
// //
@ -381,7 +384,7 @@ FtwAbort (
) )
{ {
EFI_STATUS Status; EFI_STATUS Status;
EFI_SMM_COMMUNICATE_HEADER *SmmCommunicateHeader; EFI_MM_COMMUNICATE_HEADER *SmmCommunicateHeader;
// //
// Initialize the communicate buffer. // Initialize the communicate buffer.
@ -438,7 +441,7 @@ FtwGetLastWrite (
{ {
EFI_STATUS Status; EFI_STATUS Status;
UINTN PayloadSize; UINTN PayloadSize;
EFI_SMM_COMMUNICATE_HEADER *SmmCommunicateHeader; EFI_MM_COMMUNICATE_HEADER *SmmCommunicateHeader;
SMM_FTW_GET_LAST_WRITE_HEADER *SmmFtwGetLastWriteHeader; SMM_FTW_GET_LAST_WRITE_HEADER *SmmFtwGetLastWriteHeader;
// //
@ -501,7 +504,7 @@ SmmFtwReady (
return; return;
} }
Status = gBS->LocateProtocol (&gEfiSmmCommunicationProtocolGuid, NULL, (VOID **) &mSmmCommunication); Status = gBS->LocateProtocol (&gEfiMmCommunication2ProtocolGuid, NULL, (VOID **) &mMmCommunication2);
ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (Status);
// //

View File

@ -13,7 +13,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
#include <PiDxe.h> #include <PiDxe.h>
#include <Protocol/SmmCommunication.h> #include <Protocol/MmCommunication2.h>
#include <Library/UefiBootServicesTableLib.h> #include <Library/UefiBootServicesTableLib.h>
#include <Library/UefiDriverEntryPoint.h> #include <Library/UefiDriverEntryPoint.h>

View File

@ -45,7 +45,7 @@
[Protocols] [Protocols]
gEfiFaultTolerantWriteProtocolGuid ## PRODUCES gEfiFaultTolerantWriteProtocolGuid ## PRODUCES
gEfiSmmCommunicationProtocolGuid ## CONSUMES gEfiMmCommunication2ProtocolGuid ## CONSUMES
## NOTIFY ## NOTIFY
## UNDEFINED # Used to do smm communication ## UNDEFINED # Used to do smm communication
## CONSUMES ## CONSUMES
@ -53,7 +53,7 @@
gEfiFirmwareVolumeBlockProtocolGuid ## CONSUMES gEfiFirmwareVolumeBlockProtocolGuid ## CONSUMES
[Depex] [Depex]
gEfiSmmCommunicationProtocolGuid gEfiMmCommunication2ProtocolGuid
[UserExtensions.TianoCore."ExtraFiles"] [UserExtensions.TianoCore."ExtraFiles"]
FaultTolerantWriteSmmDxeExtra.uni FaultTolerantWriteSmmDxeExtra.uni