[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RFC PATCH v4 11/36] i386/tdx: Initialize TDX before creating TD vcp
From: |
Gerd Hoffmann |
Subject: |
Re: [RFC PATCH v4 11/36] i386/tdx: Initialize TDX before creating TD vcpus |
Date: |
Mon, 23 May 2022 11:20:03 +0200 |
> +int tdx_pre_create_vcpu(CPUState *cpu)
> +{
> + MachineState *ms = MACHINE(qdev_get_machine());
> + X86CPU *x86cpu = X86_CPU(cpu);
> + CPUX86State *env = &x86cpu->env;
> + struct kvm_tdx_init_vm init_vm;
> + int r = 0;
> +
> + qemu_mutex_lock(&tdx_guest->lock);
> + if (tdx_guest->initialized) {
> + goto out;
> + }
> +
> + memset(&init_vm, 0, sizeof(init_vm));
> + init_vm.cpuid.nent = kvm_x86_arch_cpuid(env, init_vm.entries, 0);
> +
> + init_vm.attributes = tdx_guest->attributes;
> + init_vm.max_vcpus = ms->smp.cpus;
> +
> + r = tdx_vm_ioctl(KVM_TDX_INIT_VM, 0, &init_vm);
> + if (r < 0) {
> + error_report("KVM_TDX_INIT_VM failed %s", strerror(-r));
> + goto out;
> + }
> +
> + tdx_guest->initialized = true;
> +
> +out:
> + qemu_mutex_unlock(&tdx_guest->lock);
> + return r;
> +}
Hmm, hooking *vm* initialization into *vcpu* creation looks wrong to me.
take care,
Gerd
- Re: [RFC PATCH v4 09/36] KVM: Introduce kvm_arch_pre_create_vcpu(), (continued)
- [RFC PATCH v4 12/36] i386/tdx: Wire CPU features up with attributes of TD guest, Xiaoyao Li, 2022/05/11
- [RFC PATCH v4 13/36] i386/tdx: Validate TD attributes, Xiaoyao Li, 2022/05/11
- Re: [RFC PATCH v4 13/36] i386/tdx: Validate TD attributes, Gerd Hoffmann, 2022/05/23
- Re: [RFC PATCH v4 13/36] i386/tdx: Validate TD attributes, Xiaoyao Li, 2022/05/24
- Re: [RFC PATCH v4 13/36] i386/tdx: Validate TD attributes, Gerd Hoffmann, 2022/05/24
- Re: [RFC PATCH v4 13/36] i386/tdx: Validate TD attributes, Xiaoyao Li, 2022/05/24
- Re: [RFC PATCH v4 13/36] i386/tdx: Validate TD attributes, Gerd Hoffmann, 2022/05/24
- Re: [RFC PATCH v4 13/36] i386/tdx: Validate TD attributes, Xiaoyao Li, 2022/05/25