RFC: https://bugzilla.tianocore.org/show_bug.cgi?id=3429 If TDX is enabled then we do not support DMA operation in PEI phase. This is mainly because DMA in TDX guest requires using bounce buffer (which need to allocate dynamic memory and allocating a PAGE size'd buffer can be challenge in PEI phase). Cc: Ard Biesheuvel <ardb+tianocore@kernel.org> Cc: Jordan Justen <jordan.l.justen@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: Jiewen Yao <jiewen.yao@intel.com> Signed-off-by: Min Xu <min.m.xu@intel.com>
		
			
				
	
	
		
			74 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   Internal interfaces specific to the QemuFwCfgLib instances in OvmfPkg.
 | |
| 
 | |
|   Copyright (C) 2016, Red Hat, Inc.
 | |
|   Copyright (C) 2017, Advanced Micro Devices. All rights reserved
 | |
| 
 | |
|   SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef __QEMU_FW_CFG_LIB_INTERNAL_H__
 | |
| #define __QEMU_FW_CFG_LIB_INTERNAL_H__
 | |
| 
 | |
| /**
 | |
|   Returns a boolean indicating if the firmware configuration interface is
 | |
|   available for library-internal purposes.
 | |
| 
 | |
|   This function never changes fw_cfg state.
 | |
| 
 | |
|   @retval    TRUE   The interface is available internally.
 | |
|   @retval    FALSE  The interface is not available internally.
 | |
| **/
 | |
| BOOLEAN
 | |
| InternalQemuFwCfgIsAvailable (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Returns a boolean indicating whether QEMU provides the DMA-like access method
 | |
|   for fw_cfg.
 | |
| 
 | |
|   @retval    TRUE   The DMA-like access method is available.
 | |
|   @retval    FALSE  The DMA-like access method is unavailable.
 | |
| **/
 | |
| BOOLEAN
 | |
| InternalQemuFwCfgDmaIsAvailable (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Transfer an array of bytes, or skip a number of bytes, using the DMA
 | |
|   interface.
 | |
| 
 | |
|   @param[in]     Size     Size in bytes to transfer or skip.
 | |
| 
 | |
|   @param[in,out] Buffer   Buffer to read data into or write data from. Ignored,
 | |
|                           and may be NULL, if Size is zero, or Control is
 | |
|                           FW_CFG_DMA_CTL_SKIP.
 | |
| 
 | |
|   @param[in]     Control  One of the following:
 | |
|                           FW_CFG_DMA_CTL_WRITE - write to fw_cfg from Buffer.
 | |
|                           FW_CFG_DMA_CTL_READ  - read from fw_cfg into Buffer.
 | |
|                           FW_CFG_DMA_CTL_SKIP  - skip bytes in fw_cfg.
 | |
| **/
 | |
| VOID
 | |
| InternalQemuFwCfgDmaBytes (
 | |
|   IN     UINT32  Size,
 | |
|   IN OUT VOID    *Buffer OPTIONAL,
 | |
|   IN     UINT32  Control
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Check if it is Tdx guest
 | |
| 
 | |
|   @retval    TRUE   It is Tdx guest
 | |
|   @retval    FALSE  It is not Tdx guest
 | |
| **/
 | |
| BOOLEAN
 | |
| QemuFwCfgIsTdxGuest (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| #endif
 |