]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdePkg: Add the MSR definition for the GHCB register
authorTom Lendacky <thomas.lendacky@amd.com>
Wed, 12 Aug 2020 20:21:35 +0000 (15:21 -0500)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Sun, 16 Aug 2020 16:45:42 +0000 (16:45 +0000)
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2198

For SEV-ES, the GHCB page address is stored in the GHCB MSR register
(0xc0010130). Define the register and the format used for register
during GHCB protocol negotiation.

Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
Regression-tested-by: Laszlo Ersek <lersek@redhat.com>
MdePkg/Include/Register/Amd/Fam17Msr.h

index 6ef45a9b21d38aae11dcd86d3153d8b9d73f6fb5..e4db09c5184c32d1f633749b32abff3493cbd0a8 100644 (file)
 #ifndef __FAM17_MSR_H__\r
 #define __FAM17_MSR_H__\r
 \r
+/**\r
+  Secure Encrypted Virtualization - Encrypted State (SEV-ES) GHCB register\r
+\r
+**/\r
+#define MSR_SEV_ES_GHCB                    0xc0010130\r
+\r
+/**\r
+  MSR information returned for #MSR_SEV_ES_GHCB\r
+**/\r
+typedef union {\r
+  struct {\r
+    UINT32  Function:12;\r
+    UINT32  Reserved1:20;\r
+    UINT32  Reserved2:32;\r
+  } GhcbInfo;\r
+\r
+  struct {\r
+    UINT8   Reserved[3];\r
+    UINT8   SevEncryptionBitPos;\r
+    UINT16  SevEsProtocolMin;\r
+    UINT16  SevEsProtocolMax;\r
+  } GhcbProtocol;\r
+\r
+  struct {\r
+    UINT32  Function:12;\r
+    UINT32  ReasonCodeSet:4;\r
+    UINT32  ReasonCode:8;\r
+    UINT32  Reserved1:8;\r
+    UINT32  Reserved2:32;\r
+  } GhcbTerminate;\r
+\r
+  VOID    *Ghcb;\r
+\r
+  UINT64  GhcbPhysicalAddress;\r
+} MSR_SEV_ES_GHCB_REGISTER;\r
+\r
+#define GHCB_INFO_SEV_INFO                 1\r
+#define GHCB_INFO_SEV_INFO_GET             2\r
+#define GHCB_INFO_CPUID_REQUEST            4\r
+#define GHCB_INFO_CPUID_RESPONSE           5\r
+#define GHCB_INFO_TERMINATE_REQUEST        256\r
+\r
+#define GHCB_TERMINATE_GHCB                0\r
+#define GHCB_TERMINATE_GHCB_GENERAL        0\r
+#define GHCB_TERMINATE_GHCB_PROTOCOL       1\r
+\r
 /**\r
   Secure Encrypted Virtualization (SEV) status register\r
 \r