mirror of https://github.com/acidanthera/audk.git
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:
parent
789ea79e94
commit
fa37a846d0
|
@ -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.
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue