TianoCore EDK2 master
|
#include <PiPei.h>
#include <PiDxe.h>
#include <PiSmm.h>
#include <Library/PeiServicesTablePointerLib.h>
#include <Library/PeiServicesLib.h>
#include <Library/BaseLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/LockBoxLib.h>
#include <Library/HobLib.h>
#include <Library/DebugLib.h>
#include <Library/PcdLib.h>
#include <Protocol/SmmCommunication.h>
#include <Ppi/SmmCommunication.h>
#include <Ppi/SmmAccess.h>
#include <Guid/AcpiS3Context.h>
#include <Guid/SmmLockBox.h>
#include "SmmLockBoxLibPrivate.h"
Go to the source code of this file.
Copyright (c) 2010 - 2019, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
Definition in file SmmLockBoxPeiLib.c.
SMM_LOCK_BOX_DATA * InternalFindLockBoxByGuidFromSmram | ( | IN LIST_ENTRY * | LockBoxQueue, |
IN EFI_GUID * | Guid | ||
) |
This function find LockBox by GUID from SMRAM.
LockBoxQueue | The LockBox queue in SMRAM |
Guid | The guid to indentify the LockBox |
Definition at line 124 of file SmmLockBoxPeiLib.c.
SMM_LOCK_BOX_CONTEXT * InternalGetSmmLockBoxContext | ( | VOID | ) |
Get SMM LockBox context.
Definition at line 204 of file SmmLockBoxPeiLib.c.
LIST_ENTRY * InternalInitLinkDxe | ( | IN LIST_ENTRY * | LinkList | ) |
This function return first node of LinkList queue.
LockBoxQueue | LinkList queue |
Definition at line 79 of file SmmLockBoxPeiLib.c.
LIST_ENTRY * InternalNextLinkDxe | ( | IN LIST_ENTRY * | Link | ) |
This function return next node of LinkList.
Link | LinkList node |
Definition at line 101 of file SmmLockBoxPeiLib.c.
EFI_STATUS InternalRestoreAllLockBoxInPlaceFromSmram | ( | VOID | ) |
This function will restore confidential information from all lockbox which have RestoreInPlace attribute.
RETURN_SUCCESS | the information is restored successfully. |
Definition at line 348 of file SmmLockBoxPeiLib.c.
EFI_STATUS InternalRestoreLockBoxFromSmram | ( | IN GUID * | Guid, |
IN VOID *Buffer | OPTIONAL, | ||
IN OUT UINTN *Length | OPTIONAL | ||
) |
This function will restore confidential information from lockbox in SMRAM directly.
Guid | the guid to identify the confidential information |
Buffer | the address of the restored confidential information NULL means restored to original address, Length MUST be NULL at same time. |
Length | the length of the restored confidential information |
RETURN_SUCCESS | the information is restored successfully. |
RETURN_WRITE_PROTECTED | Buffer and Length are NULL, but the LockBox has no LOCK_BOX_ATTRIBUTE_RESTORE_IN_PLACE attribute. |
RETURN_BUFFER_TOO_SMALL | the Length is too small to hold the confidential information. |
RETURN_NOT_FOUND | the requested GUID not found. |
Definition at line 243 of file SmmLockBoxPeiLib.c.
VOID * InternalSmstGetVendorTableByGuid | ( | IN UINT64 | Signature, |
IN EFI_SMM_SYSTEM_TABLE2 * | Smst, | ||
IN EFI_GUID * | VendorGuid | ||
) |
Get VendorTable by VendorGuid in Smst.
Signature | Signature of SMM_S3_RESUME_STATE |
Smst | SMM system table |
VendorGuid | vendor guid |
Definition at line 159 of file SmmLockBoxPeiLib.c.
RETURN_STATUS EFIAPI RestoreAllLockBoxInPlace | ( | VOID | ) |
This function will restore confidential information from all lockbox which have RestoreInPlace attribute.
RETURN_SUCCESS | the information is restored successfully. |
RETURN_NOT_STARTED | it is too early to invoke this interface |
RETURN_UNSUPPORTED | the service is not supported by implementaion. |
Definition at line 661 of file SmmLockBoxPeiLib.c.
RETURN_STATUS EFIAPI RestoreLockBox | ( | IN GUID * | Guid, |
IN VOID *Buffer | OPTIONAL, | ||
IN OUT UINTN *Length | OPTIONAL | ||
) |
This function will restore confidential information from lockbox.
Guid | the guid to identify the confidential information |
Buffer | the address of the restored confidential information NULL means restored to original address, Length MUST be NULL at same time. |
Length | the length of the restored confidential information |
RETURN_SUCCESS | the information is restored successfully. |
RETURN_INVALID_PARAMETER | the Guid is NULL, or one of Buffer and Length is NULL. |
RETURN_WRITE_PROTECTED | Buffer and Length are NULL, but the LockBox has no LOCK_BOX_ATTRIBUTE_RESTORE_IN_PLACE attribute. |
RETURN_BUFFER_TOO_SMALL | the Length is too small to hold the confidential information. |
RETURN_NOT_FOUND | the requested GUID not found. |
RETURN_NOT_STARTED | it is too early to invoke this interface |
RETURN_ACCESS_DENIED | not allow to restore to the address |
RETURN_UNSUPPORTED | the service is not supported by implementaion. |
Definition at line 526 of file SmmLockBoxPeiLib.c.
This function will save confidential information to lockbox.
Guid | the guid to identify the confidential information |
Buffer | the address of the confidential information |
Length | the length of the confidential information |
RETURN_SUCCESS | the information is saved successfully. |
RETURN_INVALID_PARAMETER | the Guid is NULL, or Buffer is NULL, or Length is 0 |
RETURN_ALREADY_STARTED | the requested GUID already exist. |
RETURN_OUT_OF_RESOURCES | no enough resource to save the information. |
RETURN_ACCESS_DENIED | it is too late to invoke this interface |
RETURN_NOT_STARTED | it is too early to invoke this interface |
RETURN_UNSUPPORTED | the service is not supported by implementaion. |
Definition at line 428 of file SmmLockBoxPeiLib.c.
This function will set lockbox attributes.
Guid | the guid to identify the confidential information |
Attributes | the attributes of the lockbox |
RETURN_SUCCESS | the information is saved successfully. |
RETURN_INVALID_PARAMETER | attributes is invalid. |
RETURN_NOT_FOUND | the requested GUID not found. |
RETURN_ACCESS_DENIED | it is too late to invoke this interface |
RETURN_NOT_STARTED | it is too early to invoke this interface |
RETURN_UNSUPPORTED | the service is not supported by implementaion. |
Definition at line 457 of file SmmLockBoxPeiLib.c.
RETURN_STATUS EFIAPI UpdateLockBox | ( | IN GUID * | Guid, |
IN UINTN | Offset, | ||
IN VOID * | Buffer, | ||
IN UINTN | Length | ||
) |
This function will update confidential information to lockbox.
Guid | the guid to identify the original confidential information |
Offset | the offset of the original confidential information |
Buffer | the address of the updated confidential information |
Length | the length of the updated confidential information |
RETURN_SUCCESS | the information is saved successfully. |
RETURN_INVALID_PARAMETER | the Guid is NULL, or Buffer is NULL, or Length is 0. |
RETURN_NOT_FOUND | the requested GUID not found. |
RETURN_BUFFER_TOO_SMALL | for lockbox without attribute LOCK_BOX_ATTRIBUTE_RESTORE_IN_S3_ONLY, the original buffer to too small to hold new information. |
RETURN_OUT_OF_RESOURCES | for lockbox with attribute LOCK_BOX_ATTRIBUTE_RESTORE_IN_S3_ONLY, no enough resource to save the information. |
RETURN_ACCESS_DENIED | it is too late to invoke this interface |
RETURN_NOT_STARTED | it is too early to invoke this interface |
RETURN_UNSUPPORTED | the service is not supported by implementaion. |
Definition at line 491 of file SmmLockBoxPeiLib.c.