On Thu, Jul 15, 2021, Krish Sadhukhan wrote: > Current implementation of svm_vmrun() and test_run() sets the guest RIP to a > wrapper function which executes the guest code being used by tests. This is > not suitable for tests like testing the effect of guest EFLAGS.TF on VMRUN > because the trap handler will point to the second guest instruction to which > the test code does not have access. > > Therefore, add a variant of svm_vmrun() that will set the guest RIP to the > actual guest code that tests want to test. This will be used by the next > patch in this series. > > Signed-off-by: Krish Sadhukhan <krish.sadhukhan@xxxxxxxxxx> > --- > x86/svm.c | 14 ++++++++++++-- > x86/svm.h | 1 + > 2 files changed, 13 insertions(+), 2 deletions(-) > > diff --git a/x86/svm.c b/x86/svm.c > index f185ca0..50b6a15 100644 > --- a/x86/svm.c > +++ b/x86/svm.c > @@ -227,9 +227,9 @@ struct svm_test *v2_test; > > u64 guest_stack[10000]; > > -int svm_vmrun(void) > +static int _svm_vmrun(u64 rip) I'd prefer to stay with the kernel style of two underscores for inner helpers. > { > - vmcb->save.rip = (ulong)test_thunk; > + vmcb->save.rip = (ulong)rip; > vmcb->save.rsp = (ulong)(guest_stack + ARRAY_SIZE(guest_stack)); > regs.rdi = (ulong)v2_test; > > @@ -244,6 +244,16 @@ int svm_vmrun(void) > return (vmcb->control.exit_code); > } > > +int svm_vmrun(void) > +{ > + return _svm_vmrun((u64)test_thunk); > +} > + > +int svm_vmrun_custom(u64 rip) > +{ > + return _svm_vmrun(rip); > +} Why bother with the "custom" wrapper? Just expose the inner helper.