]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/Include/Library/MemEncryptSevLib.h
OvmfPkg/MemEncryptSevLib: find pages of initial SMRAM save state map
[mirror_edk2.git] / OvmfPkg / Include / Library / MemEncryptSevLib.h
index 88b272ebedefaeb079ee829ff8846c5e78f66f75..1e2ec8641d465851775dbff33883339b30ed57c2 100644 (file)
@@ -32,54 +32,81 @@ MemEncryptSevIsEnabled (
   );\r
 \r
 /**\r
-  This function clears memory encryption bit for the memory region specified\r
-  by BaseAddress and Number of pages from the current page table context.\r
-\r
-  @param[in]  BaseAddress           The physical address that is the start\r
-                                    address of a memory region.\r
-  @param[in]  NumberOfPages         The number of pages from start memory\r
-                                    region.\r
-  @param[in]  Flush                 Flush the caches before clearing the bit\r
-                                    (mostly TRUE except MMIO addresses)\r
-\r
-  @retval RETURN_SUCCESS            The attributes were cleared for the memory\r
-                                    region.\r
-  @retval RETURN_INVALID_PARAMETER  Number of pages is zero.\r
-  @retval RETURN_UNSUPPORTED        Clearing memory encryption attribute is not\r
-                                    supported\r
-  **/\r
+  This function clears memory encryption bit for the memory region specified by\r
+  BaseAddress and NumPages from the current page table context.\r
+\r
+  @param[in]  Cr3BaseAddress          Cr3 Base Address (if zero then use\r
+                                      current CR3)\r
+  @param[in]  BaseAddress             The physical address that is the start\r
+                                      address of a memory region.\r
+  @param[in]  NumPages                The number of pages from start memory\r
+                                      region.\r
+  @param[in]  Flush                   Flush the caches before clearing the bit\r
+                                      (mostly TRUE except MMIO addresses)\r
+\r
+  @retval RETURN_SUCCESS              The attributes were cleared for the\r
+                                      memory region.\r
+  @retval RETURN_INVALID_PARAMETER    Number of pages is zero.\r
+  @retval RETURN_UNSUPPORTED          Clearing the memory encryption attribute\r
+                                      is not supported\r
+**/\r
 RETURN_STATUS\r
 EFIAPI\r
 MemEncryptSevClearPageEncMask (\r
   IN PHYSICAL_ADDRESS         Cr3BaseAddress,\r
   IN PHYSICAL_ADDRESS         BaseAddress,\r
-  IN UINTN                    NumberOfPages,\r
-  IN BOOLEAN                  CacheFlush\r
+  IN UINTN                    NumPages,\r
+  IN BOOLEAN                  Flush\r
   );\r
 \r
 /**\r
   This function sets memory encryption bit for the memory region specified by\r
-  BaseAddress and Number of pages from the current page table context.\r
-\r
-  @param[in]  BaseAddress           The physical address that is the start\r
-                                    address of a memory region.\r
-  @param[in]  NumberOfPages         The number of pages from start memory\r
-                                    region.\r
-  @param[in]  Flush                 Flush the caches before clearing the bit\r
-                                    (mostly TRUE except MMIO addresses)\r
-\r
-  @retval RETURN_SUCCESS            The attributes were set for the memory\r
-                                    region.\r
-  @retval RETURN_INVALID_PARAMETER  Number of pages is zero.\r
-  @retval RETURN_UNSUPPORTED        Clearing memory encryption attribute is not\r
-                                    supported\r
-  **/\r
+  BaseAddress and NumPages from the current page table context.\r
+\r
+  @param[in]  Cr3BaseAddress          Cr3 Base Address (if zero then use\r
+                                      current CR3)\r
+  @param[in]  BaseAddress             The physical address that is the start\r
+                                      address of a memory region.\r
+  @param[in]  NumPages                The number of pages from start memory\r
+                                      region.\r
+  @param[in]  Flush                   Flush the caches before setting the bit\r
+                                      (mostly TRUE except MMIO addresses)\r
+\r
+  @retval RETURN_SUCCESS              The attributes were set for the memory\r
+                                      region.\r
+  @retval RETURN_INVALID_PARAMETER    Number of pages is zero.\r
+  @retval RETURN_UNSUPPORTED          Setting the memory encryption attribute\r
+                                      is not supported\r
+**/\r
 RETURN_STATUS\r
 EFIAPI\r
 MemEncryptSevSetPageEncMask (\r
   IN PHYSICAL_ADDRESS         Cr3BaseAddress,\r
   IN PHYSICAL_ADDRESS         BaseAddress,\r
-  IN UINTN                    NumberOfPages,\r
-  IN BOOLEAN                  CacheFlush\r
+  IN UINTN                    NumPages,\r
+  IN BOOLEAN                  Flush\r
+  );\r
+\r
+\r
+/**\r
+  Locate the page range that covers the initial (pre-SMBASE-relocation) SMRAM\r
+  Save State Map.\r
+\r
+  @param[out] BaseAddress     The base address of the lowest-address page that\r
+                              covers the initial SMRAM Save State Map.\r
+\r
+  @param[out] NumberOfPages   The number of pages in the page range that covers\r
+                              the initial SMRAM Save State Map.\r
+\r
+  @retval RETURN_SUCCESS      BaseAddress and NumberOfPages have been set on\r
+                              output.\r
+\r
+  @retval RETURN_UNSUPPORTED  SMM is unavailable.\r
+**/\r
+RETURN_STATUS\r
+EFIAPI\r
+MemEncryptSevLocateInitialSmramSaveStateMapPages (\r
+  OUT UINTN *BaseAddress,\r
+  OUT UINTN *NumberOfPages\r
   );\r
 #endif // _MEM_ENCRYPT_SEV_LIB_H_\r