]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/Library/BaseMemEncryptSevLib/PeiMemEncryptSevLibInternal.c
OvmfPkg/MemEncryptSevLib: add MemEncryptSevSnpEnabled()
[mirror_edk2.git] / OvmfPkg / Library / BaseMemEncryptSevLib / PeiMemEncryptSevLibInternal.c
index c4aa74a0a2dd119cf32a1963e83b61c6876d8c52..d68ff08c3ea673a42bb425673d122c9993499f33 100644 (file)
@@ -19,6 +19,7 @@
 \r
 STATIC BOOLEAN  mSevStatus        = FALSE;\r
 STATIC BOOLEAN  mSevEsStatus      = FALSE;\r
+STATIC BOOLEAN  mSevSnpStatus     = FALSE;\r
 STATIC BOOLEAN  mSevStatusChecked = FALSE;\r
 \r
 STATIC UINT64   mSevEncryptionMask      = 0;\r
@@ -82,11 +83,37 @@ InternalMemEncryptSevStatus (
     if (Msr.Bits.SevEsBit) {\r
       mSevEsStatus = TRUE;\r
     }\r
+\r
+    //\r
+    // Check MSR_0xC0010131 Bit 2 (Sev-Snp Enabled)\r
+    //\r
+    if (Msr.Bits.SevSnpBit) {\r
+      mSevSnpStatus = TRUE;\r
+    }\r
   }\r
 \r
   mSevStatusChecked = TRUE;\r
 }\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
+  if (!mSevStatusChecked) {\r
+    InternalMemEncryptSevStatus ();\r
+  }\r
+\r
+  return mSevSnpStatus;\r
+}\r
+\r
 /**\r
   Returns a boolean to indicate whether SEV-ES is enabled.\r
 \r