selftests: kvm: introduce cpu_has_svm() check
authorVitaly Kuznetsov <vkuznets@redhat.com>
Fri, 29 May 2020 13:04:06 +0000 (15:04 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Mon, 1 Jun 2020 08:26:04 +0000 (04:26 -0400)
Many tests will want to check if the CPU is Intel or AMD in
guest code, add cpu_has_svm() and put it as static
inline to svm_util.h.

Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Message-Id: <20200529130407.57176-1-vkuznets@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
tools/testing/selftests/kvm/include/x86_64/svm_util.h

index cd03791..674151d 100644 (file)
@@ -35,4 +35,14 @@ void generic_svm_setup(struct svm_test_data *svm, void *guest_rip, void *guest_r
 void run_guest(struct vmcb *vmcb, uint64_t vmcb_gpa);
 void nested_svm_check_supported(void);
 
+static inline bool cpu_has_svm(void)
+{
+       u32 eax = 0x80000001, ecx;
+
+       asm("cpuid" :
+           "=a" (eax), "=c" (ecx) : "0" (eax) : "ebx", "edx");
+
+       return ecx & CPUID_SVM;
+}
+
 #endif /* SELFTEST_KVM_SVM_UTILS_H */