public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Min Xu" <min.m.xu@intel.com>
To: devel@edk2.groups.io
Cc: Min Xu <min.m.xu@intel.com>,
	Michael D Kinney <michael.d.kinney@intel.com>,
	Liming Gao <gaoliming@byosoft.com.cn>,
	Zhiguang Liu <zhiguang.liu@intel.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Jiewen Yao <jiewen.yao@intel.com>
Subject: [PATCH V12 01/47] MdePkg: Add Tdx.h
Date: Wed, 30 Mar 2022 07:45:54 +0800	[thread overview]
Message-ID: <735e63d162adc1556b9db50cba700c07a4f26fc5.1648555175.git.min.m.xu@intel.com> (raw)
In-Reply-To: <cover.1648555175.git.min.m.xu@intel.com>

RFC: https://bugzilla.tianocore.org/show_bug.cgi?id=3429

Tdx.h includes the Intel Trust Domain Extension definitions.

Detailed information can be found in below document:
https://software.intel.com/content/dam/develop/external/us/en/
documents/tdx-module-1eas-v0.85.039.pdf

Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Zhiguang Liu <zhiguang.liu@intel.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
Signed-off-by: Min Xu <min.m.xu@intel.com>
---
 MdePkg/Include/IndustryStandard/Tdx.h | 203 ++++++++++++++++++++++++++
 1 file changed, 203 insertions(+)
 create mode 100644 MdePkg/Include/IndustryStandard/Tdx.h

