kvm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/3] selftests: kvm: improvements to VMX support check
@ 2019-10-08 19:43 Vitaly Kuznetsov
  2019-10-08 19:43 ` [PATCH 1/3] selftests: kvm: vmx_set_nested_state_test: don't check for VMX support twice Vitaly Kuznetsov
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Vitaly Kuznetsov @ 2019-10-08 19:43 UTC (permalink / raw)
  To: kvm; +Cc: linux-kernel, Paolo Bonzini, Sean Christopherson, Jim Mattson

vmx_dirty_log_test fails on AMD and this is no surprise as it is VMX
specific. Consolidate checks from other VMX tests into a library routine
and add a check to skip the test when !VMX.

Vitaly Kuznetsov (3):
  selftests: kvm: vmx_set_nested_state_test: don't check for VMX support
    twice
  selftests: kvm: consolidate VMX support checks
  selftests: kvm: vmx_dirty_log_test: skip the test when VMX is not
    supported

 tools/testing/selftests/kvm/include/x86_64/vmx.h    |  2 ++
 tools/testing/selftests/kvm/lib/x86_64/vmx.c        | 10 ++++++++++
 .../kvm/x86_64/vmx_close_while_nested_test.c        |  6 +-----
 .../selftests/kvm/x86_64/vmx_dirty_log_test.c       |  2 ++
 .../kvm/x86_64/vmx_set_nested_state_test.c          | 13 ++-----------
 .../selftests/kvm/x86_64/vmx_tsc_adjust_test.c      |  6 +-----
 6 files changed, 18 insertions(+), 21 deletions(-)

-- 
2.20.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 1/3] selftests: kvm: vmx_set_nested_state_test: don't check for VMX support twice
  2019-10-08 19:43 [PATCH 0/3] selftests: kvm: improvements to VMX support check Vitaly Kuznetsov
@ 2019-10-08 19:43 ` Vitaly Kuznetsov
  2019-10-08 19:43 ` [PATCH 2/3] selftests: kvm: consolidate VMX support checks Vitaly Kuznetsov
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Vitaly Kuznetsov @ 2019-10-08 19:43 UTC (permalink / raw)
  To: kvm; +Cc: linux-kernel, Paolo Bonzini, Sean Christopherson, Jim Mattson

vmx_set_nested_state_test() checks if VMX is supported twice: in the very
beginning (and skips the whole test if it's not) and before doing
test_vmx_nested_state(). One should be enough.

Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
---
 .../selftests/kvm/x86_64/vmx_set_nested_state_test.c       | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c b/tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c
index 853e370e8a39..a6d85614ae4d 100644
--- a/tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c
+++ b/tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c
@@ -271,12 +271,7 @@ int main(int argc, char *argv[])
 	state.flags = KVM_STATE_NESTED_RUN_PENDING;
 	test_nested_state_expect_einval(vm, &state);
 
-	/*
-	 * TODO: When SVM support is added for KVM_SET_NESTED_STATE
-	 *       add tests here to support it like VMX.
-	 */
-	if (entry->ecx & CPUID_VMX)
-		test_vmx_nested_state(vm);
+	test_vmx_nested_state(vm);
 
 	kvm_vm_free(vm);
 	return 0;
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 2/3] selftests: kvm: consolidate VMX support checks
  2019-10-08 19:43 [PATCH 0/3] selftests: kvm: improvements to VMX support check Vitaly Kuznetsov
  2019-10-08 19:43 ` [PATCH 1/3] selftests: kvm: vmx_set_nested_state_test: don't check for VMX support twice Vitaly Kuznetsov
