Hi, Michael & Liming & Zhiguang I am doing the TDVF upstreaming and this commit is in MdeModulePkg. You're the maintainer/reviewer of MdeModulePkg. Your comments to this patch is great helpful.
The complete code is at: https://github.com/mxu9/edk2/tree/tdvf_wave2.v6 Thanks Min > 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.kin...@intel.com> > Cc: Liming Gao <gaolim...@byosoft.com.cn> > Cc: Zhiguang Liu <zhiguang....@intel.com> > Cc: Gerd Hoffmann <kra...@redhat.com> > Cc: Jiewen Yao <jiewen....@intel.com> > Acked-by: Gerd Hoffmann <kra...@redhat.com> > Signed-off-by: Min Xu <min.m...@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/documen > ts > + /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 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#86872): https://edk2.groups.io/g/devel/message/86872 Mute This Topic: https://groups.io/mt/89252019/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-