]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/Include/Library/MemEncryptSevLib.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / OvmfPkg / Include / Library / MemEncryptSevLib.h
index adc490e466ec139cf0908cb69462e626e4f960cf..4fa9c0d7008391f0680d1f23885e5aff0d806fb8 100644 (file)
@@ -21,7 +21,7 @@
 //   gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecGhcbBackupSize\r
 // in any FDF file using this PCD.\r
 //\r
-#define VMGEXIT_MAXIMUM_VC_COUNT   2\r
+#define VMGEXIT_MAXIMUM_VC_COUNT  2\r
 \r
 //\r
 // Per-CPU data mapping structure\r
 //   writing random data to that area.\r
 //\r
 typedef struct {\r
-  UINT32  Dr7Cached;\r
-  UINT64  Dr7;\r
+  UINT32    Dr7Cached;\r
+  UINT64    Dr7;\r
 \r
-  UINTN   VcCount;\r
-  VOID    *GhcbBackupPages;\r
+  UINTN     VcCount;\r
+  VOID      *GhcbBackupPages;\r
 } SEV_ES_PER_CPU_DATA;\r
 \r
 //\r
@@ -47,6 +47,18 @@ typedef enum {
   MemEncryptSevAddressRangeError,\r
 } MEM_ENCRYPT_SEV_ADDRESS_RANGE_STATE;\r
 \r
+/**\r
+  Returns a boolean to indicate whether SEV-SNP is enabled\r
+\r
+  @retval TRUE           SEV-SNP is enabled\r
+  @retval FALSE          SEV-SNP is not enabled\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+MemEncryptSevSnpIsEnabled (\r
+  VOID\r
+  );\r
+\r
 /**\r
   Returns a boolean to indicate whether SEV-ES is enabled.\r
 \r
@@ -91,9 +103,9 @@ MemEncryptSevIsEnabled (
 RETURN_STATUS\r
 EFIAPI\r
 MemEncryptSevClearPageEncMask (\r
-  IN PHYSICAL_ADDRESS         Cr3BaseAddress,\r
-  IN PHYSICAL_ADDRESS         BaseAddress,\r
-  IN UINTN                    NumPages\r
+  IN PHYSICAL_ADDRESS  Cr3BaseAddress,\r
+  IN PHYSICAL_ADDRESS  BaseAddress,\r
+  IN UINTN             NumPages\r
   );\r
 \r
 /**\r
@@ -116,12 +128,11 @@ MemEncryptSevClearPageEncMask (
 RETURN_STATUS\r
 EFIAPI\r
 MemEncryptSevSetPageEncMask (\r
-  IN PHYSICAL_ADDRESS         Cr3BaseAddress,\r
-  IN PHYSICAL_ADDRESS         BaseAddress,\r
-  IN UINTN                    NumPages\r
+  IN PHYSICAL_ADDRESS  Cr3BaseAddress,\r
+  IN PHYSICAL_ADDRESS  BaseAddress,\r
+  IN UINTN             NumPages\r
   );\r
 \r
-\r
 /**\r
   Locate the page range that covers the initial (pre-SMBASE-relocation) SMRAM\r
   Save State Map.\r
@@ -140,8 +151,8 @@ MemEncryptSevSetPageEncMask (
 RETURN_STATUS\r
 EFIAPI\r
 MemEncryptSevLocateInitialSmramSaveStateMapPages (\r
-  OUT UINTN *BaseAddress,\r
-  OUT UINTN *NumberOfPages\r
+  OUT UINTN  *BaseAddress,\r
+  OUT UINTN  *NumberOfPages\r
   );\r
 \r
 /**\r
@@ -173,9 +184,9 @@ MemEncryptSevGetEncryptionMask (
 MEM_ENCRYPT_SEV_ADDRESS_RANGE_STATE\r
 EFIAPI\r
 MemEncryptSevGetAddressRangeState (\r
-  IN PHYSICAL_ADDRESS         Cr3BaseAddress,\r
-  IN PHYSICAL_ADDRESS         BaseAddress,\r
-  IN UINTN                    Length\r
+  IN PHYSICAL_ADDRESS  Cr3BaseAddress,\r
+  IN PHYSICAL_ADDRESS  BaseAddress,\r
+  IN UINTN             Length\r
   );\r
 \r
 /**\r
@@ -198,9 +209,23 @@ MemEncryptSevGetAddressRangeState (
 RETURN_STATUS\r
 EFIAPI\r
 MemEncryptSevClearMmioPageEncMask (\r
-  IN PHYSICAL_ADDRESS         Cr3BaseAddress,\r
-  IN PHYSICAL_ADDRESS         BaseAddress,\r
-  IN UINTN                    NumPages\r
+  IN PHYSICAL_ADDRESS  Cr3BaseAddress,\r
+  IN PHYSICAL_ADDRESS  BaseAddress,\r
+  IN UINTN             NumPages\r
+  );\r
+\r
+/**\r
+  Pre-validate the system RAM when SEV-SNP is enabled in the guest VM.\r
+\r
+  @param[in]  BaseAddress             Base address\r
+  @param[in]  NumPages                Number of pages starting from the base address\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+MemEncryptSevSnpPreValidateSystemRam (\r
+  IN PHYSICAL_ADDRESS  BaseAddress,\r
+  IN UINTN             NumPages\r
   );\r
 \r
 #endif // _MEM_ENCRYPT_SEV_LIB_H_\r