]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/Library/BaseMemEncryptSevLib/DxeMemEncryptSevLibInternal.c
OvmfPkg/MemEncryptSevLib: add MemEncryptSevSnpEnabled()
[mirror_edk2.git] / OvmfPkg / Library / BaseMemEncryptSevLib / DxeMemEncryptSevLibInternal.c
index 4fee7b2ab34556b2f849d4f171d7a465f21617c2..15fcd5529587ca9f6a31afac2bde3c1d04541fef 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