[PATCH 06/11] KVM: selftests: Verify XCR0 can be "downgraded" and "upgraded"

Sean Christopherson posted 11 patches 1 month, 3 weeks ago
[PATCH 06/11] KVM: selftests: Verify XCR0 can be "downgraded" and "upgraded"
Posted by Sean Christopherson 1 month, 3 weeks ago
Now that KVM selftests enable all supported XCR0 features by default, add
a testcase to the XCR0 vs. CPUID test to verify that the guest can disable
everything except the legacy FPU in XCR0, and then re-enable the full
feature set, which is kinda sorta what the test did before XCR0 was setup
by default.

Signed-off-by: Sean Christopherson <seanjc@google.com>
---
 tools/testing/selftests/kvm/x86_64/xcr0_cpuid_test.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/tools/testing/selftests/kvm/x86_64/xcr0_cpuid_test.c b/tools/testing/selftests/kvm/x86_64/xcr0_cpuid_test.c
index a4aecdc77da5..c8a5c5e51661 100644
--- a/tools/testing/selftests/kvm/x86_64/xcr0_cpuid_test.c
+++ b/tools/testing/selftests/kvm/x86_64/xcr0_cpuid_test.c
@@ -79,6 +79,11 @@ static void guest_code(void)
 	ASSERT_ALL_OR_NONE_XFEATURE(supported_xcr0,
 				    XFEATURE_MASK_XTILE);
 
+	vector = xsetbv_safe(0, XFEATURE_MASK_FP);
+	__GUEST_ASSERT(!vector,
+		       "Expected success on XSETBV(FP), got vector '0x%x'",
+		       vector);
+
 	vector = xsetbv_safe(0, supported_xcr0);
 	__GUEST_ASSERT(!vector,
 		       "Expected success on XSETBV(0x%lx), got vector '0x%x'",
-- 
2.47.0.rc0.187.ge670bccf7e-goog
Re: [PATCH 06/11] KVM: selftests: Verify XCR0 can be "downgraded" and "upgraded"
Posted by Vitaly Kuznetsov 1 month, 3 weeks ago
Sean Christopherson <seanjc@google.com> writes:

> Now that KVM selftests enable all supported XCR0 features by default, add
> a testcase to the XCR0 vs. CPUID test to verify that the guest can disable
> everything except the legacy FPU in XCR0, and then re-enable the full
> feature set, which is kinda sorta what the test did before XCR0 was setup
> by default.
>
> Signed-off-by: Sean Christopherson <seanjc@google.com>
> ---
>  tools/testing/selftests/kvm/x86_64/xcr0_cpuid_test.c | 5 +++++
>  1 file changed, 5 insertions(+)
>
> diff --git a/tools/testing/selftests/kvm/x86_64/xcr0_cpuid_test.c b/tools/testing/selftests/kvm/x86_64/xcr0_cpuid_test.c
> index a4aecdc77da5..c8a5c5e51661 100644
> --- a/tools/testing/selftests/kvm/x86_64/xcr0_cpuid_test.c
> +++ b/tools/testing/selftests/kvm/x86_64/xcr0_cpuid_test.c
> @@ -79,6 +79,11 @@ static void guest_code(void)
>  	ASSERT_ALL_OR_NONE_XFEATURE(supported_xcr0,
>  				    XFEATURE_MASK_XTILE);
>  
> +	vector = xsetbv_safe(0, XFEATURE_MASK_FP);
> +	__GUEST_ASSERT(!vector,
> +		       "Expected success on XSETBV(FP), got vector '0x%x'",
> +		       vector);
> +
>  	vector = xsetbv_safe(0, supported_xcr0);
>  	__GUEST_ASSERT(!vector,
>  		       "Expected success on XSETBV(0x%lx), got vector '0x%x'",

Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com>

-- 
Vitaly