TianoCore EDK2 master
Loading...
Searching...
No Matches
MemEncryptSevLib.h File Reference
#include <Base.h>
#include <WorkArea.h>

Go to the source code of this file.

Data Structures

struct  SEV_ES_PER_CPU_DATA
 

Macros

#define VMGEXIT_MAXIMUM_VC_COUNT   2
 

Enumerations

enum  MEM_ENCRYPT_SEV_ADDRESS_RANGE_STATE { MemEncryptSevAddressRangeUnencrypted , MemEncryptSevAddressRangeEncrypted , MemEncryptSevAddressRangeMixed , MemEncryptSevAddressRangeError }
 

Functions

BOOLEAN EFIAPI MemEncryptSevSnpIsEnabled (VOID)
 
BOOLEAN EFIAPI MemEncryptSevEsIsEnabled (VOID)
 
BOOLEAN EFIAPI MemEncryptSevIsEnabled (VOID)
 
RETURN_STATUS EFIAPI MemEncryptSevClearPageEncMask (IN PHYSICAL_ADDRESS Cr3BaseAddress, IN PHYSICAL_ADDRESS BaseAddress, IN UINTN NumPages)
 
RETURN_STATUS EFIAPI MemEncryptSevSetPageEncMask (IN PHYSICAL_ADDRESS Cr3BaseAddress, IN PHYSICAL_ADDRESS BaseAddress, IN UINTN NumPages)
 
RETURN_STATUS EFIAPI MemEncryptSevLocateInitialSmramSaveStateMapPages (OUT UINTN *BaseAddress, OUT UINTN *NumberOfPages)
 
UINT64 EFIAPI MemEncryptSevGetEncryptionMask (VOID)
 
BOOLEAN EFIAPI MemEncryptSevEsDebugVirtualizationIsEnabled (VOID)
 
MEM_ENCRYPT_SEV_ADDRESS_RANGE_STATE EFIAPI MemEncryptSevGetAddressRangeState (IN PHYSICAL_ADDRESS Cr3BaseAddress, IN PHYSICAL_ADDRESS BaseAddress, IN UINTN Length)
 
RETURN_STATUS EFIAPI MemEncryptSevClearMmioPageEncMask (IN PHYSICAL_ADDRESS Cr3BaseAddress, IN PHYSICAL_ADDRESS BaseAddress, IN UINTN NumPages)
 
VOID EFIAPI MemEncryptSevSnpPreValidateSystemRam (IN PHYSICAL_ADDRESS BaseAddress, IN UINTN NumPages)
 

Detailed Description

Define Secure Encrypted Virtualization (SEV) base library helper function

Copyright (c) 2017 - 2020, AMD Incorporated. All rights reserved.

SPDX-License-Identifier: BSD-2-Clause-Patent

Definition in file MemEncryptSevLib.h.

Macro Definition Documentation

◆ VMGEXIT_MAXIMUM_VC_COUNT

#define VMGEXIT_MAXIMUM_VC_COUNT   2

Definition at line 24 of file MemEncryptSevLib.h.

Enumeration Type Documentation

◆ MEM_ENCRYPT_SEV_ADDRESS_RANGE_STATE

enum MEM_ENCRYPT_SEV_ADDRESS_RANGE_STATE

Definition at line 43 of file MemEncryptSevLib.h.

Function Documentation

◆ MemEncryptSevClearMmioPageEncMask()

RETURN_STATUS EFIAPI MemEncryptSevClearMmioPageEncMask ( IN PHYSICAL_ADDRESS  Cr3BaseAddress,
IN PHYSICAL_ADDRESS  BaseAddress,
IN UINTN  NumPages 
)

This function clears memory encryption bit for the MMIO region specified by BaseAddress and NumPages.

Parameters
[in]Cr3BaseAddressCr3 Base Address (if zero then use current CR3)
[in]BaseAddressThe physical address that is the start address of a MMIO region.
[in]NumPagesThe number of pages from start memory region.
Return values
RETURN_SUCCESSThe attributes were cleared for the memory region.
RETURN_INVALID_PARAMETERNumber of pages is zero.
RETURN_UNSUPPORTEDClearing the memory encryption attribute is not supported

This function clears memory encryption bit for the mmio region specified by BaseAddress and NumPages.

Parameters
[in]Cr3BaseAddressCr3 Base Address (if zero then use current CR3)
[in]BaseAddressThe physical address that is the start address of a mmio region.
[in]NumPagesThe number of pages from start memory region.
Return values
RETURN_SUCCESSThe attributes were cleared for the memory region.
RETURN_INVALID_PARAMETERNumber of pages is zero.
RETURN_UNSUPPORTEDClearing the memory encryption attribute is not supported

Definition at line 128 of file MemEncryptSevLib.c.

◆ MemEncryptSevClearPageEncMask()

RETURN_STATUS EFIAPI MemEncryptSevClearPageEncMask ( IN PHYSICAL_ADDRESS  Cr3BaseAddress,
IN PHYSICAL_ADDRESS  BaseAddress,
IN UINTN  NumPages 
)

This function clears memory encryption bit for the memory region specified by BaseAddress and NumPages from the current page table context.

Parameters
[in]Cr3BaseAddressCr3 Base Address (if zero then use current CR3)
[in]BaseAddressThe physical address that is the start address of a memory region.
[in]NumPagesThe number of pages from start memory region.
Return values
RETURN_SUCCESSThe attributes were cleared for the memory region.
RETURN_INVALID_PARAMETERNumber of pages is zero.
RETURN_UNSUPPORTEDClearing the memory encryption attribute is not supported

