/** @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
#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
} 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
**/\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
**/\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
**/\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
return LockBox;\r
}\r
}\r
+\r
return NULL;\r
}\r
\r
**/\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
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
@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
// 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
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
*Length = (UINTN)LockBox->Length;\r
return EFI_BUFFER_TOO_SMALL;\r
}\r
+\r
*Length = (UINTN)LockBox->Length;\r
}\r
\r
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
// 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
//\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
CopyMem ((VOID *)(UINTN)LockBox->Buffer, (VOID *)(UINTN)LockBox->SmramBuffer, (UINTN)LockBox->Length);\r
}\r
}\r
+\r
//\r
// Done\r
//\r
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
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
@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
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
\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
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
// } 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
(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
//\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
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
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
// } 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
(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
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