Lisa Wang <[email protected]> writes: > From: Sagi Shahar <[email protected]> > > Finalize TDX VM after creation to make it runnable. > > Signed-off-by: Sagi Shahar <[email protected]> > Reviewed-by: Ira Weiny <[email protected]> > Signed-off-by: Lisa Wang <[email protected]> > --- > tools/testing/selftests/kvm/lib/x86/processor.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/tools/testing/selftests/kvm/lib/x86/processor.c > b/tools/testing/selftests/kvm/lib/x86/processor.c > index d84c629a1945..842cac168e99 100644 > --- a/tools/testing/selftests/kvm/lib/x86/processor.c > +++ b/tools/testing/selftests/kvm/lib/x86/processor.c > @@ -1479,6 +1479,12 @@ bool kvm_arch_has_default_irqchip(void) > return true; > } > > +void kvm_arch_vm_finalize_vcpus(struct kvm_vm *vm) > +{ > + if (is_tdx_vm(vm)) > + tdx_vm_finalize(vm); > +} > +
This doesn't necessarily block this series, we could (re)move this later: I'm not sure if kvm_arch_vm_finalize_vcpus() is the correct place to be finalizing the VM. Was kvm_arch_vm_finalize_vcpus() supposed to be for finalizing vCPUs instead? The awkward part is that kvm_arch_vm_finalize_vcpus() is called from __vm_create_with_vcpus(). While building this POC to test conversions [1] I only wanted to create the vm and vcpus and didn't want to finalize yet, since I still needed to do more mappings in the guest (and I needed the vm pointer to do mappings in the guest). Would calling tdx_vm_finalize() from within vcpu_run(), just once, be too magical? It's also possible to have some kvm_vm_finalize() call that can be explicitly and manually invoked from selftests just for CoCo selftests. [1] https://lore.kernel.org/all/[email protected]/ > void setup_smram(struct kvm_vm *vm, struct kvm_vcpu *vcpu, u64 smram_gpa, > const void *smi_handler, size_t handler_size) > { > > -- > 2.54.0.746.g67dd491aae-goog

