TDX VM requires VM type KVM_X86_TDX_VM to be passed to kvm_ioctl(KVM_CREATE_VM). If tdx-guest object is specified to confidential-guest-support, like, qemu -machine ...,confidential-guest-support=tdx0 \ -object tdx-guest,id=tdx0,... it parses VM type as KVM_X86_TDX_VM. Signed-off-by: Xiaoyao Li <xiaoyao.li@xxxxxxxxx> --- target/i386/kvm/kvm.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index 2e47fda25f95..c4050cbf998e 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -32,6 +32,7 @@ #include "sysemu/runstate.h" #include "kvm_i386.h" #include "sev.h" +#include "tdx.h" #include "xen-emu.h" #include "hyperv.h" #include "hyperv-proto.h" @@ -164,12 +165,17 @@ static int kvm_get_one_msr(X86CPU *cpu, int index, uint64_t *value); static const char* vm_type_name[] = { [KVM_X86_DEFAULT_VM] = "default", [KVM_X86_SW_PROTECTED_VM] = "sw-protected-vm", + [KVM_X86_TDX_VM] = "tdx", }; int kvm_get_vm_type(MachineState *ms, const char *vm_type) { int kvm_type = KVM_X86_DEFAULT_VM; + if (ms->cgs && object_dynamic_cast(OBJECT(ms->cgs), TYPE_TDX_GUEST)) { + kvm_type = KVM_X86_TDX_VM; + } + /* * old KVM doesn't support KVM_CAP_VM_TYPES and KVM_X86_DEFAULT_VM * is always supported -- 2.34.1