]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmmDxe.c
MdeModulePkg: Apply uncrustify changes
[mirror_edk2.git] / MdeModulePkg / Universal / FaultTolerantWriteDxe / FaultTolerantWriteSmmDxe.c
index 772d10dcd46cb18e6965c1743bf39156a62f72ca..d273e4d27d7e029be386e263c9c188d4cf12f925 100644 (file)
@@ -1,24 +1,18 @@
 /** @file\r
 \r
-  Implement the Fault Tolerant Write (FTW) protocol based on SMM FTW \r
+  Implement the Fault Tolerant Write (FTW) protocol based on SMM FTW\r
   module.\r
 \r
-Copyright (c) 2011 - 2013, Intel Corporation. All rights reserved. <BR>\r
-This program and the accompanying materials                          \r
-are licensed and made available under the terms and conditions of the BSD License         \r
-which accompanies this distribution.  The full text of the license may be found at        \r
-http://opensource.org/licenses/bsd-license.php                                            \r
-                                                                                          \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved. <BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
 #include "FaultTolerantWriteSmmDxe.h"\r
 \r
-EFI_HANDLE                         mHandle                   = NULL;\r
-EFI_SMM_COMMUNICATION_PROTOCOL     *mSmmCommunication        = NULL;\r
-UINTN                              mPrivateDataSize          = 0;\r
+EFI_HANDLE                      mHandle            = NULL;\r
+EFI_MM_COMMUNICATION2_PROTOCOL  *mMmCommunication2 = NULL;\r
+UINTN                           mPrivateDataSize   = 0;\r
 \r
 EFI_FAULT_TOLERANT_WRITE_PROTOCOL  mFaultTolerantWriteDriver = {\r
   FtwGetMaxBlockSize,\r
@@ -40,99 +34,101 @@ EFI_FAULT_TOLERANT_WRITE_PROTOCOL  mFaultTolerantWriteDriver = {
 **/\r
 VOID\r
 InitCommunicateBuffer (\r
-  OUT     VOID                              **CommunicateBuffer,\r
-  OUT     VOID                              **DataPtr,\r
-  IN      UINTN                             DataSize,\r
-  IN      UINTN                             Function\r
+  OUT     VOID   **CommunicateBuffer,\r
+  OUT     VOID   **DataPtr,\r
+  IN      UINTN  DataSize,\r
+  IN      UINTN  Function\r
   )\r
 {\r
-  EFI_SMM_COMMUNICATE_HEADER                *SmmCommunicateHeader;  \r
-  SMM_FTW_COMMUNICATE_FUNCTION_HEADER       *SmmFtwFunctionHeader; \r
+  EFI_MM_COMMUNICATE_HEADER            *SmmCommunicateHeader;\r
+  SMM_FTW_COMMUNICATE_FUNCTION_HEADER  *SmmFtwFunctionHeader;\r
 \r
   //\r
   // The whole buffer size: SMM_COMMUNICATE_HEADER_SIZE + SMM_FTW_COMMUNICATE_HEADER_SIZE + DataSize.\r
   //\r
   SmmCommunicateHeader = AllocateZeroPool (DataSize + SMM_COMMUNICATE_HEADER_SIZE + SMM_FTW_COMMUNICATE_HEADER_SIZE);\r
   ASSERT (SmmCommunicateHeader != NULL);\r
-   \r
+\r
   //\r
   // Prepare data buffer.\r
   //\r
   CopyGuid (&SmmCommunicateHeader->HeaderGuid, &gEfiSmmFaultTolerantWriteProtocolGuid);\r
   SmmCommunicateHeader->MessageLength = DataSize + SMM_FTW_COMMUNICATE_HEADER_SIZE;\r
\r
-  SmmFtwFunctionHeader = (SMM_FTW_COMMUNICATE_FUNCTION_HEADER *) SmmCommunicateHeader->Data;\r
+\r
+  SmmFtwFunctionHeader           = (SMM_FTW_COMMUNICATE_FUNCTION_HEADER *)SmmCommunicateHeader->Data;\r
   SmmFtwFunctionHeader->Function = Function;\r
 \r
   *CommunicateBuffer = SmmCommunicateHeader;\r
   if (DataPtr != NULL) {\r
     *DataPtr = SmmFtwFunctionHeader->Data;\r
-  }  \r
+  }\r
 }\r
 \r