diff --git a/MdePkg/Include/IndustryStandard/Tdx.h b/MdePkg/Include/IndustryStandard/Tdx.h
new file mode 100644
index 000000000000..81df1361842b
--- /dev/null
+++ b/MdePkg/Include/IndustryStandard/Tdx.h
@@ -0,0 +1,203 @@
+/** @file
+  Intel Trust Domain Extension definitions
+  Detailed information is in below document:
+  https://software.intel.com/content/dam/develop/external/us/en/documents
+  /tdx-module-1eas-v0.85.039.pdf
+
+  Copyright (c) 2020 - 2021, Intel Corporation. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#ifndef MDE_PKG_TDX_H_
+#define MDE_PKG_TDX_H_
+
+#define EXIT_REASON_EXTERNAL_INTERRUPT  1
+#define EXIT_REASON_TRIPLE_FAULT        2
+
+#define EXIT_REASON_PENDING_INTERRUPT    7
+#define EXIT_REASON_NMI_WINDOW           8
+#define EXIT_REASON_TASK_SWITCH          9
+#define EXIT_REASON_CPUID                10
+#define EXIT_REASON_HLT                  12
+#define EXIT_REASON_INVD                 13
+#define EXIT_REASON_INVLPG               14
+#define EXIT_REASON_RDPMC                15
+#define EXIT_REASON_RDTSC                16
+#define EXIT_REASON_VMCALL               18
+#define EXIT_REASON_VMCLEAR              19
+#define EXIT_REASON_VMLAUNCH             20
+#define EXIT_REASON_VMPTRLD              21
+#define EXIT_REASON_VMPTRST              22
+#define EXIT_REASON_VMREAD               23
+#define EXIT_REASON_VMRESUME             24
+#define EXIT_REASON_VMWRITE              25
+#define EXIT_REASON_VMOFF                26
+#define EXIT_REASON_VMON                 27
+#define EXIT_REASON_CR_ACCESS            28
+#define EXIT_REASON_DR_ACCESS            29
+#define EXIT_REASON_IO_INSTRUCTION       30
+#define EXIT_REASON_MSR_READ             31
+#define EXIT_REASON_MSR_WRITE            32
+#define EXIT_REASON_INVALID_STATE        33
+#define EXIT_REASON_MSR_LOAD_FAIL        34
+#define EXIT_REASON_MWAIT_INSTRUCTION    36
+#define EXIT_REASON_MONITOR_TRAP_FLAG    37
+#define EXIT_REASON_MONITOR_INSTRUCTION  39
+#define EXIT_REASON_PAUSE_INSTRUCTION    40
+#define EXIT_REASON_MCE_DURING_VMENTRY   41
+#define EXIT_REASON_TPR_BELOW_THRESHOLD  43
+#define EXIT_REASON_APIC_ACCESS          44
+#define EXIT_REASON_EOI_INDUCED          45
+#define EXIT_REASON_GDTR_IDTR            46
+#define EXIT_REASON_LDTR_TR              47
+#define EXIT_REASON_EPT_VIOLATION        48
+#define EXIT_REASON_EPT_MISCONFIG        49
+#define EXIT_REASON_INVEPT               50
+#define EXIT_REASON_RDTSCP               51
+#define EXIT_REASON_PREEMPTION_TIMER     52
+#define EXIT_REASON_INVVPID              53
+#define EXIT_REASON_WBINVD               54
+#define EXIT_REASON_XSETBV               55
+#define EXIT_REASON_APIC_WRITE           56
+#define EXIT_REASON_RDRAND               57
+#define EXIT_REASON_INVPCID              58
+#define EXIT_REASON_VMFUNC               59
+#define EXIT_REASON_ENCLS                60
+#define EXIT_REASON_RDSEED               61
+#define EXIT_REASON_PML_FULL             62
+#define EXIT_REASON_XSAVES               63
+#define EXIT_REASON_XRSTORS              64
+
+// TDCALL API Function Completion Status Codes
+#define TDX_EXIT_REASON_SUCCESS                0x0000000000000000
+#define TDX_EXIT_REASON_PAGE_ALREADY_ACCEPTED  0x00000B0A00000000
+#define TDX_EXIT_REASON_PAGE_SIZE_MISMATCH     0xC0000B0B00000000
+#define TDX_EXIT_REASON_OPERAND_INVALID        0xC000010000000000
+#define TDX_EXIT_REASON_OPERAND_BUSY           0x8000020000000000
+
+// TDCALL [TDG.MEM.PAGE.ACCEPT] page size
+#define TDCALL_ACCEPT_PAGE_SIZE_4K  0
+#define TDCALL_ACCEPT_PAGE_SIZE_2M  1
+#define TDCALL_ACCEPT_PAGE_SIZE_1G  2
+
+#define TDCALL_TDVMCALL      0
+#define TDCALL_TDINFO        1
+#define TDCALL_TDEXTENDRTMR  2
+#define TDCALL_TDGETVEINFO   3
+#define TDCALL_TDREPORT      4
+#define TDCALL_TDSETCPUIDVE  5
+#define TDCALL_TDACCEPTPAGE  6
+
+#define TDVMCALL_CPUID    0x0000a
+#define TDVMCALL_HALT     0x0000c
+#define TDVMCALL_IO       0x0001e
+#define TDVMCALL_RDMSR    0x0001f
+#define TDVMCALL_WRMSR    0x00020
+#define TDVMCALL_MMIO     0x00030
+#define TDVMCALL_PCONFIG  0x00041
+
+#define TDVMCALL_GET_TDVMCALL_INFO   0x10000
+#define TDVMCALL_MAPGPA              0x10001
+#define TDVMCALL_GET_QUOTE           0x10002
+#define TDVMCALL_REPORT_FATAL_ERR    0x10003
+#define TDVMCALL_SETUP_EVENT_NOTIFY  0x10004
+
+#pragma pack(1)
+typedef struct {
+  UINT64    Data[6];
+} TDCALL_GENERIC_RETURN_DATA;
+
+typedef struct {
+  UINT64    Gpaw;
+  UINT64    Attributes;
+  UINT32    MaxVcpus;
+  UINT32    NumVcpus;
+  UINT64    Resv[3];
+} TDCALL_INFO_RETURN_DATA;
+
+typedef union {
+  UINT64    Val;
+  struct {
+    UINT32    Size      : 3;
+    UINT32    Direction : 1;
+    UINT32    String    : 1;
+    UINT32    Rep       : 1;
+    UINT32    Encoding  : 1;
+    UINT32    Resv      : 9;
+    UINT32    Port      : 16;
+    UINT32    Resv2;
+  } Io;
+} VMX_EXIT_QUALIFICATION;
+
+typedef struct {
+  UINT32                    ExitReason;
+  UINT32                    Resv;
+  VMX_EXIT_QUALIFICATION    ExitQualification;
+  UINT64                    GuestLA;
+  UINT64                    GuestPA;
+  UINT32                    ExitInstructionLength;
+  UINT32                    ExitInstructionInfo;
+  UINT32                    Resv1;
+} TDCALL_VEINFO_RETURN_DATA;
+
+typedef union {
+  TDCALL_GENERIC_RETURN_DATA    Generic;
+  TDCALL_INFO_RETURN_DATA       TdInfo;
+  TDCALL_VEINFO_RETURN_DATA     VeInfo;
+} TD_RETURN_DATA;
+
+/* data structure used in TDREPORT_STRUCT */
+typedef struct {
+  UINT8    Type;
+  UINT8    Subtype;
+  UINT8    Version;
+  UINT8    Rsvd;
+} TD_REPORT_TYPE;
+
+typedef struct {
+  TD_REPORT_TYPE    ReportType;
+  UINT8             Rsvd1[12];
+  UINT8             CpuSvn[16];
+  UINT8             TeeTcbInfoHash[48];
+  UINT8             TeeInfoHash[48];
+  UINT8             ReportData[64];
+  UINT8             Rsvd2[32];
+  UINT8             Mac[32];
+} REPORTMACSTRUCT;
+
+typedef struct {
+  UINT8    Seam[2];
+  UINT8    Rsvd[14];
+} TEE_TCB_SVN;
+
+typedef struct {
+  UINT8          Valid[8];
+  TEE_TCB_SVN    TeeTcbSvn;
+  UINT8          Mrseam[48];
+  UINT8          Mrsignerseam[48];
+  UINT8          Attributes[8];
+  UINT8          Rsvd[111];
+} TEE_TCB_INFO;
+
+typedef struct {
+  UINT8    Attributes[8];
+  UINT8    Xfam[8];
+  UINT8    Mrtd[48];
+  UINT8    Mrconfigid[48];
+  UINT8    Mrowner[48];
+  UINT8    Mrownerconfig[48];
+  UINT8    Rtmrs[4][48];
+  UINT8    Rsvd[112];
+} TDINFO;
+
+typedef struct {
+  REPORTMACSTRUCT    ReportMacStruct;
+  TEE_TCB_INFO       TeeTcbInfo;
+  UINT8              Rsvd[17];
+  TDINFO             Tdinfo;
+} TDREPORT_STRUCT;
+
+#pragma pack()
+
+#endif
-- 
2.29.2.windows.2


  reply	other threads:[~2022-03-29 23:47 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-29 23:45 [PATCH V12 00/47] Enable Intel TDX in OvmfPkg (Config-A) Min Xu
2022-03-29 23:45 ` Min Xu [this message]
2022-03-29 23:45 ` [PATCH V12 02/47] MdePkg: Update Cpuid.h for Tdx Min Xu
2022-03-29 23:45 ` [PATCH V12 03/47] MdePkg: Introduce basic Tdx functions in BaseLib Min Xu
2022-03-29 23:45 ` [PATCH V12 04/47] MdePkg: Add TdxLib to wrap Tdx operations Min Xu
2022-03-29 23:45 ` [PATCH V12 05/47] UefiCpuPkg: Extend VmgExitLibNull to handle #VE exception Min Xu
2022-03-29 23:45 ` [PATCH V12 06/47] OvmfPkg: Extend VmgExitLib " Min Xu
2022-03-29 23:46 ` [PATCH V12 07/47] UefiCpuPkg/CpuExceptionHandler: Add base support for the " Min Xu
2022-03-29 23:46 ` [PATCH V12 08/47] MdePkg: Add helper functions for Tdx guest in BaseIoLibIntrinsic Min Xu
2022-03-29 23:46 ` [PATCH V12 09/47] MdePkg: Support mmio " Min Xu
2022-03-29 23:46 ` [PATCH V12 10/47] MdePkg: Support IoFifo " Min Xu
2022-03-29 23:46 ` [PATCH V12 11/47] MdePkg: Support IoRead/IoWrite " Min Xu
2022-03-29 23:46 ` [PATCH V12 12/47] UefiCpuPkg: Support TDX in BaseXApicX2ApicLib Min Xu
2022-03-29 23:46 ` [PATCH V12 13/47] MdePkg: Add macro to check SEV / TDX guest Min Xu
2022-03-29 23:46 ` [PATCH V12 14/47] UefiCpuPkg: Enable Tdx support in MpInitLib Min Xu
2022-03-30  7:53   ` [edk2-devel] " Ni, Ray
2022-04-28 13:15   ` Lendacky, Thomas
2022-04-29  2:12     ` Min Xu
2022-03-29 23:46 ` [PATCH V12 15/47] OvmfPkg: Add IntelTdx.h in OvmfPkg/Include/IndustryStandard Min Xu
2022-03-29 23:46 ` [PATCH V12 16/47] OvmfPkg: Add TdxMailboxLib Min Xu
2022-03-29 23:46 ` [PATCH V12 17/47] OvmfPkg: Create initial version of PlatformInitLib Min Xu
2022-03-29 23:46 ` [PATCH V12 18/47] OvmfPkg/PlatformInitLib: Add hob functions Min Xu
2022-03-29 23:46 ` [PATCH V12 19/47] OvmfPkg/PlatformPei: Move global variables to PlatformInfoHob Min Xu
2022-03-29 23:46 ` [PATCH V12 20/47] OvmfPkg/PlatformPei: Refactor MiscInitialization Min Xu
2022-03-29 23:46 ` [PATCH V12 21/47] OvmfPkg/PlatformPei: Refactor MiscInitialization for CloudHV Min Xu
2022-03-29 23:46 ` [PATCH V12 22/47] OvmfPkg/PlatformPei: Refactor AddressWidthInitialization Min Xu
2022-03-29 23:46 ` [PATCH V12 23/47] OvmfPkg/PlatformPei: Refactor MaxCpuCountInitialization Min Xu
2022-03-29 23:46 ` [PATCH V12 24/47] OvmfPkg/PlatformPei: Refactor QemuUc32BaseInitialization Min Xu
2022-03-29 23:46 ` [PATCH V12 25/47] OvmfPkg/PlatformPei: Refactor InitializeRamRegions Min Xu
2022-03-29 23:46 ` [PATCH V12 26/47] OvmfPkg/PlatformPei: Refactor MemMapInitialization Min Xu
2022-03-29 23:46 ` [PATCH V12 27/47] OvmfPkg/PlatformPei: Refactor NoexecDxeInitialization Min Xu
2022-03-29 23:46 ` [PATCH V12 28/47] OvmfPkg/PlatformPei: Refactor MiscInitialization Min Xu
2022-03-29 23:46 ` [PATCH V12 29/47] OvmfPkg/PlatformInitLib: Create MemDetect.c Min Xu
2022-03-29 23:46 ` [PATCH V12 30/47] OvmfPkg/PlatformInitLib: Move functions to Platform.c Min Xu
2022-03-29 23:46 ` [PATCH V12 31/47] OvmfPkg: Update PlatformInitLib to process Tdx hoblist Min Xu
2022-03-29 23:46 ` [PATCH V12 32/47] OvmfPkg/Sec: Declare local variable as volatile in SecCoreStartupWithStack Min Xu
2022-03-29 23:46 ` [PATCH V12 33/47] OvmfPkg: Update Sec to support Tdx Min Xu
2022-04-15 20:05   ` Lendacky, Thomas
2022-04-16  0:13     ` Min Xu
2022-04-16 14:52       ` Lendacky, Thomas
2022-04-17  3:03         ` Min Xu
2022-03-29 23:46 ` [PATCH V12 34/47] OvmfPkg: Check Tdx in QemuFwCfgPei to avoid DMA operation Min Xu
2022-03-29 23:46 ` [PATCH V12 35/47] MdeModulePkg: Skip setting IA32_ERER.NXE if it has already been set Min Xu
2022-03-29 23:46 ` [PATCH V12 36/47] MdeModulePkg: Add PcdTdxSharedBitMask Min Xu
2022-03-29 23:46 ` [PATCH V12 37/47] UefiCpuPkg: Update AddressEncMask in CpuPageTable Min Xu
2022-03-29 23:46 ` [PATCH V12 38/47] OvmfPkg: Update PlatformInitLib for Tdx guest Min Xu
2022-03-29 23:46 ` [PATCH V12 39/47] OvmfPkg: Update PlatformPei to support " Min Xu
2022-03-31  2:47 ` [PATCH V12 00/47] Enable Intel TDX in OvmfPkg (Config-A) Yao, Jiewen
     [not found] ` <4c3aa6915fe7aac06940bea0f9bc5fdd3c539121.1648555175.git.min.m.xu@intel.com>
2022-04-15 20:51   ` [PATCH V12 42/47] OvmfPkg: Add TdxDxe driver Lendacky, Thomas
2022-04-16  1:57     ` [edk2-devel] " Min Xu
2022-04-16 15:08       ` Lendacky, Thomas
2022-04-17  0:56         ` Min Xu
2022-04-18 13:36           ` Lendacky, Thomas

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=735e63d162adc1556b9db50cba700c07a4f26fc5.1648555175.git.min.m.xu@intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox