On Thu, Aug 07, 2025, Sagi Shahar wrote: > From: Ackerley Tng <ackerley...@google.com> > > TDX guests' registers cannot be initialized directly using > vcpu_regs_set(), hence the stack pointer needs to be initialized by > the guest itself, running boot code beginning at the reset vector. > > Store the stack address as part of struct kvm_vcpu so that it can > be accessible later to be passed to the boot code for rsp > initialization.
NAK. This bleeds x86 details into common code, and is again a convoluted way of passing information into TDX specific code. > > Signed-off-by: Ackerley Tng <ackerley...@google.com> > Signed-off-by: Sagi Shahar <sa...@google.com> > --- > tools/testing/selftests/kvm/include/kvm_util.h | 1 + > tools/testing/selftests/kvm/lib/x86/processor.c | 2 ++ > 2 files changed, 3 insertions(+) > > diff --git a/tools/testing/selftests/kvm/include/kvm_util.h > b/tools/testing/selftests/kvm/include/kvm_util.h > index 9994861d2acb..5c4ca25803ac 100644 > --- a/tools/testing/selftests/kvm/include/kvm_util.h > +++ b/tools/testing/selftests/kvm/include/kvm_util.h > @@ -58,6 +58,7 @@ struct kvm_vcpu { > int fd; > struct kvm_vm *vm; > struct kvm_run *run; > + vm_vaddr_t initial_stack_addr; > #ifdef __x86_64__ > struct kvm_cpuid2 *cpuid; > #endif > diff --git a/tools/testing/selftests/kvm/lib/x86/processor.c > b/tools/testing/selftests/kvm/lib/x86/processor.c > index 002303e2a572..da6e9315ebe2 100644 > --- a/tools/testing/selftests/kvm/lib/x86/processor.c > +++ b/tools/testing/selftests/kvm/lib/x86/processor.c > @@ -694,6 +694,8 @@ struct kvm_vcpu *vm_arch_vcpu_add(struct kvm_vm *vm, > uint32_t vcpu_id) > vcpu_init_sregs(vm, vcpu); > vcpu_init_xcrs(vm, vcpu); > > + vcpu->initial_stack_addr = stack_vaddr; > + > /* Setup guest general purpose registers */ > vcpu_regs_get(vcpu, ®s); > regs.rflags = regs.rflags | 0x2; > -- > 2.51.0.rc0.155.g4a0f42376b-goog >