-\r
 /**\r
   Send the data in communicate buffer to SMI handler and get response.\r
 \r
   @param[in, out]  SmmCommunicateHeader    The communicate buffer.\r
   @param[in]       DataSize                The payload size.\r
-                      \r
+\r
 **/\r
 EFI_STATUS\r
 SendCommunicateBuffer (\r
-  IN OUT  EFI_SMM_COMMUNICATE_HEADER        *SmmCommunicateHeader,\r
-  IN      UINTN                             DataSize\r
+  IN OUT  EFI_MM_COMMUNICATE_HEADER  *SmmCommunicateHeader,\r
+  IN      UINTN                      DataSize\r
   )\r
 {\r
-  EFI_STATUS                                Status;\r
-  UINTN                                     CommSize;\r
-  SMM_FTW_COMMUNICATE_FUNCTION_HEADER       *SmmFtwFunctionHeader; \r
\r
+  EFI_STATUS                           Status;\r
+  UINTN                                CommSize;\r
+  SMM_FTW_COMMUNICATE_FUNCTION_HEADER  *SmmFtwFunctionHeader;\r
+\r
   CommSize = DataSize + SMM_COMMUNICATE_HEADER_SIZE + SMM_FTW_COMMUNICATE_HEADER_SIZE;\r
-  Status = mSmmCommunication->Communicate (mSmmCommunication, SmmCommunicateHeader, &CommSize);\r
+  Status   = mMmCommunication2->Communicate (\r
+                                  mMmCommunication2,\r
+                                  SmmCommunicateHeader,\r
+                                  SmmCommunicateHeader,\r
+                                  &CommSize\r
+                                  );\r
   ASSERT_EFI_ERROR (Status);\r
 \r
-  SmmFtwFunctionHeader = (SMM_FTW_COMMUNICATE_FUNCTION_HEADER *) SmmCommunicateHeader->Data;\r
-  return  SmmFtwFunctionHeader->ReturnStatus;\r
+  SmmFtwFunctionHeader = (SMM_FTW_COMMUNICATE_FUNCTION_HEADER *)SmmCommunicateHeader->Data;\r
+  return SmmFtwFunctionHeader->ReturnStatus;\r
 }\r
 \r
-\r
 /**\r
   Get the FvbBaseAddress and FvbAttributes from the FVB handle FvbHandle.\r
 \r
   @param[in]   FvbHandle         The handle of FVB protocol that provides services.\r
   @param[out]  FvbBaseAddress    The base address of the FVB attached with FvbHandle.\r
   @param[out]  FvbAttributes     The attributes of the FVB attached with FvbHandle.\r
-    \r
+\r
   @retval EFI_SUCCESS            The function completed successfully.\r
   @retval Others                 The function could not complete successfully.\r
 \r
 **/\r
 EFI_STATUS\r
 ConvertFvbHandle (\r
-  IN  EFI_HANDLE                            FvbHandle,\r
-  OUT EFI_PHYSICAL_ADDRESS                  *FvbBaseAddress,\r
-  OUT EFI_FVB_ATTRIBUTES_2                  *FvbAttributes\r
+  IN  EFI_HANDLE            FvbHandle,\r
+  OUT EFI_PHYSICAL_ADDRESS  *FvbBaseAddress,\r
+  OUT EFI_FVB_ATTRIBUTES_2  *FvbAttributes\r
   )\r
 {\r
-  EFI_STATUS                                Status;\r
-  EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL        *Fvb;\r
+  EFI_STATUS                          Status;\r
+  EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL  *Fvb;\r
 \r
-  Status = gBS->HandleProtocol (FvbHandle, &gEfiFirmwareVolumeBlockProtocolGuid, (VOID **) &Fvb);\r
+  Status = gBS->HandleProtocol (FvbHandle, &gEfiFirmwareVolumeBlockProtocolGuid, (VOID **)&Fvb);\r
   if (EFI_ERROR (Status)) {\r
     return Status;\r
   }\r
-  \r
+\r
   Status = Fvb->GetPhysicalAddress (Fvb, FvbBaseAddress);\r
   if (EFI_ERROR (Status)) {\r
     return Status;\r
   }\r
 \r
   Status = Fvb->GetAttributes (Fvb, FvbAttributes);\r
-  return Status;  \r
+  return Status;\r
 }\r
 \r