Definition at line 37 of file MemEncryptSevLib.c.

◆ MemEncryptSevEsDebugVirtualizationIsEnabled()

BOOLEAN EFIAPI MemEncryptSevEsDebugVirtualizationIsEnabled ( VOID  )

Returns a boolean to indicate whether DebugVirtualization is enabled.

Return values
TRUEDebugVirtualization is enabled
FALSEDebugVirtualization is not enabled

Definition at line 177 of file DxeMemEncryptSevLibInternal.c.

◆ MemEncryptSevEsIsEnabled()

BOOLEAN EFIAPI MemEncryptSevEsIsEnabled ( VOID  )

Returns a boolean to indicate whether SEV-ES is enabled.

Return values
TRUESEV-ES is enabled
FALSESEV-ES is not enabled

Definition at line 128 of file DxeMemEncryptSevLibInternal.c.

◆ MemEncryptSevGetAddressRangeState()

MEM_ENCRYPT_SEV_ADDRESS_RANGE_STATE EFIAPI MemEncryptSevGetAddressRangeState ( IN PHYSICAL_ADDRESS  Cr3BaseAddress,
IN PHYSICAL_ADDRESS  BaseAddress,
IN UINTN  Length 
)

Returns the encryption state of the specified virtual address range.

Parameters
[in]Cr3BaseAddressCr3 Base Address (if zero then use current CR3)
[in]BaseAddressBase address to check
[in]LengthLength of virtual address range
Return values
MemEncryptSevAddressRangeUnencryptedAddress range is mapped unencrypted
MemEncryptSevAddressRangeEncryptedAddress range is mapped encrypted
MemEncryptSevAddressRangeMixedAddress range is mapped mixed
MemEncryptSevAddressRangeErrorAddress range is not mapped

Definition at line 97 of file MemEncryptSevLib.c.

◆ MemEncryptSevGetEncryptionMask()

UINT64 EFIAPI MemEncryptSevGetEncryptionMask ( VOID  )

Returns the SEV encryption mask.

Returns
The SEV pagetable encryption mask

Returns the SEV encryption mask.

Returns
The SEV pagtable encryption mask

Definition at line 157 of file DxeMemEncryptSevLibInternal.c.

◆ MemEncryptSevIsEnabled()

BOOLEAN EFIAPI MemEncryptSevIsEnabled ( VOID  )

Returns a boolean to indicate whether SEV is enabled

Return values
TRUESEV is enabled
FALSESEV is not enabled

Returns a boolean to indicate whether SEV is enabled.

Return values
TRUESEV is enabled
FALSESEV is not enabled

Definition at line 143 of file DxeMemEncryptSevLibInternal.c.

◆ MemEncryptSevLocateInitialSmramSaveStateMapPages()

RETURN_STATUS EFIAPI MemEncryptSevLocateInitialSmramSaveStateMapPages ( OUT UINTN BaseAddress,
OUT UINTN NumberOfPages 
)

Locate the page range that covers the initial (pre-SMBASE-relocation) SMRAM Save State Map.

Parameters
[out]BaseAddressThe base address of the lowest-address page that covers the initial SMRAM Save State Map.
[out]NumberOfPagesThe number of pages in the page range that covers the initial SMRAM Save State Map.
Return values
RETURN_SUCCESSBaseAddress and NumberOfPages have been set on output.
RETURN_UNSUPPORTEDSMM is unavailable.

Definition at line 36 of file PeiDxeMemEncryptSevLibInternal.c.

◆ MemEncryptSevSetPageEncMask()

RETURN_STATUS EFIAPI MemEncryptSevSetPageEncMask ( IN PHYSICAL_ADDRESS  Cr3BaseAddress,
IN PHYSICAL_ADDRESS  BaseAddress,
IN UINTN  NumPages 
)

This function sets memory encryption bit for the memory region specified by BaseAddress and NumPages from the current page table context.

Parameters
[in]Cr3BaseAddressCr3 Base Address (if zero then use current CR3)
[in]BaseAddressThe physical address that is the start address of a memory region.
[in]NumPagesThe number of pages from start memory region.
Return values
RETURN_SUCCESSThe attributes were set for the memory region.
RETURN_INVALID_PARAMETERNumber of pages is zero.
RETURN_UNSUPPORTEDSetting the memory encryption attribute is not supported

Definition at line 68 of file MemEncryptSevLib.c.

◆ MemEncryptSevSnpIsEnabled()

BOOLEAN EFIAPI MemEncryptSevSnpIsEnabled ( VOID  )

Returns a boolean to indicate whether SEV-SNP is enabled

Return values
TRUESEV-SNP is enabled
FALSESEV-SNP is not enabled

Returns a boolean to indicate whether SEV-SNP is enabled.

Return values
TRUESEV-SNP is enabled
FALSESEV-SNP is not enabled

Definition at line 113 of file DxeMemEncryptSevLibInternal.c.

◆ MemEncryptSevSnpPreValidateSystemRam()

VOID EFIAPI MemEncryptSevSnpPreValidateSystemRam ( IN PHYSICAL_ADDRESS  BaseAddress,
IN UINTN  NumPages 
)

Pre-validate the system RAM when SEV-SNP is enabled in the guest VM.

Parameters
[in]BaseAddressBase address
[in]NumPagesNumber of pages starting from the base address

Definition at line 149 of file MemEncryptSevLib.c.