#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
- 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
STATIC\r
-BOOLEAN\r
+VOID\r
EFIAPI\r
-InternalMemEncryptSevIsEnabled (\r
+InternalMemEncryptSevStatus (\r
VOID\r
)\r
{\r
//\r
Msr.Uint32 = AsmReadMsr32 (MSR_SEV_STATUS);\r
if (Msr.Bits.SevBit) {\r
- return TRUE;\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
- return FALSE;\r
+ mSevStatusChecked = TRUE;\r
}\r
\r
/**\r
- Returns a boolean to indicate whether SEV is enabled\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
VOID\r
)\r
{\r
- if (mSevStatusChecked) {\r
- return mSevStatus;\r
+ if (!mSevStatusChecked) {\r
+ InternalMemEncryptSevStatus ();\r
}\r
\r
- mSevStatus = InternalMemEncryptSevIsEnabled();\r
- mSevStatusChecked = TRUE;\r
-\r
return mSevStatus;\r
}\r
\r