Hi, Liming In https://software.intel.com/content/www/us/en/develop/articles/ intel-trust-domain-extensions.html, there are documents: [1] Intel TDX(R) Module 1.0 EAS [2] Intel(R) TDX Guest-Hypervisor Communication Interface
Defition of MdePkg/Include/IndustryStandard/Tdx.h comes from [1][2] Defition of MdePkg/Include/Protocol/Tdx.h Comes from [2] Chap 4.3 > -----Original Message----- > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of > gaoliming > Sent: Tuesday, March 9, 2021 9:39 AM > To: devel@edk2.groups.io; Xu, Min M <min.m...@intel.com> > Cc: Reiland, Doug <doug.reil...@intel.com>; Liu, Zhiguang > <zhiguang....@intel.com>; Yao, Jiewen <jiewen....@intel.com> > Subject: 回复: [edk2-devel] [PATCH 1/3] MdePkg: Add Tdx support lib > > Min: > > Where is the definition in MdePkg/Include/IndustryStandard/Tdx.h from? > Is it from > https://software.intel.com/content/www/us/en/develop/articles/intel- > trust-do > main-extensions.html? > > Where is the definition in MdePkg/Include/Protocol/Tdx.h from? > > Thanks > Liming > > -----邮件原件----- > > 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 > > min.m...@intel.com > > 发送时间: 2021年3月9日 8:55 > > 收件人: devel@edk2.groups.io > > 抄送: Min Xu <min.m...@intel.com>; Doug Reiland > > <doug.reil...@intel.com>; Liming Gao <gaolim...@byosoft.com.cn>; > > Zhiguang Liu <zhiguang....@intel.com>; Jiewen Yao > > <jiewen....@intel.com> > > 主题: [edk2-devel] [PATCH 1/3] MdePkg: Add Tdx support lib > > > > From: Min Xu <min.m...@intel.com> > > > > Intel Trust Domain Extension (Intel TDX) refers to an Intel technology > > that extends Virtual Machines Extensions (VMX) and Multi-Key Total > > Memory Encryption (MKTME) with a new kind of virtual machine guest > > called a Trust Domain (TD). > > > > TdxLib is created with functions to perform the related Tdx operation. > > This includes functions for: > > - TdCall : to cause a VM exit to the Intel TDX module > > - TdVmCall : it is a leaf function 0 for TDCALL > > - TdVmCallCpuid : enable the TD guest to request VMM to emulate > > CPUID > > - TdReport : to retrieve TDREPORT_STRUCT > > - TdAcceptPages : to accept pending private pages > > - TdExtendRtmr : to extend one of the RTMR registers > > > > The base function in this dirver will not do anything and will return > > an error if a return value is required. It is expected that other > > packages (like OvmfPkg) will create a version of the library to fully > > support a TD guest. > > > > Signed-off-by: Min Xu <min.m...@intel.com> > > Signed-off-by: Doug Reiland <doug.reil...@intel.com> > > > > CC: Liming Gao <gaolim...@byosoft.com.cn> > > CC: Zhiguang Liu <zhiguang....@intel.com> > > CC: Jiewen Yao <jiewen....@intel.com> > > --- > > MdePkg/Include/IndustryStandard/Tdx.h | 201 > > ++++++++++++++++++++++++++ > > MdePkg/Include/Library/TdxLib.h | 165 +++++++++++++++++++++ > > MdePkg/Include/Protocol/Tdx.h | 22 +++ > > MdePkg/Library/TdxLib/TdxLibNull.c | 155 ++++++++++++++++++++ > > MdePkg/Library/TdxLib/TdxLibNull.inf | 33 +++++ > > 5 files changed, 576 insertions(+) > > create mode 100644 MdePkg/Include/IndustryStandard/Tdx.h > > create mode 100644 MdePkg/Include/Library/TdxLib.h create mode > > 100644 MdePkg/Include/Protocol/Tdx.h create mode 100644 > > MdePkg/Library/TdxLib/TdxLibNull.c > > create mode 100644 MdePkg/Library/TdxLib/TdxLibNull.inf > > > > diff --git a/MdePkg/Include/IndustryStandard/Tdx.h > > b/MdePkg/Include/IndustryStandard/Tdx.h > > new file mode 100644 > > index 0000000000..dbcc31c265 > > --- /dev/null > > +++ b/MdePkg/Include/IndustryStandard/Tdx.h > > @@ -0,0 +1,201 @@ > > +/** @file > > > > + Intel Trust Domain Extension definitions > > > > + > > > > + Copyright (c) 2020 - 2021, Intel Corporation. All rights > > + reserved.<BR> > > > > + This program and the accompanying materials > > > > + are licensed and made available under the terms and conditions of > > + the > > BSD License > > > > + which accompanies this distribution. The full text of the license > > + may > be > > found at > > > > + http://opensource.org/licenses/bsd-license.php > > > > + > > > > + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" > > BASIS, > > > > + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER > > EXPRESS OR IMPLIED. > > > > + > > > > +**/ > > > > + > > > > +#ifndef _TDX_H_ > > > > +#define _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_OPERAND_INVALID > > 0xC000010000000000 > > > > +#define TDX_EXIT_REASON_OPERAND_BUSY > > 0x8000020000000000 > > > > + > > > > +#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 > > > > + > > > > diff --git a/MdePkg/Include/Library/TdxLib.h > > b/MdePkg/Include/Library/TdxLib.h new file mode 100644 index > > 0000000000..5e8634c6df > > --- /dev/null > > +++ b/MdePkg/Include/Library/TdxLib.h > > @@ -0,0 +1,165 @@ > > +/** @file > > > > + TdxLib definitions > > > > + > > > > + Copyright (c) 2020 - 2021, Intel Corporation. All rights > > + reserved.<BR> > > > > + This program and the accompanying materials > > > > + are licensed and made available under the terms and conditions of > > + the > > BSD License > > > > + which accompanies this distribution. The full text of the license > > + may > be > > found at > > > > + http://opensource.org/licenses/bsd-license.php > > > > + > > > > + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" > > BASIS, > > > > + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER > > EXPRESS OR IMPLIED. > > > > + > > > > +**/ > > > > + > > > > +#ifndef _TDX_LIB_H_ > > > > +#define _TDX_LIB_H_ > > > > + > > > > +#include <Library/BaseLib.h> > > > > +#include <Uefi/UefiBaseType.h> > > > > +#include <Library/DebugLib.h> > > > > +#include <Protocol/DebugSupport.h> > > > > + > > > > +/** > > > > + This function retrieve TDREPORT_STRUCT structure from TDX. > > > > + The struct contains the measurements/configuration information of > > > > + the guest TD that called the function, measurements/configuratio > > > > + information of the TDX-SEAM module and a REPORTMACSTRUCT. > > > > + The REPORTMACSTRUCT is integrity protected with a MAC and > > > > + contains the hash of the measurements and configuration > > > > + as well as additional REPORTDATA provided by the TD software. > > > > + > > > > + AdditionalData, a 64-byte value, is provided by the guest TD > > > > + to be included in the TDREPORT > > > > + > > > > + @param[in,out] Report Holds the TEREPORT_STRUCT. > > > > + @param[in] ReportSize Size of the report. It must be > > > > + larger than 1024B. > > > > + @param[in] AdditionalData Point to the additional data. > > > > + @param[in] AdditionalDataSize Size of the additional data. > > > > + If AdditionalData != NULL, > > then > > > > + this value must be 64B. > > > > + > > > > + @return EFI_SUCCESS > > > > + @return EFI_INVALID_PARAMETER > > > > + @return EFI_DEVICE_ERROR > > > > + > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +TdReport( > > > > + IN OUT UINT8 *Report, > > > > + IN UINT32 ReportSize, > > > > + IN UINT8 *AdditionalData, > > > > + IN UINT32 AdditionalDataSize > > > > +); > > > > + > > > > +/** > > > > + This function accept a pending private page, and initialize the > > + page to > > > > + all-0 using the TD ephemeral private key. > > > > + > > > > + @param[in] StartAddress Guest physical address of the private > > page > > > > + to accept. > > > > + @param[in] NumberOfPages Number of the pages to be accepted. > > > > + > > > > + @return EFI_SUCCESS > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +TdAcceptPages ( > > > > + IN UINT64 StartAddress, > > > > + IN UINT64 NumberOfPages > > > > + ); > > > > + > > > > +/** > > > > + This function extends one of the RTMR measurement register > > > > + in TDCS with the provided extension data in memory. > > > > + RTMR extending supports SHA384 which length is 48 bytes. > > > > + > > > > + @param[in] Data Point to the data to be extended > > > > + @param[in] DataLen Length of the data. Must be 48 > > > > + @param[in] Index RTMR index > > > > + > > > > + @return EFI_SUCCESS > > > > + @return EFI_INVALID_PARAMETER > > > > + @return EFI_DEVICE_ERROR > > > > + > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +TdExtendRtmr( > > > > + IN UINT32 *Data, > > > > + IN UINT32 DataLen, > > > > + IN UINT8 PcrIndex > > > > + ); > > > > + > > > > +/** > > > > + The TDCALL instruction causes a VM exit to the Intel TDX module. > > + It is > > > > + used to call guest-side Intel TDX functions, either local or a TD > > + exit > > > > + to the host VMM, as selected by Leaf. > > > > + Leaf functions are described at > > + <https://software.intel.com/content/ > > > > + www/us/en/develop/articles/intel-trust-domain-extensions.html> > > > > + > > > > + @param[in] Leaf Leaf number of TDCALL instruction > > > > + @param[in] Arg1 Arg1 > > > > + @param[in] Arg2 Arg2 > > > > + @param[in] Arg3 Arg3 > > > > + @param[in,out] Results Returned result of the Leaf function > > > > + > > > > + @return EFI_SUCCESS > > > > + @return Other See individual leaf functions > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +TdCall( > > > > + IN UINT64 Leaf, > > > > + IN UINT64 Arg1, > > > > + IN UINT64 Arg2, > > > > + IN UINT64 Arg3, > > > > + IN OUT VOID *Results > > > > + ); > > > > + > > > > +/** > > > > + TDVMALL is a leaf function 0 for TDCALL. It helps invoke services > > + from > the > > > > + host VMM to pass/receive information. > > > > + > > > > + @param[in] Leaf Number of sub-functions > > > > + @param[in] Arg1 Arg1 > > > > + @param[in] Arg2 Arg2 > > > > + @param[in] Arg3 Arg3 > > > > + @param[in] Arg4 Arg4 > > > > + @param[in,out] Results Returned result of the sub-function > > > > + > > > > + @return EFI_SUCCESS > > > > + @return Other See individual sub-functions > > > > + > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +TdVmCall ( > > > > + IN UINT64 Leaf, > > > > + IN UINT64 Arg1, > > > > + IN UINT64 Arg2, > > > > + IN UINT64 Arg3, > > > > + IN UINT64 Arg4, > > > > + IN OUT VOID *Results > > > > + ); > > > > + > > > > +/** > > > > + This function enable the TD guest to request the VMM to emulate > > + CPUID > > > > + operation, especially for non-architectural, CPUID leaves. > > > > + > > > > + @param[in] Eax Main leaf of the CPUID > > > > + @param[in] Ecx Sub-leaf of the CPUID > > > > + @param[out] Results Returned result of CPUID operation > > > > + > > > > + @return EFI_SUCCESS > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +TdVmCallCpuid ( > > > > + IN UINT64 Eax, > > > > + IN UINT64 Ecx, > > > > + OUT VOID *Results > > > > + ); > > > > +#endif > > > > diff --git a/MdePkg/Include/Protocol/Tdx.h > > b/MdePkg/Include/Protocol/Tdx.h new file mode 100644 index > > 0000000000..d3e1eae135 > > --- /dev/null > > +++ b/MdePkg/Include/Protocol/Tdx.h > > @@ -0,0 +1,22 @@ > > +/** @file > > > > + Tcg for Intel TDX definitions. > > > > + > > > > +Copyright (c) 2020 - 2021, Intel Corporation. All rights > > +reserved.<BR> > > > > +SPDX-License-Identifier: BSD-2-Clause-Patent > > > > + > > > > +**/ > > > > + > > > > + > > > > +#ifndef __TCG_TDX_H__ > > > > +#define __TCG_TDX_H__ > > > > + > > > > +#include <Uefi/UefiBaseType.h> > > > > + > > > > +#define TCG_TDX_EVENT_DATA_SIGNATURE SIGNATURE_32 ('T', 'D', 'X', > > 'S') > > > > + > > > > +#define TD_TCG2_PROTOCOL_GUID \ > > > > + {0x96751a3d, 0x72f4, 0x41a6, { 0xa7, 0x94, 0xed, 0x5d, 0x0e, 0x67, > 0xae, > > 0x6b }} > > > > +extern EFI_GUID gTdTcg2ProtocolGuid; > > > > + > > > > + > > > > +#endif > > > > diff --git a/MdePkg/Library/TdxLib/TdxLibNull.c > > b/MdePkg/Library/TdxLib/TdxLibNull.c > > new file mode 100644 > > index 0000000000..8d759e4d33 > > --- /dev/null > > +++ b/MdePkg/Library/TdxLib/TdxLibNull.c > > @@ -0,0 +1,155 @@ > > +/** @file > > > > + Null instance of TdxLib. > > > > + > > > > + Copyright (c) 2020 - 2021, Intel Corporation. All rights > > + reserved.<BR> > > > > + This program and the accompanying materials > > > > + are licensed and made available under the terms and conditions of > > + the > > BSD License > > > > + which accompanies this distribution. The full text of the license > > + may > be > > found at > > > > + http://opensource.org/licenses/bsd-license.php > > > > + > > > > + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" > > BASIS, > > > > + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER > > EXPRESS OR IMPLIED. > > > > + > > > > +**/ > > > > + > > > > + > > > > +#include <Library/BaseLib.h> > > > > +#include <Library/DebugLib.h> > > > > +#include <IndustryStandard/Tdx.h> > > > > +#include <Library/TdxLib.h> > > > > + > > > > +/** > > > > + This function retrieve TDREPORT_STRUCT structure from TDX. > > > > + The struct contains the measurements/configuration information of > > > > + the guest TD that called the function, measurements/configuratio > > > > + information of the TDX-SEAM module and a REPORTMACSTRUCT. > > > > + The REPORTMACSTRUCT is integrity protected with a MAC and > > > > + contains the hash of the measurements and configuration > > > > + as well as additional REPORTDATA provided by the TD software. > > > > + > > > > + AdditionalData, a 64-byte value, is provided by the guest TD > > > > + to be included in the TDREPORT > > > > + > > > > + @param[in,out] Report Holds the TEREPORT_STRUCT. > > > > + @param[in] ReportSize Size of the report. It must be > > > > + larger than 1024B. > > > > + @param[in] AdditionalData Point to the additional data. > > > > + @param[in] AdditionalDataSize Size of the additional data. > > > > + If AdditionalData != NULL, > > then > > > > + this value must be 64B. > > > > + > > > > + @return EFI_SUCCESS > > > > + @return EFI_INVALID_PARAMETER > > > > + @return EFI_DEVICE_ERROR > > > > + > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +TdReport( > > > > + IN OUT UINT8 *Report, > > > > + IN UINT32 ReportSize, > > > > + IN UINT8 *AdditionalData, > > > > + IN UINT32 AdditionalDataSize > > > > + ) > > > > +{ > > > > + return EFI_UNSUPPORTED; > > > > +} > > > > + > > > > +/** > > > > + This function accept a pending private page, and initialize the > > + page to > > > > + all-0 using the TD ephemeral private key. > > > > + > > > > + @param[in] StartAddress Guest physical address of the private > > page > > > > + to accept. > > > > + @param[in] NumberOfPages Number of the pages to be accepted. > > > > + > > > > + @return EFI_UNSUPPORTED > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +TdAcceptPages ( > > > > + IN UINT64 StartAddress, > > > > + IN UINT64 NumberOfPages > > > > + ) > > > > +{ > > > > + return EFI_UNSUPPORTED; > > > > +} > > > > + > > > > +/** > > > > + The TDCALL instruction causes a VM exit to the Intel TDX module. > > + It is > > > > + used to call guest-side Intel TDX functions, either local or a TD > > + exit > > > > + to the host VMM, as selected by Leaf. > > > > + Leaf functions are described at > > + <https://software.intel.com/content/ > > > > + www/us/en/develop/articles/intel-trust-domain-extensions.html> > > > > + > > > > + @param[in] Leaf Leaf number of TDCALL instruction > > > > + @param[in] Arg1 Arg1 > > > > + @param[in] Arg2 Arg2 > > > > + @param[in] Arg3 Arg3 > > > > + @param[in,out] Results Returned result of the Leaf function > > > > + > > > > + @return EFI_SUCCESS > > > > + @return Other See individual leaf functions > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +TdCall( > > > > + IN UINT64 Leaf, > > > > + IN UINT64 Arg1, > > > > + IN UINT64 Arg2, > > > > + IN UINT64 Arg3, > > > > + IN OUT VOID *Results > > > > + ) > > > > +{ > > > > + return EFI_UNSUPPORTED; > > > > +} > > > > + > > > > +/** > > > > + TDVMALL is a leaf function 0 for TDCALL. It helps invoke services > > + from > the > > > > + host VMM to pass/receive information. > > > > + > > > > + @param[in] Leaf Number of sub-functions > > > > + @param[in] Arg1 Arg1 > > > > + @param[in] Arg2 Arg2 > > > > + @param[in] Arg3 Arg3 > > > > + @param[in] Arg4 Arg4 > > > > + @param[in,out] Results Returned result of the sub-function > > > > + > > > > + @return EFI_SUCCESS > > > > + @return Other See individual sub-functions > > > > + > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +TdVmCall ( > > > > + IN UINT64 Leaf, > > > > + IN UINT64 Arg1, > > > > + IN UINT64 Arg2, > > > > + IN UINT64 Arg3, > > > > + IN UINT64 Arg4, > > > > + IN OUT VOID *Results > > > > + ) > > > > +{ > > > > + return EFI_UNSUPPORTED; > > > > +} > > > > + > > > > +/** > > > > + This function enable the TD guest to request the VMM to emulate > > + CPUID > > > > + operation, especially for non-architectural, CPUID leaves. > > > > + > > > > + @param[in] Eax Main leaf of the CPUID > > > > + @param[in] Ecx Sub-leaf of the CPUID > > > > + @param[in,out] Results Returned result of CPUID operation > > > > + > > > > + @return EFI_SUCCESS > > > > +**/ > > > > +EFI_STATUS > > > > +EFIAPI > > > > +TdVmCallCpuid ( > > > > + IN UINT64 Eax, > > > > + IN UINT64 Ecx, > > > > + IN OUT VOID *Results > > > > + ) > > > > +{ > > > > + return EFI_UNSUPPORTED; > > > > +} > > > > diff --git a/MdePkg/Library/TdxLib/TdxLibNull.inf > > b/MdePkg/Library/TdxLib/TdxLibNull.inf > > new file mode 100644 > > index 0000000000..0d07595a8c > > --- /dev/null > > +++ b/MdePkg/Library/TdxLib/TdxLibNull.inf > > @@ -0,0 +1,33 @@ > > +## @file > > > > +# Null Tdx library instance > > > > +# > > > > +# Copyright (c) 2020 - 2021, Intel Corporation. All rights > > +reserved.<BR> > > > > +# This program and the accompanying materials > > > > +# are licensed and made available under the terms and conditions of > > +the > BSD > > License > > > > +# which accompanies this distribution. The full text of the license > > +may > be > > found at > > > > +# http://opensource.org/licenses/bsd-license.php. > > > > +# > > > > +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" > > BASIS, > > > > +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER > > EXPRESS OR IMPLIED. > > > > +# > > > > +## > > > > + > > > > +[Defines] > > > > + INF_VERSION = 0x00010005 > > > > + BASE_NAME = TdxLibNull > > > > + FILE_GUID = > > 05C5E621-FC66-4420-9C80-F0DE9E5B95FF > > > > + MODULE_TYPE = BASE > > > > + VERSION_STRING = 1.0 > > > > + LIBRARY_CLASS = TdxLib > > > > + > > > > +# > > > > +# The following information is for reference only and not required by > > +the > > build tools. > > > > +# > > > > +# VALID_ARCHITECTURES = X64 > > > > +# > > > > + > > > > +[Sources] > > > > + TdxLibNull.c > > > > + > > > > +[Packages] > > > > + MdePkg/MdePkg.dec > > > > -- > > 2.29.2.windows.2 > > > > > > > > -=-=-=-=-=-= > > Groups.io Links: You receive all messages sent to this group. > > View/Reply Online (#72548): > > https://edk2.groups.io/g/devel/message/72548 > > Mute This Topic: https://groups.io/mt/81191034/4905953 > > Group Owner: devel+ow...@edk2.groups.io > > Unsubscribe: https://edk2.groups.io/g/devel/unsub > > [gaolim...@byosoft.com.cn] > > -=-=-=-=-=-= > > > > > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#72564): https://edk2.groups.io/g/devel/message/72564 Mute This Topic: https://groups.io/mt/81195161/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-