]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/Library/BaseMemEncryptSevLib/MemEncryptSevLibInternal.c
OvmfPkg/MemEncryptSevLib: Add an interface to retrieve the encryption mask
[mirror_edk2.git] / OvmfPkg / Library / BaseMemEncryptSevLib / MemEncryptSevLibInternal.c
index 02b8eb225d8125fe922fb4a321a81f1ff4996da5..b4a9f464e2688e4f59fc02780076e589ff6ed89f 100644 (file)
@@ -2,7 +2,7 @@
 \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
   SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 #include <Library/DebugLib.h>\r
 #include <Library/MemEncryptSevLib.h>\r
 #include <Library/PcdLib.h>\r
-#include <Register/Amd/Cpuid.h>\r
-#include <Register/Amd/Msr.h>\r
-#include <Register/Cpuid.h>\r
 #include <Register/QemuSmramSaveStateMap.h>\r
 #include <Register/SmramSaveStateMap.h>\r
 #include <Uefi/UefiBaseType.h>\r
 \r
-STATIC BOOLEAN mSevStatus = FALSE;\r
-STATIC BOOLEAN mSevEsStatus = FALSE;\r
-STATIC BOOLEAN mSevStatusChecked = FALSE;\r
-\r
-/**\r
-  Reads and sets the status of SEV features.\r
-\r
-  **/\r
-STATIC\r
-VOID\r
-EFIAPI\r
-InternalMemEncryptSevStatus (\r
-  VOID\r
-  )\r
-{\r
-  UINT32                            RegEax;\r
-  MSR_SEV_STATUS_REGISTER           Msr;\r
-  CPUID_MEMORY_ENCRYPTION_INFO_EAX  Eax;\r
-\r
-  //\r
-  // Check if memory encryption leaf exist\r
-  //\r
-  AsmCpuid (CPUID_EXTENDED_FUNCTION, &RegEax, NULL, NULL, NULL);\r
-  if (RegEax >= CPUID_MEMORY_ENCRYPTION_INFO) {\r
-    //\r
-    // CPUID Fn8000_001F[EAX] Bit 1 (Sev supported)\r
-    //\r
-    AsmCpuid (CPUID_MEMORY_ENCRYPTION_INFO, &Eax.Uint32, NULL, NULL, NULL);\r
-\r
-    if (Eax.Bits.SevBit) {\r
-      //\r
-      // Check MSR_0xC0010131 Bit 0 (Sev Enabled)\r
-      //\r
-      Msr.Uint32 = AsmReadMsr32 (MSR_SEV_STATUS);\r
-      if (Msr.Bits.SevBit) {\r
-        mSevStatus = TRUE;\r
-      }\r
-\r
-      //\r
-      // Check MSR_0xC0010131 Bit 1 (Sev-Es Enabled)\r
-      //\r
-      if (Msr.Bits.SevEsBit) {\r
-        mSevEsStatus = TRUE;\r
-      }\r
-    }\r
-  }\r
-\r
-  mSevStatusChecked = TRUE;\r
-}\r
-\r
-/**\r
-  Returns a boolean to indicate whether SEV-ES is enabled.\r
-\r
-  @retval TRUE           SEV-ES is enabled\r
-  @retval FALSE          SEV-ES is not enabled\r
-**/\r
-BOOLEAN\r
-EFIAPI\r
-MemEncryptSevEsIsEnabled (\r
-  VOID\r
-  )\r
-{\r
-  if (!mSevStatusChecked) {\r
-    InternalMemEncryptSevStatus ();\r
-  }\r
-\r
-  return mSevEsStatus;\r
-}\r
-\r
-/**\r
-  Returns a boolean to indicate whether SEV is enabled.\r
-\r
-  @retval TRUE           SEV is enabled\r
-  @retval FALSE          SEV is not enabled\r
-**/\r
-BOOLEAN\r
-EFIAPI\r
-MemEncryptSevIsEnabled (\r
-  VOID\r
-  )\r
-{\r
-  if (!mSevStatusChecked) {\r
-    InternalMemEncryptSevStatus ();\r
-  }\r
-\r
-  return mSevStatus;\r
-}\r
-\r
-\r
 /**\r
   Locate the page range that covers the initial (pre-SMBASE-relocation) SMRAM\r
   Save State Map.\r