]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/Library/BaseMemEncryptSevLib/Ia32/MemEncryptSevLib.c
OvmfPkg: Apply uncrustify changes
[mirror_edk2.git] / OvmfPkg / Library / BaseMemEncryptSevLib / Ia32 / MemEncryptSevLib.c
index d1130df2d0e755ccefa74a0468ec3e5140dac907..9bd66301fc08d9b3b43f7ead82c6b9971fa0eb87 100644 (file)
@@ -2,51 +2,42 @@
 \r
   Secure Encrypted Virtualization (SEV) library helper function\r
 \r
-  Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>\r
+  Copyright (c) 2017 - 2020, AMD Incorporated. All rights reserved.<BR>\r
 \r
-  This program and the accompanying materials are licensed and made available\r
-  under the terms and conditions of the BSD License which accompanies this\r
-  distribution.  The 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
 #include <Library/BaseLib.h>\r
 #include <Library/DebugLib.h>\r
-#include <Register/Cpuid.h>\r
+#include <Library/MemEncryptSevLib.h>\r
 #include <Register/Amd/Cpuid.h>\r
 #include <Register/Amd/Msr.h>\r
-#include <Library/MemEncryptSevLib.h>\r
+#include <Register/Cpuid.h>\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]  Cr3BaseAddress        Cr3 Base Address (if zero then use current\r
-                                    CR3)\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
+\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                  Flush\r
+  IN PHYSICAL_ADDRESS  Cr3BaseAddress,\r
+  IN PHYSICAL_ADDRESS  BaseAddress,\r
+  IN UINTN             NumPages\r
   )\r
 {\r
   //\r
@@ -57,30 +48,87 @@ MemEncryptSevClearPageEncMask (
 \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]  Cr3BaseAddress        Cr3 Base Address (if zero then use current\r
-                                    CR3)\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
+\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                  Flush\r
+  IN PHYSICAL_ADDRESS  Cr3BaseAddress,\r
+  IN PHYSICAL_ADDRESS  BaseAddress,\r
+  IN UINTN             NumPages\r
+  )\r
+{\r
+  //\r
+  // Memory encryption bit is not accessible in 32-bit mode\r
+  //\r
+  return RETURN_UNSUPPORTED;\r
+}\r
+\r
+/**\r
+  Returns the encryption state of the specified virtual address range.\r
+\r
+  @param[in]  Cr3BaseAddress          Cr3 Base Address (if zero then use\r
+                                      current CR3)\r
+  @param[in]  BaseAddress             Base address to check\r
+  @param[in]  Length                  Length of virtual address range\r
+\r
+  @retval MemEncryptSevAddressRangeUnencrypted  Address range is mapped\r
+                                                unencrypted\r
+  @retval MemEncryptSevAddressRangeEncrypted    Address range is mapped\r
+                                                encrypted\r
+  @retval MemEncryptSevAddressRangeMixed        Address range is mapped mixed\r
+  @retval MemEncryptSevAddressRangeError        Address range is not mapped\r
+**/\r
+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
+  )\r
+{\r
+  //\r
+  // Memory is always encrypted in 32-bit mode\r
+  //\r
+  return MemEncryptSevAddressRangeEncrypted;\r
+}\r
+\r
+/**\r
+  This function clears memory encryption bit for the MMIO region specified by\r
+  BaseAddress and NumPages.\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 MMIO region.\r
+  @param[in]  NumPages                The number of pages from start memory\r
+                                      region.\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
+MemEncryptSevClearMmioPageEncMask (\r
+  IN PHYSICAL_ADDRESS  Cr3BaseAddress,\r
+  IN PHYSICAL_ADDRESS  BaseAddress,\r
+  IN UINTN             NumPages\r
   )\r
 {\r
   //\r