RFC: https://bugzilla.tianocore.org/show_bug.cgi?id=3429 TdxLib is created with functions to perform the related Tdx operation. This includes functions for: - TdAcceptPages : Accept pending private pages and initialize the pages to all-0 using the TD ephemeral private key. - TdExtendRtmr : Extend measurement to one of the RTMR registers. - TdSharedPageMask: Get the Td guest shared page mask which indicates it is a Shared or Private page. - TdMaxVCpuNum : Get the maximum number of virtual CPUs. - TdVCpuNum : Get the number of virtual CPUs. 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> Acked-by: Gerd Hoffmann <kraxel@redhat.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com> Signed-off-by: Min Xu <min.m.xu@intel.com>
		
			
				
	
	
		
			93 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   TdxLib definitions
 | |
| 
 | |
|   Copyright (c) 2020 - 2021, Intel Corporation. All rights reserved.<BR>
 | |
|   SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef TDX_LIB_H_
 | |
| #define TDX_LIB_H_
 | |
| 
 | |
| /**
 | |
|   This function accepts 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. [63:52] and [11:0] must be 0.
 | |
|   @param[in]  NumberOfPages    Number of the pages to be accepted.
 | |
|   @param[in]  PageSize         GPA page size. Accept 2M/4K page size.
 | |
| 
 | |
|   @return EFI_SUCCESS
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| TdAcceptPages (
 | |
|   IN UINT64  StartAddress,
 | |
|   IN UINT64  NumberOfPages,
 | |
|   IN UINT32  PageSize
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   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   Index
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function gets the Td guest shared page mask.
 | |
| 
 | |
|   The guest indicates if a page is shared using the Guest Physical Address
 | |
|   (GPA) Shared (S) bit. If the GPA Width(GPAW) is 48, the S-bit is bit-47.
 | |
|   If the GPAW is 52, the S-bit is bit-51.
 | |
| 
 | |
|   @return Shared page bit mask
 | |
| **/
 | |
| UINT64
 | |
| EFIAPI
 | |
| TdSharedPageMask (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function gets the maximum number of Virtual CPUs that are usable for
 | |
|   Td Guest.
 | |
| 
 | |
|   @return maximum Virtual CPUs number
 | |
| **/
 | |
| UINT32
 | |
| EFIAPI
 | |
| TdMaxVCpuNum (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function gets the number of Virtual CPUs that are usable for Td
 | |
|   Guest.
 | |
| 
 | |
|   @return Virtual CPUs number
 | |
| **/
 | |
| UINT32
 | |
| EFIAPI
 | |
| TdVCpuNum (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| #endif
 |