]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxPeiLib.c
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / MdeModulePkg / Library / SmmLockBoxLib / SmmLockBoxPeiLib.c
index bd3204b195343cdf6c89262a64a0d871e8f6ad52..69d4c42ad1a49bdc09ebf40f357a2d5741a8edf8 100644 (file)
@@ -1,15 +1,8 @@
 /** @file\r
 \r
-Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2010 - 2019, Intel Corporation. All rights reserved.<BR>\r
 \r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions\r
-of the BSD License which accompanies this distribution.  The\r
-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
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
@@ -35,10 +28,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #if defined (MDE_CPU_IA32)\r
 typedef struct _LIST_ENTRY64 LIST_ENTRY64;\r
 struct _LIST_ENTRY64 {\r
-  LIST_ENTRY64  *ForwardLink;\r
-  UINT32        Reserved1;\r
-  LIST_ENTRY64  *BackLink;\r
-  UINT32        Reserved2;\r
+  LIST_ENTRY64    *ForwardLink;\r
+  UINT32          Reserved1;\r
+  LIST_ENTRY64    *BackLink;\r
+  UINT32          Reserved2;\r
 };\r
 \r
 typedef struct {\r
@@ -64,14 +57,14 @@ typedef struct {
 } EFI_SMM_SYSTEM_TABLE2_64;\r
 \r
 typedef struct {\r
-  EFI_GUID                          VendorGuid;\r
-  UINT64                            VendorTable;\r
+  EFI_GUID    VendorGuid;\r
+  UINT64      VendorTable;\r
 } EFI_CONFIGURATION_TABLE64;\r
 #endif\r
 \r
 #if defined (MDE_CPU_X64)\r
-typedef LIST_ENTRY LIST_ENTRY64;\r
-typedef EFI_SMM_SYSTEM_TABLE2 EFI_SMM_SYSTEM_TABLE2_64;\r
+typedef LIST_ENTRY              LIST_ENTRY64;\r
+typedef EFI_SMM_SYSTEM_TABLE2   EFI_SMM_SYSTEM_TABLE2_64;\r
 typedef EFI_CONFIGURATION_TABLE EFI_CONFIGURATION_TABLE64;\r
 #endif\r
 \r
@@ -84,10 +77,10 @@ typedef EFI_CONFIGURATION_TABLE EFI_CONFIGURATION_TABLE64;
 **/\r
 LIST_ENTRY *\r
 InternalInitLinkDxe (\r
-  IN LIST_ENTRY *LinkList\r
+  IN LIST_ENTRY  *LinkList\r
   )\r
 {\r
-  if ((sizeof(UINTN) == sizeof(UINT32)) && (FeaturePcdGet (PcdDxeIplSwitchToLongMode)) ) {\r
+  if ((sizeof (UINTN) == sizeof (UINT32)) && (FeaturePcdGet (PcdDxeIplSwitchToLongMode))) {\r
     //\r
     // 32 PEI + 64 DXE\r
     //\r
@@ -106,10 +99,10 @@ InternalInitLinkDxe (
 **/\r
 LIST_ENTRY *\r
 InternalNextLinkDxe (\r
-  IN LIST_ENTRY *Link\r
+  IN LIST_ENTRY  *Link\r
   )\r
 {\r
-  if ((sizeof(UINTN) == sizeof(UINT32)) && (FeaturePcdGet (PcdDxeIplSwitchToLongMode)) ) {\r
+  if ((sizeof (UINTN) == sizeof (UINT32)) && (FeaturePcdGet (PcdDxeIplSwitchToLongMode))) {\r
     //\r
     // 32 PEI + 64 DXE\r
     //\r
@@ -129,16 +122,17 @@ InternalNextLinkDxe (
 **/\r
 SMM_LOCK_BOX_DATA *\r
 InternalFindLockBoxByGuidFromSmram (\r
-  IN LIST_ENTRY *LockBoxQueue,\r
-  IN EFI_GUID   *Guid\r
+  IN LIST_ENTRY  *LockBoxQueue,\r
+  IN EFI_GUID    *Guid\r
   )\r
 {\r
-  LIST_ENTRY                    *Link;\r
-  SMM_LOCK_BOX_DATA             *LockBox;\r
+  LIST_ENTRY         *Link;\r
+  SMM_LOCK_BOX_DATA  *LockBox;\r
 \r
   for (Link = InternalInitLinkDxe (LockBoxQueue);\r
        Link != LockBoxQueue;\r
-       Link = InternalNextLinkDxe (Link)) {\r
+       Link = InternalNextLinkDxe (Link))\r
+  {\r
     LockBox = BASE_CR (\r
                 Link,\r
                 SMM_LOCK_BOX_DATA,\r
@@ -148,6 +142,7 @@ InternalFindLockBoxByGuidFromSmram (
       return LockBox;\r
     }\r
   }\r
+\r
   return NULL;\r
 }\r
 \r
@@ -162,38 +157,40 @@ InternalFindLockBoxByGuidFromSmram (
 **/\r
 VOID *\r
 InternalSmstGetVendorTableByGuid (\r
-  IN UINT64                                        Signature,\r
-  IN EFI_SMM_SYSTEM_TABLE2                         *Smst,\r
-  IN EFI_GUID                                      *VendorGuid\r
+  IN UINT64                 Signature,\r
+  IN EFI_SMM_SYSTEM_TABLE2  *Smst,\r
+  IN EFI_GUID               *VendorGuid\r
   )\r
 {\r
-  EFI_CONFIGURATION_TABLE                       *SmmConfigurationTable;\r
-  UINTN                                         NumberOfTableEntries;\r
-  UINTN                                         Index;\r
-  EFI_SMM_SYSTEM_TABLE2_64                      *Smst64;\r
-  EFI_CONFIGURATION_TABLE64                     *SmmConfigurationTable64;\r
+  EFI_CONFIGURATION_TABLE    *SmmConfigurationTable;\r
+  UINTN                      NumberOfTableEntries;\r
+  UINTN                      Index;\r
+  EFI_SMM_SYSTEM_TABLE2_64   *Smst64;\r
+  EFI_CONFIGURATION_TABLE64  *SmmConfigurationTable64;\r
 \r
-  if ((sizeof(UINTN) == sizeof(UINT32)) && (FeaturePcdGet (PcdDxeIplSwitchToLongMode))) {\r
+  if ((sizeof (UINTN) == sizeof (UINT32)) && (FeaturePcdGet (PcdDxeIplSwitchToLongMode))) {\r
     //\r
     // 32 PEI + 64 DXE\r
     //\r
-    Smst64 = (EFI_SMM_SYSTEM_TABLE2_64 *)Smst;\r
+    Smst64                  = (EFI_SMM_SYSTEM_TABLE2_64 *)Smst;\r
     SmmConfigurationTable64 = (EFI_CONFIGURATION_TABLE64 *)(UINTN)Smst64->SmmConfigurationTable;\r
-    NumberOfTableEntries = (UINTN)Smst64->NumberOfTableEntries;\r
+    NumberOfTableEntries    = (UINTN)Smst64->NumberOfTableEntries;\r
     for (Index = 0; Index < NumberOfTableEntries; Index++) {\r
       if (CompareGuid (&SmmConfigurationTable64[Index].VendorGuid, VendorGuid)) {\r
         return (VOID *)(UINTN)SmmConfigurationTable64[Index].VendorTable;\r
       }\r
     }\r
+\r
     return NULL;\r
   } else {\r
     SmmConfigurationTable = Smst->SmmConfigurationTable;\r
-    NumberOfTableEntries = Smst->NumberOfTableEntries;\r
+    NumberOfTableEntries  = Smst->NumberOfTableEntries;\r
     for (Index = 0; Index < NumberOfTableEntries; Index++) {\r
       if (CompareGuid (&SmmConfigurationTable[Index].VendorGuid, VendorGuid)) {\r
         return (VOID *)SmmConfigurationTable[Index].VendorTable;\r
       }\r
     }\r
+\r
     return NULL;\r
   }\r
 }\r
@@ -208,14 +205,14 @@ InternalGetSmmLockBoxContext (
   VOID\r
   )\r
 {\r
-  EFI_SMRAM_DESCRIPTOR                          *SmramDescriptor;\r
-  SMM_S3_RESUME_STATE                           *SmmS3ResumeState;\r
-  VOID                                          *GuidHob;\r
-  SMM_LOCK_BOX_CONTEXT                          *SmmLockBoxContext;\r
+  EFI_SMRAM_DESCRIPTOR  *SmramDescriptor;\r
+  SMM_S3_RESUME_STATE   *SmmS3ResumeState;\r
+  VOID                  *GuidHob;\r
+  SMM_LOCK_BOX_CONTEXT  *SmmLockBoxContext;\r
 \r
   GuidHob = GetFirstGuidHob (&gEfiAcpiVariableGuid);\r
   ASSERT (GuidHob != NULL);\r
-  SmramDescriptor = (EFI_SMRAM_DESCRIPTOR *) GET_GUID_HOB_DATA (GuidHob);\r
+  SmramDescriptor  = (EFI_SMRAM_DESCRIPTOR *)GET_GUID_HOB_DATA (GuidHob);\r
   SmmS3ResumeState = (SMM_S3_RESUME_STATE *)(UINTN)SmramDescriptor->CpuStart;\r
 \r
   SmmLockBoxContext = (SMM_LOCK_BOX_CONTEXT *)InternalSmstGetVendorTableByGuid (\r
@@ -237,25 +234,25 @@ InternalGetSmmLockBoxContext (
   @param Length the length of the restored confidential information\r
 \r
   @retval RETURN_SUCCESS            the information is restored successfully.\r
-  @retval RETURN_WRITE_PROTECTED    Buffer and Length are NULL, but the LockBox has no \r
+  @retval RETURN_WRITE_PROTECTED    Buffer and Length are NULL, but the LockBox has no\r
                                     LOCK_BOX_ATTRIBUTE_RESTORE_IN_PLACE attribute.\r
   @retval RETURN_BUFFER_TOO_SMALL   the Length is too small to hold the confidential information.\r
   @retval RETURN_NOT_FOUND          the requested GUID not found.\r
 **/\r
 EFI_STATUS\r
 InternalRestoreLockBoxFromSmram (\r
-  IN  GUID                        *Guid,\r
-  IN  VOID                        *Buffer, OPTIONAL\r
-  IN  OUT UINTN                   *Length  OPTIONAL\r
+  IN  GUID       *Guid,\r
+  IN  VOID       *Buffer  OPTIONAL,\r
+  IN  OUT UINTN  *Length  OPTIONAL\r
   )\r
 {\r
-  PEI_SMM_ACCESS_PPI             *SmmAccess;\r
-  UINTN                          Index;\r
-  EFI_STATUS                     Status;\r
-  SMM_LOCK_BOX_CONTEXT           *SmmLockBoxContext;\r
-  LIST_ENTRY                     *LockBoxQueue;\r
-  SMM_LOCK_BOX_DATA              *LockBox;\r
-  VOID                           *RestoreBuffer;\r
+  PEI_SMM_ACCESS_PPI    *SmmAccess;\r
+  UINTN                 Index;\r
+  EFI_STATUS            Status;\r
+  SMM_LOCK_BOX_CONTEXT  *SmmLockBoxContext;\r
+  LIST_ENTRY            *LockBoxQueue;\r
+  SMM_LOCK_BOX_DATA     *LockBox;\r
+  VOID                  *RestoreBuffer;\r
 \r
   //\r
   // Get needed resource\r
@@ -276,7 +273,7 @@ InternalRestoreLockBoxFromSmram (
   // Get LockBox context\r
   //\r
   SmmLockBoxContext = InternalGetSmmLockBoxContext ();\r
-  LockBoxQueue = (LIST_ENTRY *)(UINTN)SmmLockBoxContext->LockBoxDataAddress;\r
+  LockBoxQueue      = (LIST_ENTRY *)(UINTN)SmmLockBoxContext->LockBoxDataAddress;\r
 \r
   //\r
   // We do NOT check Buffer address in SMRAM, because if SMRAM not locked, we trust the caller.\r
@@ -312,6 +309,7 @@ InternalRestoreLockBoxFromSmram (
     if ((LockBox->Attributes & LOCK_BOX_ATTRIBUTE_RESTORE_IN_PLACE) == 0) {\r
       return EFI_WRITE_PROTECTED;\r
     }\r
+\r
     RestoreBuffer = (VOID *)(UINTN)LockBox->Buffer;\r
   }\r
 \r
@@ -326,6 +324,7 @@ InternalRestoreLockBoxFromSmram (
       *Length = (UINTN)LockBox->Length;\r
       return EFI_BUFFER_TOO_SMALL;\r
     }\r
+\r
     *Length = (UINTN)LockBox->Length;\r
   }\r
 \r
@@ -350,13 +349,13 @@ InternalRestoreAllLockBoxInPlaceFromSmram (
   VOID\r
   )\r
 {\r
-  PEI_SMM_ACCESS_PPI             *SmmAccess;\r
-  UINTN                          Index;\r
-  EFI_STATUS                     Status;\r
-  SMM_LOCK_BOX_CONTEXT           *SmmLockBoxContext;\r
-  LIST_ENTRY                     *LockBoxQueue;\r
-  SMM_LOCK_BOX_DATA              *LockBox;\r
-  LIST_ENTRY                     *Link;\r
+  PEI_SMM_ACCESS_PPI    *SmmAccess;\r
+  UINTN                 Index;\r
+  EFI_STATUS            Status;\r
+  SMM_LOCK_BOX_CONTEXT  *SmmLockBoxContext;\r
+  LIST_ENTRY            *LockBoxQueue;\r
+  SMM_LOCK_BOX_DATA     *LockBox;\r
+  LIST_ENTRY            *Link;\r
 \r
   //\r
   // Get needed resource\r
@@ -377,7 +376,7 @@ InternalRestoreAllLockBoxInPlaceFromSmram (
   // Get LockBox context\r
   //\r
   SmmLockBoxContext = InternalGetSmmLockBoxContext ();\r
-  LockBoxQueue = (LIST_ENTRY *)(UINTN)SmmLockBoxContext->LockBoxDataAddress;\r
+  LockBoxQueue      = (LIST_ENTRY *)(UINTN)SmmLockBoxContext->LockBoxDataAddress;\r
 \r
   //\r
   // We do NOT check Buffer address in SMRAM, because if SMRAM not locked, we trust the caller.\r
@@ -388,7 +387,8 @@ InternalRestoreAllLockBoxInPlaceFromSmram (
   //\r
   for (Link = InternalInitLinkDxe (LockBoxQueue);\r
        Link != LockBoxQueue;\r
-       Link = InternalNextLinkDxe (Link)) {\r
+       Link = InternalNextLinkDxe (Link))\r
+  {\r
     LockBox = BASE_CR (\r
                 Link,\r
                 SMM_LOCK_BOX_DATA,\r
@@ -401,6 +401,7 @@ InternalRestoreAllLockBoxInPlaceFromSmram (
       CopyMem ((VOID *)(UINTN)LockBox->Buffer, (VOID *)(UINTN)LockBox->SmramBuffer, (UINTN)LockBox->Length);\r
     }\r
   }\r
+\r
   //\r
   // Done\r
   //\r
@@ -425,9 +426,9 @@ InternalRestoreAllLockBoxInPlaceFromSmram (
 RETURN_STATUS\r
 EFIAPI\r
 SaveLockBox (\r
-  IN  GUID                        *Guid,\r
-  IN  VOID                        *Buffer,\r
-  IN  UINTN                       Length\r
+  IN  GUID   *Guid,\r
+  IN  VOID   *Buffer,\r
+  IN  UINTN  Length\r
   )\r
 {\r
   ASSERT (FALSE);\r
@@ -454,8 +455,8 @@ SaveLockBox (
 RETURN_STATUS\r
 EFIAPI\r
 SetLockBoxAttributes (\r
-  IN  GUID                        *Guid,\r
-  IN  UINT64                      Attributes\r
+  IN  GUID    *Guid,\r
+  IN  UINT64  Attributes\r
   )\r
 {\r
   ASSERT (FALSE);\r
@@ -477,7 +478,10 @@ SetLockBoxAttributes (
   @retval RETURN_SUCCESS            the information is saved successfully.\r
   @retval RETURN_INVALID_PARAMETER  the Guid is NULL, or Buffer is NULL, or Length is 0.\r
   @retval RETURN_NOT_FOUND          the requested GUID not found.\r
-  @retval RETURN_BUFFER_TOO_SMALL   the original buffer to too small to hold new information.\r
+  @retval RETURN_BUFFER_TOO_SMALL   for lockbox without attribute LOCK_BOX_ATTRIBUTE_RESTORE_IN_S3_ONLY,\r
+                                    the original buffer to too small to hold new information.\r
+  @retval RETURN_OUT_OF_RESOURCES   for lockbox with attribute LOCK_BOX_ATTRIBUTE_RESTORE_IN_S3_ONLY,\r
+                                    no enough resource to save the information.\r
   @retval RETURN_ACCESS_DENIED      it is too late to invoke this interface\r
   @retval RETURN_NOT_STARTED        it is too early to invoke this interface\r
   @retval RETURN_UNSUPPORTED        the service is not supported by implementaion.\r
@@ -485,10 +489,10 @@ SetLockBoxAttributes (
 RETURN_STATUS\r
 EFIAPI\r
 UpdateLockBox (\r
-  IN  GUID                        *Guid,\r
-  IN  UINTN                       Offset,\r
-  IN  VOID                        *Buffer,\r
-  IN  UINTN                       Length\r
+  IN  GUID   *Guid,\r
+  IN  UINTN  Offset,\r
+  IN  VOID   *Buffer,\r
+  IN  UINTN  Length\r
   )\r
 {\r
   ASSERT (FALSE);\r
@@ -509,7 +513,7 @@ UpdateLockBox (
 \r
   @retval RETURN_SUCCESS            the information is restored successfully.\r
   @retval RETURN_INVALID_PARAMETER  the Guid is NULL, or one of Buffer and Length is NULL.\r
-  @retval RETURN_WRITE_PROTECTED    Buffer and Length are NULL, but the LockBox has no \r
+  @retval RETURN_WRITE_PROTECTED    Buffer and Length are NULL, but the LockBox has no\r
                                     LOCK_BOX_ATTRIBUTE_RESTORE_IN_PLACE attribute.\r
   @retval RETURN_BUFFER_TOO_SMALL   the Length is too small to hold the confidential information.\r
   @retval RETURN_NOT_FOUND          the requested GUID not found.\r
@@ -520,18 +524,18 @@ UpdateLockBox (
 RETURN_STATUS\r
 EFIAPI\r
 RestoreLockBox (\r
-  IN  GUID                        *Guid,\r
-  IN  VOID                        *Buffer, OPTIONAL\r
-  IN  OUT UINTN                   *Length  OPTIONAL\r
+  IN  GUID       *Guid,\r
+  IN  VOID       *Buffer  OPTIONAL,\r
+  IN  OUT UINTN  *Length  OPTIONAL\r
   )\r
 {\r
-  EFI_STATUS                         Status;\r
-  EFI_PEI_SMM_COMMUNICATION_PPI      *SmmCommunicationPpi;\r
-  EFI_SMM_LOCK_BOX_PARAMETER_RESTORE *LockBoxParameterRestore;\r
-  EFI_SMM_COMMUNICATE_HEADER         *CommHeader;\r
-  UINT8                              CommBuffer[sizeof(EFI_GUID) + sizeof(UINT64) + sizeof(EFI_SMM_LOCK_BOX_PARAMETER_RESTORE)];\r
-  UINTN                              CommSize;\r
-  UINT64                             MessageLength;\r
+  EFI_STATUS                          Status;\r
+  EFI_PEI_SMM_COMMUNICATION_PPI       *SmmCommunicationPpi;\r
+  EFI_SMM_LOCK_BOX_PARAMETER_RESTORE  *LockBoxParameterRestore;\r
+  EFI_SMM_COMMUNICATE_HEADER          *CommHeader;\r
+  UINT8                               CommBuffer[sizeof (EFI_GUID) + sizeof (UINT64) + sizeof (EFI_SMM_LOCK_BOX_PARAMETER_RESTORE)];\r
+  UINTN                               CommSize;\r
+  UINT64                              MessageLength;\r
 \r
   //\r
   // Please aware that there is UINTN in EFI_SMM_COMMUNICATE_HEADER. It might be UINT64 in DXE, while it is UINT32 in PEI.\r
@@ -542,14 +546,15 @@ RestoreLockBox (
   // } EFI_SMM_COMMUNICATE_HEADER;\r
   //\r
 \r
-  DEBUG ((EFI_D_INFO, "SmmLockBoxPeiLib RestoreLockBox - Enter\n"));\r
+  DEBUG ((DEBUG_INFO, "SmmLockBoxPeiLib RestoreLockBox - Enter\n"));\r
 \r
   //\r
   // Basic check\r
   //\r
   if ((Guid == NULL) ||\r
       ((Buffer == NULL) && (Length != NULL)) ||\r
-      ((Buffer != NULL) && (Length == NULL))) {\r
+      ((Buffer != NULL) && (Length == NULL)))\r
+  {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
@@ -563,36 +568,41 @@ RestoreLockBox (
              (VOID **)&SmmCommunicationPpi\r
              );\r
   if (EFI_ERROR (Status)) {\r
-    return EFI_NOT_STARTED;\r
+    DEBUG ((DEBUG_INFO, "SmmLockBoxPeiLib LocatePpi - (%r)\n", Status));\r
+    Status = InternalRestoreLockBoxFromSmram (Guid, Buffer, Length);\r
+    DEBUG ((DEBUG_INFO, "SmmLockBoxPeiLib RestoreLockBox - Exit (%r)\n", Status));\r
+    return Status;\r
   }\r
 \r
   //\r
   // Prepare parameter\r
   //\r
   CommHeader = (EFI_SMM_COMMUNICATE_HEADER *)&CommBuffer[0];\r
-  CopyMem (&CommHeader->HeaderGuid, &gEfiSmmLockBoxCommunicationGuid, sizeof(gEfiSmmLockBoxCommunicationGuid));\r
-  if ((sizeof(UINTN) == sizeof(UINT32)) && (FeaturePcdGet (PcdDxeIplSwitchToLongMode)) ) {\r
-    MessageLength = sizeof(*LockBoxParameterRestore);\r
-    CopyMem (&CommBuffer[OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, MessageLength)], &MessageLength, sizeof(MessageLength));\r
+  CopyMem (&CommHeader->HeaderGuid, &gEfiSmmLockBoxCommunicationGuid, sizeof (gEfiSmmLockBoxCommunicationGuid));\r
+  if ((sizeof (UINTN) == sizeof (UINT32)) && (FeaturePcdGet (PcdDxeIplSwitchToLongMode))) {\r
+    MessageLength = sizeof (*LockBoxParameterRestore);\r
+    CopyMem (&CommBuffer[OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, MessageLength)], &MessageLength, sizeof (MessageLength));\r
   } else {\r
-    CommHeader->MessageLength = sizeof(*LockBoxParameterRestore);\r
+    CommHeader->MessageLength = sizeof (*LockBoxParameterRestore);\r
   }\r
 \r
-  DEBUG ((EFI_D_INFO, "SmmLockBoxPeiLib CommBuffer - %x\n", &CommBuffer[0]));\r
-  if ((sizeof(UINTN) == sizeof(UINT32)) && (FeaturePcdGet (PcdDxeIplSwitchToLongMode)) ) {\r
-    LockBoxParameterRestore = (EFI_SMM_LOCK_BOX_PARAMETER_RESTORE *)&CommBuffer[OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, MessageLength) + sizeof(UINT64)];\r
+  DEBUG ((DEBUG_INFO, "SmmLockBoxPeiLib CommBuffer - %x\n", &CommBuffer[0]));\r
+  if ((sizeof (UINTN) == sizeof (UINT32)) && (FeaturePcdGet (PcdDxeIplSwitchToLongMode))) {\r
+    LockBoxParameterRestore = (EFI_SMM_LOCK_BOX_PARAMETER_RESTORE *)&CommBuffer[OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, MessageLength) + sizeof (UINT64)];\r
   } else {\r
-    LockBoxParameterRestore = (EFI_SMM_LOCK_BOX_PARAMETER_RESTORE *)&CommBuffer[OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, MessageLength) + sizeof(UINTN)];\r
+    LockBoxParameterRestore = (EFI_SMM_LOCK_BOX_PARAMETER_RESTORE *)&CommBuffer[OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, MessageLength) + sizeof (UINTN)];\r
   }\r
-  DEBUG ((EFI_D_INFO, "SmmLockBoxPeiLib LockBoxParameterRestore - %x\n", LockBoxParameterRestore));\r
-  LockBoxParameterRestore->Header.Command    = EFI_SMM_LOCK_BOX_COMMAND_RESTORE;\r
-  LockBoxParameterRestore->Header.DataLength = sizeof(*LockBoxParameterRestore);\r
+\r
+  DEBUG ((DEBUG_INFO, "SmmLockBoxPeiLib LockBoxParameterRestore - %x\n", LockBoxParameterRestore));\r
+  LockBoxParameterRestore->Header.Command      = EFI_SMM_LOCK_BOX_COMMAND_RESTORE;\r
+  LockBoxParameterRestore->Header.DataLength   = sizeof (*LockBoxParameterRestore);\r
   LockBoxParameterRestore->Header.ReturnStatus = (UINT64)-1;\r
   if (Guid != 0) {\r
-    CopyMem (&LockBoxParameterRestore->Guid, Guid, sizeof(*Guid));\r
+    CopyMem (&LockBoxParameterRestore->Guid, Guid, sizeof (*Guid));\r
   } else {\r
-    ZeroMem (&LockBoxParameterRestore->Guid, sizeof(*Guid));\r
+    ZeroMem (&LockBoxParameterRestore->Guid, sizeof (*Guid));\r
   }\r
+\r
   LockBoxParameterRestore->Buffer = (EFI_PHYSICAL_ADDRESS)(UINTN)Buffer;\r
   if (Length != NULL) {\r
     LockBoxParameterRestore->Length = (EFI_PHYSICAL_ADDRESS)*Length;\r
@@ -603,24 +613,23 @@ RestoreLockBox (
   //\r
   // Send command\r
   //\r
-  CommSize = sizeof(CommBuffer);\r
-  Status = SmmCommunicationPpi->Communicate (\r
-                                  SmmCommunicationPpi,\r
-                                  &CommBuffer[0],\r
-                                  &CommSize\r
-                                  );\r
+  CommSize = sizeof (CommBuffer);\r
+  Status   = SmmCommunicationPpi->Communicate (\r
+                                    SmmCommunicationPpi,\r
+                                    &CommBuffer[0],\r
+                                    &CommSize\r
+                                    );\r
   if (Status == EFI_NOT_STARTED) {\r
     //\r
     // Pei SMM communication not ready yet, so we access SMRAM directly\r
     //\r
-    DEBUG ((EFI_D_INFO, "SmmLockBoxPeiLib Communicate - (%r)\n", Status));\r
-    Status = InternalRestoreLockBoxFromSmram (Guid, Buffer, Length);\r
+    DEBUG ((DEBUG_INFO, "SmmLockBoxPeiLib Communicate - (%r)\n", Status));\r
+    Status                                       = InternalRestoreLockBoxFromSmram (Guid, Buffer, Length);\r
     LockBoxParameterRestore->Header.ReturnStatus = (UINT64)Status;\r
     if (Length != NULL) {\r
       LockBoxParameterRestore->Length = (UINT64)*Length;\r
     }\r
   }\r
-  ASSERT_EFI_ERROR (Status);\r
 \r
   if (Length != NULL) {\r
     *Length = (UINTN)LockBoxParameterRestore->Length;\r
@@ -632,7 +641,7 @@ RestoreLockBox (
     Status |= MAX_BIT;\r
   }\r
 \r
-  DEBUG ((EFI_D_INFO, "SmmLockBoxPeiLib RestoreLockBox - Exit (%r)\n", Status));\r
+  DEBUG ((DEBUG_INFO, "SmmLockBoxPeiLib RestoreLockBox - Exit (%r)\n", Status));\r
 \r
   //\r
   // Done\r
@@ -653,13 +662,13 @@ RestoreAllLockBoxInPlace (
   VOID\r
   )\r
 {\r
-  EFI_STATUS                                      Status;\r
-  EFI_PEI_SMM_COMMUNICATION_PPI                   *SmmCommunicationPpi;\r
-  EFI_SMM_LOCK_BOX_PARAMETER_RESTORE_ALL_IN_PLACE *LockBoxParameterRestoreAllInPlace;\r
-  EFI_SMM_COMMUNICATE_HEADER                      *CommHeader;\r
-  UINT8                                           CommBuffer[sizeof(EFI_GUID) + sizeof(UINT64) + sizeof(EFI_SMM_LOCK_BOX_PARAMETER_RESTORE_ALL_IN_PLACE)];\r
-  UINTN                                           CommSize;\r
-  UINT64                                          MessageLength;\r
+  EFI_STATUS                                       Status;\r
+  EFI_PEI_SMM_COMMUNICATION_PPI                    *SmmCommunicationPpi;\r
+  EFI_SMM_LOCK_BOX_PARAMETER_RESTORE_ALL_IN_PLACE  *LockBoxParameterRestoreAllInPlace;\r
+  EFI_SMM_COMMUNICATE_HEADER                       *CommHeader;\r
+  UINT8                                            CommBuffer[sizeof (EFI_GUID) + sizeof (UINT64) + sizeof (EFI_SMM_LOCK_BOX_PARAMETER_RESTORE_ALL_IN_PLACE)];\r
+  UINTN                                            CommSize;\r
+  UINT64                                           MessageLength;\r
 \r
   //\r
   // Please aware that there is UINTN in EFI_SMM_COMMUNICATE_HEADER. It might be UINT64 in DXE, while it is UINT32 in PEI.\r
@@ -670,7 +679,7 @@ RestoreAllLockBoxInPlace (
   // } EFI_SMM_COMMUNICATE_HEADER;\r
   //\r
 \r
-  DEBUG ((EFI_D_INFO, "SmmLockBoxPeiLib RestoreAllLockBoxInPlace - Enter\n"));\r
+  DEBUG ((DEBUG_INFO, "SmmLockBoxPeiLib RestoreAllLockBoxInPlace - Enter\n"));\r
 \r
   //\r
   // Get needed resource\r
@@ -682,47 +691,52 @@ RestoreAllLockBoxInPlace (
              (VOID **)&SmmCommunicationPpi\r
              );\r
   if (EFI_ERROR (Status)) {\r
-    return EFI_NOT_STARTED;\r
+    DEBUG ((DEBUG_INFO, "SmmLockBoxPeiLib LocatePpi - (%r)\n", Status));\r
+    Status = InternalRestoreAllLockBoxInPlaceFromSmram ();\r
+    DEBUG ((DEBUG_INFO, "SmmLockBoxPeiLib RestoreAllLockBoxInPlace - Exit (%r)\n", Status));\r
+    return Status;\r
   }\r
 \r
   //\r
   // Prepare parameter\r
   //\r
   CommHeader = (EFI_SMM_COMMUNICATE_HEADER *)&CommBuffer[0];\r
-  CopyMem (&CommHeader->HeaderGuid, &gEfiSmmLockBoxCommunicationGuid, sizeof(gEfiSmmLockBoxCommunicationGuid));\r
-  if ((sizeof(UINTN) == sizeof(UINT32)) && (FeaturePcdGet (PcdDxeIplSwitchToLongMode)) ) {\r
-    MessageLength = sizeof(*LockBoxParameterRestoreAllInPlace);\r
-    CopyMem (&CommBuffer[OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, MessageLength)], &MessageLength, sizeof(MessageLength));\r
+  CopyMem (&CommHeader->HeaderGuid, &gEfiSmmLockBoxCommunicationGuid, sizeof (gEfiSmmLockBoxCommunicationGuid));\r
+  if ((sizeof (UINTN) == sizeof (UINT32)) && (FeaturePcdGet (PcdDxeIplSwitchToLongMode))) {\r
+    MessageLength = sizeof (*LockBoxParameterRestoreAllInPlace);\r
+    CopyMem (&CommBuffer[OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, MessageLength)], &MessageLength, sizeof (MessageLength));\r
   } else {\r
-    CommHeader->MessageLength = sizeof(*LockBoxParameterRestoreAllInPlace);\r
+    CommHeader->MessageLength = sizeof (*LockBoxParameterRestoreAllInPlace);\r
   }\r
 \r
-  if ((sizeof(UINTN) == sizeof(UINT32)) && (FeaturePcdGet (PcdDxeIplSwitchToLongMode)) ) {\r
-    LockBoxParameterRestoreAllInPlace = (EFI_SMM_LOCK_BOX_PARAMETER_RESTORE_ALL_IN_PLACE *)&CommBuffer[OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, MessageLength) + sizeof(UINT64)];\r
+  if ((sizeof (UINTN) == sizeof (UINT32)) && (FeaturePcdGet (PcdDxeIplSwitchToLongMode))) {\r
+    LockBoxParameterRestoreAllInPlace = (EFI_SMM_LOCK_BOX_PARAMETER_RESTORE_ALL_IN_PLACE *)&CommBuffer[OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, MessageLength) + sizeof (UINT64)];\r
   } else {\r
-    LockBoxParameterRestoreAllInPlace = (EFI_SMM_LOCK_BOX_PARAMETER_RESTORE_ALL_IN_PLACE *)&CommBuffer[OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, MessageLength) + sizeof(UINTN)];\r
+    LockBoxParameterRestoreAllInPlace = (EFI_SMM_LOCK_BOX_PARAMETER_RESTORE_ALL_IN_PLACE *)&CommBuffer[OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, MessageLength) + sizeof (UINTN)];\r
   }\r
-  LockBoxParameterRestoreAllInPlace->Header.Command    = EFI_SMM_LOCK_BOX_COMMAND_RESTORE_ALL_IN_PLACE;\r
-  LockBoxParameterRestoreAllInPlace->Header.DataLength = sizeof(*LockBoxParameterRestoreAllInPlace);\r
+\r
+  LockBoxParameterRestoreAllInPlace->Header.Command      = EFI_SMM_LOCK_BOX_COMMAND_RESTORE_ALL_IN_PLACE;\r
+  LockBoxParameterRestoreAllInPlace->Header.DataLength   = sizeof (*LockBoxParameterRestoreAllInPlace);\r
   LockBoxParameterRestoreAllInPlace->Header.ReturnStatus = (UINT64)-1;\r
 \r
   //\r
   // Send command\r
   //\r
-  CommSize = sizeof(CommBuffer);\r
-  Status = SmmCommunicationPpi->Communicate (\r
-                                  SmmCommunicationPpi,\r
-                                  &CommBuffer[0],\r
-                                  &CommSize\r
-                                  );\r
+  CommSize = sizeof (CommBuffer);\r
+  Status   = SmmCommunicationPpi->Communicate (\r
+                                    SmmCommunicationPpi,\r
+                                    &CommBuffer[0],\r
+                                    &CommSize\r
+                                    );\r
   if (Status == EFI_NOT_STARTED) {\r
     //\r
     // Pei SMM communication not ready yet, so we access SMRAM directly\r
     //\r
-    DEBUG ((EFI_D_INFO, "SmmLockBoxPeiLib Communicate - (%r)\n", Status));\r
-    Status = InternalRestoreAllLockBoxInPlaceFromSmram ();\r
+    DEBUG ((DEBUG_INFO, "SmmLockBoxPeiLib Communicate - (%r)\n", Status));\r
+    Status                                                 = InternalRestoreAllLockBoxInPlaceFromSmram ();\r
     LockBoxParameterRestoreAllInPlace->Header.ReturnStatus = (UINT64)Status;\r
   }\r
+\r
   ASSERT_EFI_ERROR (Status);\r
 \r
   Status = (EFI_STATUS)LockBoxParameterRestoreAllInPlace->Header.ReturnStatus;\r
@@ -731,11 +745,10 @@ RestoreAllLockBoxInPlace (
     Status |= MAX_BIT;\r
   }\r
 \r
-  DEBUG ((EFI_D_INFO, "SmmLockBoxPeiLib RestoreAllLockBoxInPlace - Exit (%r)\n", Status));\r
+  DEBUG ((DEBUG_INFO, "SmmLockBoxPeiLib RestoreAllLockBoxInPlace - Exit (%r)\n", Status));\r
 \r
   //\r
   // Done\r
   //\r
   return Status;\r
 }\r
-\r