Re: [PATCH 1/2] nSVM: Add a variant of svm_vmrun() for executing custom guest code

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux