]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdePkg: Update Cpuid.h for Tdx
authorMin Xu <min.m.xu@intel.com>
Wed, 16 Mar 2022 02:56:25 +0000 (10:56 +0800)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Sat, 2 Apr 2022 08:15:12 +0000 (08:15 +0000)
RFC: https://bugzilla.tianocore.org/show_bug.cgi?id=3429

Guest software can be designed to run either as a TD, as a legacy virtual
machine, or directly on the CPU, based on enumeration of its run-time
environment. [TDX-Module] Chap 10.2 defines the flow and the new CPUID
leaf 0x21.

[TDX-Module] Architecture Specification: Intel(R) Trust Domain Extensions
Module, Chap 10.2, 344425-003US, August 2021
https://www.intel.com/content/dam/develop/external/us/en/documents/
tdx-module-1.0-public-spec-v0.931.pdf

Cc: Ray Ni <ray.ni@intel.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Zhiguang Liu <zhiguang.liu@intel.com>
Cc: Brijesh Singh <brijesh.singh@amd.com>
Cc: Erdem Aktas <erdemaktas@google.com>
Cc: James Bottomley <jejb@linux.ibm.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Tom Lendacky <thomas.lendacky@amd.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Min Xu <min.m.xu@intel.com>
MdePkg/Include/Register/Intel/Cpuid.h

index bd6349d7940d00d1e4ae97177351dfb43ad8c9b4..350bf60252e1f78ee77d003bdf12ef9c65d9871a 100644 (file)
@@ -12,6 +12,8 @@
   @par Specification Reference:\r
   Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 2A,\r
   November 2018, CPUID instruction.\r
+  Architecture Specification: Intel(R) Trust Domain Extensions Module, Chap 10.2\r
+  344425-003US, August 2021\r
 \r
 **/\r
 \r
@@ -321,9 +323,9 @@ typedef union {
     ///\r
     UINT32    RDRAND              : 1;\r
     ///\r
-    /// [Bit 31] Always returns 0.\r
+    /// [Bit 31] A value of 1 indicates that processor is in Para-Virtualized.\r
     ///\r
-    UINT32    NotUsed             : 1;\r
+    UINT32    ParaVirtualized     : 1;\r
   } Bits;\r
   ///\r
   /// All bit fields as a 32-bit value\r
@@ -3689,6 +3691,35 @@ typedef union {
 /// @}\r
 ///\r
 \r
+/**\r
+  CPUID Guest TD Run Time Environment Enumeration Leaf\r
+\r
+  @note\r
+  Guest software can be designed to run either as a TD, as a legacy virtual machine,\r
+  or directly on the CPU, based on enumeration of its run-time environment.\r
+  CPUID leaf 21H emulation is done by the Intel TDX module. Sub-leaf 0 returns the values\r
+  shown below. Other sub-leaves return 0 in EAX/EBX/ECX/EDX.\r
+    EAX: 0x00000000\r
+    EBX: 0x65746E49 "Inte"\r
+    ECX: 0x20202020 "    "\r
+    EDX: 0x5844546C "lTDX"\r
+\r
+  @param   EAX  CPUID_GUESTTD_RUNTIME_ENVIRONMENT                        (0x21)\r
+  @param   ECX  Level number\r
+\r
+**/\r
+#define CPUID_GUESTTD_RUNTIME_ENVIRONMENT  0x21\r
+\r
+///\r
+/// @{ CPUID Guest TD signature values returned by Intel processors\r
+///\r
+#define CPUID_GUESTTD_SIGNATURE_GENUINE_INTEL_EBX  SIGNATURE_32 ('I', 'n', 't', 'e')\r
+#define CPUID_GUESTTD_SIGNATURE_GENUINE_INTEL_ECX  SIGNATURE_32 (' ', ' ', ' ', ' ')\r
+#define CPUID_GUESTTD_SIGNATURE_GENUINE_INTEL_EDX  SIGNATURE_32 ('l', 'T', 'D', 'X')\r
+///\r
+/// @}\r
+///\r
+\r
 /**\r
   CPUID Extended Function\r
 \r