@ 2019-10-08 19:43 ` Vitaly Kuznetsov
  2019-10-08 19:43 ` [PATCH 3/3] selftests: kvm: vmx_dirty_log_test: skip the test when VMX is not supported Vitaly Kuznetsov
  2019-10-09  8:07 ` [PATCH 0/3] selftests: kvm: improvements to VMX support check Paolo Bonzini
  3 siblings, 0 replies; 5+ messages in thread
From: Vitaly Kuznetsov @ 2019-10-08 19:43 UTC (permalink / raw)
  To: kvm; +Cc: linux-kernel, Paolo Bonzini, Sean Christopherson, Jim Mattson

vmx_* tests require VMX and three of them implement the same check. Move it
to vmx library.

Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
---
 tools/testing/selftests/kvm/include/x86_64/vmx.h       |  2 ++
 tools/testing/selftests/kvm/lib/x86_64/vmx.c           | 10 ++++++++++
 .../selftests/kvm/x86_64/vmx_close_while_nested_test.c |  6 +-----
 .../selftests/kvm/x86_64/vmx_set_nested_state_test.c   |  6 +-----
 .../testing/selftests/kvm/x86_64/vmx_tsc_adjust_test.c |  6 +-----
 5 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/tools/testing/selftests/kvm/include/x86_64/vmx.h b/tools/testing/selftests/kvm/include/x86_64/vmx.h
index 6ae5a47fe067..f52e0ba84fed 100644
--- a/tools/testing/selftests/kvm/include/x86_64/vmx.h
+++ b/tools/testing/selftests/kvm/include/x86_64/vmx.h
@@ -580,6 +580,8 @@ bool prepare_for_vmx_operation(struct vmx_pages *vmx);
 void prepare_vmcs(struct vmx_pages *vmx, void *guest_rip, void *guest_rsp);
 bool load_vmcs(struct vmx_pages *vmx);
 
+void nested_vmx_check_supported(void);
+
 void nested_pg_map(struct vmx_pages *vmx, struct kvm_vm *vm,
 		   uint64_t nested_paddr, uint64_t paddr, uint32_t eptp_memslot);
 void nested_map(struct vmx_pages *vmx, struct kvm_vm *vm,
diff --git a/tools/testing/selftests/kvm/lib/x86_64/vmx.c b/tools/testing/selftests/kvm/lib/x86_64/vmx.c
index fab8f6b0bf52..f6ec97b7eaef 100644
--- a/tools/testing/selftests/kvm/lib/x86_64/vmx.c
+++ b/tools/testing/selftests/kvm/lib/x86_64/vmx.c
@@ -376,6 +376,16 @@ void prepare_vmcs(struct vmx_pages *vmx, void *guest_rip, void *guest_rsp)
 	init_vmcs_guest_state(guest_rip, guest_rsp);
 }
 
+void nested_vmx_check_supported(void)
+{
+	struct kvm_cpuid_entry2 *entry = kvm_get_supported_cpuid_entry(1);
+
+	if (!(entry->ecx & CPUID_VMX)) {
+		fprintf(stderr, "nested VMX not enabled, skipping test\n");
+		exit(KSFT_SKIP);
+	}
+}
+
 void nested_pg_map(struct vmx_pages *vmx, struct kvm_vm *vm,
 	 	   uint64_t nested_paddr, uint64_t paddr, uint32_t eptp_memslot)
 {
diff --git a/tools/testing/selftests/kvm/x86_64/vmx_close_while_nested_test.c b/tools/testing/selftests/kvm/x86_64/vmx_close_while_nested_test.c
index 3b0ffe01dacd..5dfb53546a26 100644
--- a/tools/testing/selftests/kvm/x86_64/vmx_close_while_nested_test.c
+++ b/tools/testing/selftests/kvm/x86_64/vmx_close_while_nested_test.c
@@ -53,12 +53,8 @@ static void l1_guest_code(struct vmx_pages *vmx_pages)
 int main(int argc, char *argv[])
 {
 	vm_vaddr_t vmx_pages_gva;
-	struct kvm_cpuid_entry2 *entry = kvm_get_supported_cpuid_entry(1);
 
-	if (!(entry->ecx & CPUID_VMX)) {
-		fprintf(stderr, "nested VMX not enabled, skipping test\n");
-		exit(KSFT_SKIP);
-	}
+	nested_vmx_check_supported();
 
 	vm = vm_create_default(VCPU_ID, 0, (void *) l1_guest_code);
 	vcpu_set_cpuid(vm, VCPU_ID, kvm_get_supported_cpuid());
diff --git a/tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c b/tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c
index a6d85614ae4d..9ef7fab39d48 100644
--- a/tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c
+++ b/tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c
@@ -224,7 +224,6 @@ int main(int argc, char *argv[])
 {
 	struct kvm_vm *vm;
 	struct kvm_nested_state state;
-	struct kvm_cpuid_entry2 *entry = kvm_get_supported_cpuid_entry(1);
 
 	have_evmcs = kvm_check_cap(KVM_CAP_HYPERV_ENLIGHTENED_VMCS);
 
@@ -237,10 +236,7 @@ int main(int argc, char *argv[])
 	 * AMD currently does not implement set_nested_state, so for now we
 	 * just early out.
 	 */
-	if (!(entry->ecx & CPUID_VMX)) {
-		fprintf(stderr, "nested VMX not enabled, skipping test\n");
-		exit(KSFT_SKIP);
-	}
+	nested_vmx_check_supported();
 
 	vm = vm_create_default(VCPU_ID, 0, 0);
 
diff --git a/tools/testing/selftests/kvm/x86_64/vmx_tsc_adjust_test.c b/tools/testing/selftests/kvm/x86_64/vmx_tsc_adjust_test.c
index f36c10eba71e..5590fd2bcf87 100644
--- a/tools/testing/selftests/kvm/x86_64/vmx_tsc_adjust_test.c
+++ b/tools/testing/selftests/kvm/x86_64/vmx_tsc_adjust_test.c
@@ -128,12 +128,8 @@ static void report(int64_t val)
 int main(int argc, char *argv[])
 {
 	vm_vaddr_t vmx_pages_gva;
-	struct kvm_cpuid_entry2 *entry = kvm_get_supported_cpuid_entry(1);
 
-	if (!(entry->ecx & CPUID_VMX)) {
-		fprintf(stderr, "nested VMX not enabled, skipping test\n");
-		exit(KSFT_SKIP);
-	}
+	nested_vmx_check_supported();
 
 	vm = vm_create_default(VCPU_ID, 0, (void *) l1_guest_code);
 	vcpu_set_cpuid(vm, VCPU_ID, kvm_get_supported_cpuid());
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 3/3] selftests: kvm: vmx_dirty_log_test: skip the test when VMX is not supported
  2019-10-08 19:43 [PATCH 0/3] selftests: kvm: improvements to VMX support check Vitaly Kuznetsov
  2019-10-08 19:43 ` [PATCH 1/3] selftests: kvm: vmx_set_nested_state_test: don't check for VMX support twice Vitaly Kuznetsov
  2019-10-08 19:43 ` [PATCH 2/3] selftests: kvm: consolidate VMX support checks Vitaly Kuznetsov
@ 2019-10-08 19:43 ` Vitaly Kuznetsov
  2019-10-09  8:07 ` [PATCH 0/3] selftests: kvm: improvements to VMX support check Paolo Bonzini
  3 siblings, 0 replies; 5+ messages in thread
From: Vitaly Kuznetsov @ 2019-10-08 19:43 UTC (permalink / raw)
  To: kvm; +Cc: linux-kernel, Paolo Bonzini, Sean Christopherson, Jim Mattson

vmx_dirty_log_test fails on AMD and this is no surprise as it is VMX
specific. Bail early when nested VMX is unsupported.

Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
---
 tools/testing/selftests/kvm/x86_64/vmx_dirty_log_test.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tools/testing/selftests/kvm/x86_64/vmx_dirty_log_test.c b/tools/testing/selftests/kvm/x86_64/vmx_dirty_log_test.c
index 0bca1cfe2c1e..a223a6401258 100644
--- a/tools/testing/selftests/kvm/x86_64/vmx_dirty_log_test.c
+++ b/tools/testing/selftests/kvm/x86_64/vmx_dirty_log_test.c
@@ -78,6 +78,8 @@ int main(int argc, char *argv[])
 	struct ucall uc;
 	bool done = false;
 
+	nested_vmx_check_supported();
+
 	/* Create VM */
 	vm = vm_create_default(VCPU_ID, 0, l1_guest_code);
 	vcpu_set_cpuid(vm, VCPU_ID, kvm_get_supported_cpuid());
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 0/3] selftests: kvm: improvements to VMX support check
  2019-10-08 19:43 [PATCH 0/3] selftests: kvm: improvements to VMX support check Vitaly Kuznetsov
                   ` (2 preceding siblings ...)
  2019-10-08 19:43 ` [PATCH 3/3] selftests: kvm: vmx_dirty_log_test: skip the test when VMX is not supported Vitaly Kuznetsov
@ 2019-10-09  8:07 ` Paolo Bonzini
  3 siblings, 0 replies; 5+ messages in thread
