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 V9 01/47] MdePkg: Add Tdx.h
Date: Fri, 18 Mar 2022 08:45:19 +0800	[thread overview]
Message-ID: <f3b6264083515e916c08c217377c9e275370d14f.1647523953.git.min.m.xu@intel.com> (raw)
In-Reply-To: <cover.1647523953.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-18  0:46 UTC|newest]

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

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=f3b6264083515e916c08c217377c9e275370d14f.1647523953.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