>-----Original Message----- >From: Daniel P. Berrangé <berra...@redhat.com> >Subject: Re: [PATCH v3 07/21] conf: Add tdx as launch security type > >On Mon, Jun 30, 2025 at 02:17:18PM +0800, Zhenzhong Duan wrote: >> When 'tdx' is used, the VM will be launched with Intel TDX feature enabled. >> TDX feature supports running encrypted VM (Trust Domain, TD) under the >> control of KVM. A TD runs in a CPU model which protects the confidentiality >> of its memory and its CPU state from other software. >> >> There are four optional child elements. Element policy is 64bit hex, bit 0 >> is set to enable TDX debug, bit 28 is set to enable sept-ve-disable, other >> bits are reserved currently. When policy isn't specified, QEMU will use its >> own default value 0x10000000. mrConfigId, mrOwner and mrOwnerConfig >are >> base64 encoded SHA384 digest string. >> >> For example: >> >> <launchSecurity type='tdx'> >> <policy>0x10000001</policy> >> <mrConfigId>xxx</mrConfigId> >> <mrOwner>xxx</mrOwner> >> <mrOwnerConfig>xxx</mrOwnerConfig> >> </launchSecurity> >> >> Signed-off-by: Zhenzhong Duan <zhenzhong.d...@intel.com> >> --- >> src/conf/domain_conf.c | 49 >+++++++++++++++++++++++++++++++ >> src/conf/domain_conf.h | 11 +++++++ >> src/conf/domain_validate.c | 1 + >> src/conf/schemas/domaincommon.rng | 32 ++++++++++++++++++++ >> src/conf/virconftypes.h | 2 ++ >> src/qemu/qemu_cgroup.c | 1 + >> src/qemu/qemu_command.c | 2 ++ >> src/qemu/qemu_driver.c | 1 + >> src/qemu/qemu_firmware.c | 1 + >> src/qemu/qemu_namespace.c | 1 + >> src/qemu/qemu_process.c | 2 ++ >> src/qemu/qemu_validate.c | 1 + >> src/security/security_dac.c | 2 ++ >> 13 files changed, 106 insertions(+) > > >> diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c >> index 2d0ec0b4fa..6c65a2751b 100644 >> --- a/src/qemu/qemu_firmware.c >> +++ b/src/qemu/qemu_firmware.c >> @@ -1371,6 +1371,7 @@ qemuFirmwareMatchDomain(const >virDomainDef *def, >> } >> break; >> case VIR_DOMAIN_LAUNCH_SECURITY_PV: >> + case VIR_DOMAIN_LAUNCH_SECURITY_TDX: >> break; >> case VIR_DOMAIN_LAUNCH_SECURITY_NONE: >> case VIR_DOMAIN_LAUNCH_SECURITY_LAST: > >We need a patch in this series that updates qemuFirmwareMatchDomain >to handle TDX guests. > >Currently with > > <os firmware="efi"> > <type arch="x86_64" machine="q35">hvm</type> > <boot dev="hd"/> > </os> > >we are *not* matching the right firmware imagte > >qemuFirmwareMatchDomain:1383 : Firmware >'/usr/share/qemu/firmware/30-edk2-ovmf-4m-qcow2-x64-sb-enrolled.json' >matches domain requirements >qemuFirmwareFillDomainModern:1743 : Found matching firmware >(description path >'/usr/share/qemu/firmware/30-edk2-ovmf-4m-qcow2-x64-sb-enrolled.json') >qemuFirmwareEnableFeaturesModern:1439 : decided on firmware >'/usr/share/edk2/ovmf/OVMF_CODE_4M.secboot.qcow2' template >'/usr/share/edk2/ovmf/OVMF_VARS_4M.secboot.qcow2' >qemuFirmwareEnableFeaturesModern:1473 : Enabling SMM feature >qemuFirmwareEnableFeaturesModern:1476 : Enabling secure loader > >and so we fail to boot as SMM is incompatible with TDX, as >well as incorrectly setting up separate NVRAM. > >The file we should have matched is > > /usr/share/qemu/firmware/60-edk2-ovmf-x64-inteltdx.json > >Which has the right feature for TDX launch security: > > "features": [ > "enrolled-keys", > "intel-tdx", > "secure-boot", > "verbose-dynamic" > ], > >there is already logic in qemu_firmware.c for SEV/SNP, >and the same design pattern should work for TDX too.
Got it, will do. Thanks Zhenzhong