KVM: selftests: Do kvm_cpu_has() checks before creating VM+vCPU
authorSean Christopherson <seanjc@google.com>
Mon, 28 Nov 2022 22:57:35 +0000 (22:57 +0000)
committerSean Christopherson <seanjc@google.com>
Thu, 1 Dec 2022 23:31:46 +0000 (15:31 -0800)
Move the AMX test's kvm_cpu_has() checks before creating the VM+vCPU,
there are no dependencies between the two operations.  Opportunistically
add a comment to call out that enabling off-by-default XSAVE-managed
features must be done before KVM_GET_SUPPORTED_CPUID is cached.

Signed-off-by: Sean Christopherson <seanjc@google.com>
Link: https://lore.kernel.org/r/20221128225735.3291648-5-seanjc@google.com
tools/testing/selftests/kvm/x86_64/amx_test.c

index 1256c7f..bd72c6e 100644 (file)
@@ -249,17 +249,21 @@ int main(int argc, char *argv[])
        u32 amx_offset;
        int stage, ret;
 
+       /*
+        * Note, all off-by-default features must be enabled before anything
+        * caches KVM_GET_SUPPORTED_CPUID, e.g. before using kvm_cpu_has().
+        */
        vm_xsave_require_permission(XSTATE_XTILE_DATA_BIT);
 
-       /* Create VM */
-       vm = vm_create_with_one_vcpu(&vcpu, guest_code);
-
        TEST_REQUIRE(kvm_cpu_has(X86_FEATURE_XFD));
        TEST_REQUIRE(kvm_cpu_has(X86_FEATURE_XSAVE));
        TEST_REQUIRE(kvm_cpu_has(X86_FEATURE_AMX_TILE));
        TEST_REQUIRE(kvm_cpu_has(X86_FEATURE_XTILECFG));
        TEST_REQUIRE(kvm_cpu_has(X86_FEATURE_XTILEDATA));
 
+       /* Create VM */
+       vm = vm_create_with_one_vcpu(&vcpu, guest_code);
+
        TEST_ASSERT(kvm_cpu_has_p(X86_PROPERTY_XSTATE_MAX_SIZE),
                    "KVM should enumerate max XSAVE size when XSAVE is supported");
        xsave_restore_size = kvm_cpu_property(X86_PROPERTY_XSTATE_MAX_SIZE);