Re: [PATCH] KVM: selftests: Add SEV-ES shutdown test

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

 



Hi Peter,

On 7/9/2024 1:29 PM, Peter Gonda wrote:
> Regression test for ae20eef5 ("KVM: SVM: Update SEV-ES shutdown intercepts
> with more metadata"). Test confirms userspace is correctly indicated of
> a guest shutdown not previous behavior of an EINVAL from KVM_RUN.
> 
> Cc: Paolo Bonzini <pbonzini@xxxxxxxxxx>
> Cc: Sean Christopherson <seanjc@xxxxxxxxxx>
> Cc: Alper Gun <alpergun@xxxxxxxxxx>
> Cc: Tom Lendacky <thomas.lendacky@xxxxxxx>
> Cc: Michael Roth <michael.roth@xxxxxxx>
> Cc: kvm@xxxxxxxxxxxxxxx
> Cc: linux-kselftest@xxxxxxxxxxxxxxx
> Signed-off-by: Peter Gonda <pgonda@xxxxxxxxxx>

Tested-by: Pratik R. Sampat <pratikrajesh.sampat@xxxxxxx>

> 
> ---
>  .../selftests/kvm/x86_64/sev_smoke_test.c     | 26 +++++++++++++++++++
>  1 file changed, 26 insertions(+)
> 
> diff --git a/tools/testing/selftests/kvm/x86_64/sev_smoke_test.c b/tools/testing/selftests/kvm/x86_64/sev_smoke_test.c
> index 7c70c0da4fb74..04f24d5f09877 100644
> --- a/tools/testing/selftests/kvm/x86_64/sev_smoke_test.c
> +++ b/tools/testing/selftests/kvm/x86_64/sev_smoke_test.c
> @@ -160,6 +160,30 @@ static void test_sev(void *guest_code, uint64_t policy)
>  	kvm_vm_free(vm);
>  }
>  
> +static void guest_shutdown_code(void)
> +{
> +	__asm__ __volatile__("ud2");
> +}
> +
> +static void test_sev_es_shutdown(void)
> +{
> +	struct kvm_vcpu *vcpu;
> +	struct kvm_vm *vm;
> +
> +	uint32_t type = KVM_X86_SEV_ES_VM;
> +
> +	vm = vm_sev_create_with_one_vcpu(type, guest_shutdown_code, &vcpu);
> +
> +	vm_sev_launch(vm, SEV_POLICY_ES, NULL);
> +
> +	vcpu_run(vcpu);
> +	TEST_ASSERT(vcpu->run->exit_reason == KVM_EXIT_SHUTDOWN,
> +		    "Wanted SHUTDOWN, got %s",
> +		    exit_reason_str(vcpu->run->exit_reason));
> +
> +	kvm_vm_free(vm);
> +}
> +

I guess this case also applies to SNP. So maybe once this patch is
queued up I could spin another patch in my SNP kselftest patch series
that parameterizes this function to test SNP as well.

Thanks!
Pratik

>  int main(int argc, char *argv[])
>  {
>  	TEST_REQUIRE(kvm_cpu_has(X86_FEATURE_SEV));
> @@ -171,6 +195,8 @@ int main(int argc, char *argv[])
>  		test_sev(guest_sev_es_code, SEV_POLICY_ES | SEV_POLICY_NO_DBG);
>  		test_sev(guest_sev_es_code, SEV_POLICY_ES);
>  
> +		test_sev_es_shutdown();
> +
>  		if (kvm_has_cap(KVM_CAP_XCRS) &&
>  		    (xgetbv(0) & XFEATURE_MASK_X87_AVX) == XFEATURE_MASK_X87_AVX) {
>  			test_sync_vmsa(0);




[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