From: Paolo Bonzini @ 2019-10-09  8:07 UTC (permalink / raw)
  To: Vitaly Kuznetsov, kvm; +Cc: linux-kernel, Sean Christopherson, Jim Mattson

On 08/10/19 21:43, Vitaly Kuznetsov wrote:
> vmx_dirty_log_test fails on AMD and this is no surprise as it is VMX
> specific. Consolidate checks from other VMX tests into a library routine
> and add a check to skip the test when !VMX.
> 
> Vitaly Kuznetsov (3):
>   selftests: kvm: vmx_set_nested_state_test: don't check for VMX support
>     twice
>   selftests: kvm: consolidate VMX support checks
>   selftests: kvm: vmx_dirty_log_test: skip the test when VMX is not
>     supported
> 
>  tools/testing/selftests/kvm/include/x86_64/vmx.h    |  2 ++
>  tools/testing/selftests/kvm/lib/x86_64/vmx.c        | 10 ++++++++++
>  .../kvm/x86_64/vmx_close_while_nested_test.c        |  6 +-----
>  .../selftests/kvm/x86_64/vmx_dirty_log_test.c       |  2 ++
>  .../kvm/x86_64/vmx_set_nested_state_test.c          | 13 ++-----------
>  .../selftests/kvm/x86_64/vmx_tsc_adjust_test.c      |  6 +-----
>  6 files changed, 18 insertions(+), 21 deletions(-)
> 

Queued, thanks.

Paolo

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2019-10-09  8:07 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-08 19:43 [PATCH 0/3] selftests: kvm: improvements to VMX support check Vitaly Kuznetsov
2019-10-08 19:43 ` [PATCH 1/3] selftests: kvm: vmx_set_nested_state_test: don't check for VMX support twice Vitaly Kuznetsov
2019-10-08 19:43 ` [PATCH 2/3] selftests: kvm: consolidate VMX support checks Vitaly Kuznetsov
2019-10-08 19:43 ` [PATCH 3/3] selftests: kvm: vmx_dirty_log_test: skip the test when VMX is not supported Vitaly Kuznetsov
2019-10-09  8:07 ` [PATCH 0/3] selftests: kvm: improvements to VMX support check Paolo Bonzini

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).