-\r
 /**\r
   Get the size of the largest block that can be updated in a fault-tolerant manner.\r
 \r
@@ -148,21 +144,21 @@ ConvertFvbHandle (
 EFI_STATUS\r
 EFIAPI\r
 FtwGetMaxBlockSize (\r
-  IN EFI_FAULT_TOLERANT_WRITE_PROTOCOL      *This,\r
-  OUT UINTN                                 *BlockSize\r
+  IN EFI_FAULT_TOLERANT_WRITE_PROTOCOL  *This,\r
+  OUT UINTN                             *BlockSize\r
   )\r
 {\r
-  EFI_STATUS                                Status;\r
-  UINTN                                     PayloadSize;\r
-  EFI_SMM_COMMUNICATE_HEADER                *SmmCommunicateHeader;  \r
-  SMM_FTW_GET_MAX_BLOCK_SIZE_HEADER         *SmmFtwBlockSizeHeader;\r
+  EFI_STATUS                         Status;\r
+  UINTN                              PayloadSize;\r
+  EFI_MM_COMMUNICATE_HEADER          *SmmCommunicateHeader;\r
+  SMM_FTW_GET_MAX_BLOCK_SIZE_HEADER  *SmmFtwBlockSizeHeader;\r
 \r
   //\r
   // Initialize the communicate buffer.\r
   //\r
-  PayloadSize  = sizeof (SMM_FTW_GET_MAX_BLOCK_SIZE_HEADER);\r
+  PayloadSize = sizeof (SMM_FTW_GET_MAX_BLOCK_SIZE_HEADER);\r
   InitCommunicateBuffer ((VOID **)&SmmCommunicateHeader, (VOID **)&SmmFtwBlockSizeHeader, PayloadSize, FTW_FUNCTION_GET_MAX_BLOCK_SIZE);\r
-    \r
+\r
   //\r
   // Send data to SMM.\r
   //\r
@@ -171,13 +167,12 @@ FtwGetMaxBlockSize (
   //\r
   // Get data from SMM\r
   //\r
-  *BlockSize = SmmFtwBlockSizeHeader->BlockSize; \r
+  *BlockSize = SmmFtwBlockSizeHeader->BlockSize;\r
   FreePool (SmmCommunicateHeader);\r
-  \r
+\r
   return Status;\r
 }\r
 \r
-\r
 /**\r
   Allocates space for the protocol to maintain information about writes.\r
   Since writes must be completed in a fault-tolerant manner and multiple\r
@@ -202,31 +197,31 @@ FtwGetMaxBlockSize (
 EFI_STATUS\r
 EFIAPI\r
 FtwAllocate (\r
-  IN EFI_FAULT_TOLERANT_WRITE_PROTOCOL      *This,\r
-  IN EFI_GUID                               *CallerId,\r
-  IN UINTN                                  PrivateDataSize,\r
-  IN UINTN                                  NumberOfWrites\r
+  IN EFI_FAULT_TOLERANT_WRITE_PROTOCOL  *This,\r
+  IN EFI_GUID                           *CallerId,\r
+  IN UINTN                              PrivateDataSize,\r
+  IN UINTN                              NumberOfWrites\r
   )\r
 {\r
-  EFI_STATUS                                Status;\r
-  UINTN                                     PayloadSize;\r
-  EFI_SMM_COMMUNICATE_HEADER                *SmmCommunicateHeader;  \r
-  SMM_FTW_ALLOCATE_HEADER                   *SmmFtwAllocateHeader;\r
+  EFI_STATUS                 Status;\r
+  UINTN                      PayloadSize;\r
+  EFI_MM_COMMUNICATE_HEADER  *SmmCommunicateHeader;\r
+  SMM_FTW_ALLOCATE_HEADER    *SmmFtwAllocateHeader;\r
 \r
   //\r
   // Initialize the communicate buffer.\r
   //\r
-  PayloadSize  = sizeof (SMM_FTW_ALLOCATE_HEADER);\r
+  PayloadSize = sizeof (SMM_FTW_ALLOCATE_HEADER);\r
   InitCommunicateBuffer ((VOID **)&SmmCommunicateHeader, (VOID **)&SmmFtwAllocateHeader, PayloadSize, FTW_FUNCTION_ALLOCATE);\r
   CopyGuid (&SmmFtwAllocateHeader->CallerId, CallerId);\r
   SmmFtwAllocateHeader->PrivateDataSize = PrivateDataSize;\r
-  SmmFtwAllocateHeader->NumberOfWrites  = NumberOfWrites; \r
-    \r
+  SmmFtwAllocateHeader->NumberOfWrites  = NumberOfWrites;\r
+\r
   //\r
   // Send data to SMM.\r
   //\r
   Status = SendCommunicateBuffer (SmmCommunicateHeader, PayloadSize);\r
-  if (!EFI_ERRORStatus)) {\r
+  if (!EFI_ERROR (Status)) {\r
     mPrivateDataSize = PrivateDataSize;\r
   }\r
 \r
@@ -234,7 +229,6 @@ FtwAllocate (
   return Status;\r
 }\r
 \r
-\r
 /**\r
   Starts a target block update. This records information about the write\r
   in fault tolerant storage, and will complete the write in a recoverable\r
@@ -265,34 +259,35 @@ FtwAllocate (
 EFI_STATUS\r
 EFIAPI\r
 FtwWrite (\r
-  IN EFI_FAULT_TOLERANT_WRITE_PROTOCOL      *This,\r
-  IN EFI_LBA                                Lba,\r
-  IN UINTN                                  Offset,\r
-  IN UINTN                                  Length,\r
-  IN VOID                                   *PrivateData,\r
-  IN EFI_HANDLE                             FvBlockHandle,\r
-  IN VOID                                   *Buffer\r
+  IN EFI_FAULT_TOLERANT_WRITE_PROTOCOL  *This,\r
+  IN EFI_LBA                            Lba,\r
+  IN UINTN                              Offset,\r
+  IN UINTN                              Length,\r
+  IN VOID                               *PrivateData,\r
+  IN EFI_HANDLE                         FvBlockHandle,\r
+  IN VOID                               *Buffer\r
   )\r
 {\r
-  EFI_STATUS                                Status;\r
-  UINTN                                     PayloadSize;\r
-  EFI_SMM_COMMUNICATE_HEADER                *SmmCommunicateHeader;  \r
-  SMM_FTW_WRITE_HEADER                      *SmmFtwWriteHeader;\r
+  EFI_STATUS                 Status;\r
+  UINTN                      PayloadSize;\r
+  EFI_MM_COMMUNICATE_HEADER  *SmmCommunicateHeader;\r
+  SMM_FTW_WRITE_HEADER       *SmmFtwWriteHeader;\r
 \r
   //\r
   // Initialize the communicate buffer.\r
   //\r
-  PayloadSize  = OFFSET_OF (SMM_FTW_WRITE_HEADER, Data) + Length;\r
+  PayloadSize = OFFSET_OF (SMM_FTW_WRITE_HEADER, Data) + Length;\r
   if (PrivateData != NULL) {\r
     //\r
     // The private data buffer size should be the same one in FtwAllocate API.\r
     //\r
     PayloadSize += mPrivateDataSize;\r
   }\r
+\r
   InitCommunicateBuffer ((VOID **)&SmmCommunicateHeader, (VOID **)&SmmFtwWriteHeader, PayloadSize, FTW_FUNCTION_WRITE);\r
 \r
   //\r
-  // FvBlockHandle can not be used in SMM environment. Here we get the FVB protocol first, then get FVB base address \r
+  // FvBlockHandle can not be used in SMM environment. Here we get the FVB protocol first, then get FVB base address\r
   // and its attribute. Send these information to SMM handler, the SMM handler will find the proper FVB to write data.\r
   //\r
   Status = ConvertFvbHandle (FvBlockHandle, &SmmFtwWriteHeader->FvbBaseAddress, &SmmFtwWriteHeader->FvbAttributes);\r
@@ -300,9 +295,9 @@ FtwWrite (
     FreePool (SmmCommunicateHeader);\r
     return EFI_ABORTED;\r
   }\r
-  \r
+\r
   SmmFtwWriteHeader->Lba    = Lba;\r
-  SmmFtwWriteHeader->Offset = Offset; \r
+  SmmFtwWriteHeader->Offset = Offset;\r
   SmmFtwWriteHeader->Length = Length;\r
   CopyMem (SmmFtwWriteHeader->Data, Buffer, Length);\r
   if (PrivateData == NULL) {\r
@@ -316,11 +311,10 @@ FtwWrite (
   // Send data to SMM.\r
   //\r
   Status = SendCommunicateBuffer (SmmCommunicateHeader, PayloadSize);\r
-  FreePool (SmmCommunicateHeader);  \r
+  FreePool (SmmCommunicateHeader);\r
   return Status;\r
 }\r
 \r
-\r
 /**\r
   Restarts a previously interrupted write. The caller must provide the\r
   block protocol needed to complete the interrupted write.\r
@@ -336,28 +330,28 @@ FtwWrite (
 EFI_STATUS\r
 EFIAPI\r
 FtwRestart (\r
-  IN EFI_FAULT_TOLERANT_WRITE_PROTOCOL      *This,\r
-  IN EFI_HANDLE                             FvBlockHandle\r
+  IN EFI_FAULT_TOLERANT_WRITE_PROTOCOL  *This,\r
+  IN EFI_HANDLE                         FvBlockHandle\r
   )\r
 {\r
-  EFI_STATUS                                Status;\r
-  UINTN                                     PayloadSize;\r
-  EFI_SMM_COMMUNICATE_HEADER                *SmmCommunicateHeader;  \r
-  SMM_FTW_RESTART_HEADER                    *SmmFtwRestartHeader;\r
\r
+  EFI_STATUS                 Status;\r
+  UINTN                      PayloadSize;\r
+  EFI_MM_COMMUNICATE_HEADER  *SmmCommunicateHeader;\r
+  SMM_FTW_RESTART_HEADER     *SmmFtwRestartHeader;\r
+\r
   //\r
   // Initialize the communicate buffer.\r
   //\r
-  PayloadSize  = sizeof (SMM_FTW_RESTART_HEADER);\r
-  InitCommunicateBuffer ((VOID **)&SmmCommunicateHeader, (VOID **)&SmmFtwRestartHeader, PayloadSize, FTW_FUNCTION_RESTART); \r
+  PayloadSize = sizeof (SMM_FTW_RESTART_HEADER);\r
+  InitCommunicateBuffer ((VOID **)&SmmCommunicateHeader, (VOID **)&SmmFtwRestartHeader, PayloadSize, FTW_FUNCTION_RESTART);\r
 \r
   //\r
-  // FvBlockHandle can not be used in SMM environment. Here we get the FVB protocol first, then get FVB base address \r
+  // FvBlockHandle can not be used in SMM environment. Here we get the FVB protocol first, then get FVB base address\r
   // and its attribute. Send these information to SMM handler, the SMM handler will find the proper FVB to write data.\r
   //\r
   Status = ConvertFvbHandle (FvBlockHandle, &SmmFtwRestartHeader->FvbBaseAddress, &SmmFtwRestartHeader->FvbAttributes);\r
   if (EFI_ERROR (Status)) {\r
-    FreePool (SmmCommunicateHeader); \r
+    FreePool (SmmCommunicateHeader);\r
     return EFI_ABORTED;\r
   }\r
 \r
@@ -365,11 +359,10 @@ FtwRestart (
   // Send data to SMM.\r
   //\r
   Status = SendCommunicateBuffer (SmmCommunicateHeader, PayloadSize);\r
-  FreePool (SmmCommunicateHeader);  \r
+  FreePool (SmmCommunicateHeader);\r
   return Status;\r
 }\r
 \r
-\r
 /**\r
   Aborts all previously allocated writes.\r
 \r
@@ -383,27 +376,26 @@ FtwRestart (
 EFI_STATUS\r
 EFIAPI\r
 FtwAbort (\r
-  IN EFI_FAULT_TOLERANT_WRITE_PROTOCOL      *This\r
+  IN EFI_FAULT_TOLERANT_WRITE_PROTOCOL  *This\r
   )\r
 {\r
-  EFI_STATUS                                Status;\r
-  EFI_SMM_COMMUNICATE_HEADER                *SmmCommunicateHeader;  \r
\r
+  EFI_STATUS                 Status;\r
+  EFI_MM_COMMUNICATE_HEADER  *SmmCommunicateHeader;\r
+\r
   //\r
   // Initialize the communicate buffer.\r
   //\r
   InitCommunicateBuffer ((VOID **)&SmmCommunicateHeader, NULL, 0, FTW_FUNCTION_ABORT);\r
\r
+\r
   //\r
   // Send data to SMM.\r
   //\r
   Status = SendCommunicateBuffer (SmmCommunicateHeader, 0);\r
 \r
-  FreePool (SmmCommunicateHeader);  \r
+  FreePool (SmmCommunicateHeader);\r
   return Status;\r
 }\r
 \r
-\r
 /**\r
   Starts a target block update. This function records information about the write\r
   in fault-tolerant storage and completes the write in a recoverable\r
@@ -432,25 +424,25 @@ FtwAbort (
 EFI_STATUS\r
 EFIAPI\r
 FtwGetLastWrite (\r
-  IN EFI_FAULT_TOLERANT_WRITE_PROTOCOL      *This,\r
-  OUT EFI_GUID                              *CallerId,\r
-  OUT EFI_LBA                               *Lba,\r
-  OUT UINTN                                 *Offset,\r
-  OUT UINTN                                 *Length,\r
-  IN OUT UINTN                              *PrivateDataSize,\r
-  OUT VOID                                  *PrivateData,\r
-  OUT BOOLEAN                               *Complete\r
+  IN EFI_FAULT_TOLERANT_WRITE_PROTOCOL  *This,\r
+  OUT EFI_GUID                          *CallerId,\r
+  OUT EFI_LBA                           *Lba,\r
+  OUT UINTN                             *Offset,\r
+  OUT UINTN                             *Length,\r
+  IN OUT UINTN                          *PrivateDataSize,\r
+  OUT VOID                              *PrivateData,\r
+  OUT BOOLEAN                           *Complete\r
   )\r
 {\r
-  EFI_STATUS                                Status;\r
-  UINTN                                     PayloadSize;\r
-  EFI_SMM_COMMUNICATE_HEADER                *SmmCommunicateHeader;  \r
-  SMM_FTW_GET_LAST_WRITE_HEADER             *SmmFtwGetLastWriteHeader;\r
+  EFI_STATUS                     Status;\r
+  UINTN                          PayloadSize;\r
+  EFI_MM_COMMUNICATE_HEADER      *SmmCommunicateHeader;\r
+  SMM_FTW_GET_LAST_WRITE_HEADER  *SmmFtwGetLastWriteHeader;\r
 \r
   //\r
   // Initialize the communicate buffer.\r
   //\r
-  PayloadSize  = OFFSET_OF (SMM_FTW_GET_LAST_WRITE_HEADER, Data) + *PrivateDataSize;\r
+  PayloadSize = OFFSET_OF (SMM_FTW_GET_LAST_WRITE_HEADER, Data) + *PrivateDataSize;\r
   InitCommunicateBuffer ((VOID **)&SmmCommunicateHeader, (VOID **)&SmmFtwGetLastWriteHeader, PayloadSize, FTW_FUNCTION_GET_LAST_WRITE);\r
   SmmFtwGetLastWriteHeader->PrivateDataSize = *PrivateDataSize;\r
 \r
@@ -463,9 +455,9 @@ FtwGetLastWrite (
   // Get data from SMM\r
   //\r
   *PrivateDataSize = SmmFtwGetLastWriteHeader->PrivateDataSize;\r
-  if (Status == EFI_SUCCESS || Status == EFI_BUFFER_TOO_SMALL) {\r
+  if ((Status == EFI_SUCCESS) || (Status == EFI_BUFFER_TOO_SMALL)) {\r
     *Lba      = SmmFtwGetLastWriteHeader->Lba;\r
-    *Offset   = SmmFtwGetLastWriteHeader->Offset; \r
+    *Offset   = SmmFtwGetLastWriteHeader->Offset;\r
     *Length   = SmmFtwGetLastWriteHeader->Length;\r
     *Complete = SmmFtwGetLastWriteHeader->Complete;\r
     CopyGuid (CallerId, &SmmFtwGetLastWriteHeader->CallerId);\r
@@ -476,7 +468,7 @@ FtwGetLastWrite (
     *Complete = SmmFtwGetLastWriteHeader->Complete;\r
   }\r
 \r
-  FreePool (SmmCommunicateHeader);  \r
+  FreePool (SmmCommunicateHeader);\r
   return Status;\r
 }\r
 \r
@@ -491,23 +483,23 @@ FtwGetLastWrite (
 VOID\r
 EFIAPI\r
 SmmFtwReady (\r
-  IN  EFI_EVENT                             Event,\r
-  IN  VOID                                  *Context\r
+  IN  EFI_EVENT  Event,\r
+  IN  VOID       *Context\r
   )\r
 {\r
-  EFI_STATUS                                Status;\r
-  EFI_FAULT_TOLERANT_WRITE_PROTOCOL         *FtwProtocol;\r
+  EFI_STATUS                         Status;\r
+  EFI_FAULT_TOLERANT_WRITE_PROTOCOL  *FtwProtocol;\r
 \r
   //\r
   // Just return to avoid install SMM FaultTolerantWriteProtocol again\r
   // if Fault Tolerant Write protocol had been installed.\r
-  //  \r
+  //\r
   Status = gBS->LocateProtocol (&gEfiFaultTolerantWriteProtocolGuid, NULL, (VOID **)&FtwProtocol);\r
   if (!EFI_ERROR (Status)) {\r
     return;\r
   }\r
-  \r
-  Status = gBS->LocateProtocol (&gEfiSmmCommunicationProtocolGuid, NULL, (VOID **) &mSmmCommunication);\r
+\r
+  Status = gBS->LocateProtocol (&gEfiMmCommunication2ProtocolGuid, NULL, (VOID **)&mMmCommunication2);\r
   ASSERT_EFI_ERROR (Status);\r
 \r
   //\r
@@ -520,12 +512,11 @@ SmmFtwReady (
                   &mFaultTolerantWriteDriver\r
                   );\r
   ASSERT_EFI_ERROR (Status);\r
-  \r
+\r
   Status = gBS->CloseEvent (Event);\r
-  ASSERT_EFI_ERROR (Status);  \r
+  ASSERT_EFI_ERROR (Status);\r
 }\r
 \r
-\r
 /**\r
   The driver entry point for Fault Tolerant Write driver.\r
 \r
@@ -540,23 +531,22 @@ SmmFtwReady (
 EFI_STATUS\r
 EFIAPI\r
 FaultTolerantWriteSmmInitialize (\r
-  IN EFI_HANDLE                             ImageHandle,\r
-  IN EFI_SYSTEM_TABLE                       *SystemTable\r
+  IN EFI_HANDLE        ImageHandle,\r
+  IN EFI_SYSTEM_TABLE  *SystemTable\r
   )\r
 {\r
-  VOID                                      *SmmFtwRegistration;\r
+  VOID  *SmmFtwRegistration;\r
 \r
   //\r
   // Smm FTW driver is ready\r
   //\r
   EfiCreateProtocolNotifyEvent (\r
     &gEfiSmmFaultTolerantWriteProtocolGuid,\r
-    TPL_CALLBACK, \r
-    SmmFtwReady, \r
-    NULL, \r
+    TPL_CALLBACK,\r
+    SmmFtwReady,\r
+    NULL,\r
     &SmmFtwRegistration\r
     );\r
-  \r
+\r
   return EFI_SUCCESS;\r
 }\r
-\r