OvmfPkg/QemuFwCfgLib: Support Tdx in QemuFwCfgDxe

RFC: https://bugzilla.tianocore.org/show_bug.cgi?id=3429

In the previous QemuFwCfgDxe only SEV is supported. This commit
introduce TDX support in QemuFwCfgDxe.

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>
This commit is contained in:
Min Xu 2021-09-22 20:16:12 +08:00 committed by mergify[bot]
parent fae5c1464d
commit 07c721fea7
2 changed files with 6 additions and 4 deletions

View File

@ -19,6 +19,7 @@
#include <Library/DebugLib.h> #include <Library/DebugLib.h>
#include <Library/QemuFwCfgLib.h> #include <Library/QemuFwCfgLib.h>
#include <Library/UefiBootServicesTableLib.h> #include <Library/UefiBootServicesTableLib.h>
#include <Library/MemEncryptTdxLib.h>
#include <Library/MemEncryptSevLib.h> #include <Library/MemEncryptSevLib.h>
#include "QemuFwCfgLibInternal.h" #include "QemuFwCfgLibInternal.h"
@ -85,7 +86,7 @@ QemuFwCfgInitialize (
DEBUG ((DEBUG_INFO, "QemuFwCfg interface (DMA) is supported.\n")); DEBUG ((DEBUG_INFO, "QemuFwCfg interface (DMA) is supported.\n"));
} }
if (mQemuFwCfgDmaSupported && MemEncryptSevIsEnabled ()) { if (mQemuFwCfgDmaSupported && (MemEncryptSevIsEnabled () || (MemEncryptTdxIsEnabled ()))) {
EFI_STATUS Status; EFI_STATUS Status;
// //
@ -100,7 +101,7 @@ QemuFwCfgInitialize (
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {
DEBUG (( DEBUG ((
DEBUG_ERROR, DEBUG_ERROR,
"QemuFwCfgSevDma %a:%a Failed to locate IOMMU protocol.\n", "QemuFwCfgDma %a:%a Failed to locate IOMMU protocol.\n",
gEfiCallerBaseName, gEfiCallerBaseName,
__FUNCTION__ __FUNCTION__
)); ));
@ -411,10 +412,10 @@ InternalQemuFwCfgDmaBytes (
DataBuffer = Buffer; DataBuffer = Buffer;
// //
// When SEV is enabled, map Buffer to DMA address before issuing the DMA // When SEV or TDX is enabled, map Buffer to DMA address before issuing the DMA
// request // request
// //
if (MemEncryptSevIsEnabled ()) { if (MemEncryptSevIsEnabled () || MemEncryptTdxIsEnabled ()) {
VOID *AccessBuffer; VOID *AccessBuffer;
EFI_PHYSICAL_ADDRESS DataBufferAddress; EFI_PHYSICAL_ADDRESS DataBufferAddress;

View File

@ -43,6 +43,7 @@
IoLib IoLib
MemoryAllocationLib MemoryAllocationLib
MemEncryptSevLib MemEncryptSevLib
MemEncryptTdxLib
[Protocols] [Protocols]
gEdkiiIoMmuProtocolGuid ## SOMETIMES_CONSUMES gEdkiiIoMmuProtocolGuid ## SOMETIMES_CONSUMES