[kvm-unit-tests PATCH v3 20/27] svm: move v2 tests run into test_run

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

 



Move v2 tests running into test_run which allows to have code that runs the
test in one place and allows to run v2 tests on a non 0 vCPU if needed.

Signed-off-by: Maxim Levitsky <mlevitsk@xxxxxxxxxx>
---
 x86/svm.c | 33 +++++++++++++++++++--------------
 1 file changed, 19 insertions(+), 14 deletions(-)

diff --git a/x86/svm.c b/x86/svm.c
index 220bce66..2ab553a5 100644
--- a/x86/svm.c
+++ b/x86/svm.c
@@ -106,6 +106,13 @@ int svm_vmrun(void)
 
 static noinline void test_run(struct svm_test *test)
 {
+	if (test->v2) {
+		vmcb_ident(vmcb);
+		v2_test = test;
+		test->v2();
+		return;
+	}
+
 	cli();
 	vmcb_ident(vmcb);
 
@@ -196,21 +203,19 @@ int run_svm_tests(int ac, char **av, struct svm_test *svm_tests)
 			continue;
 		if (svm_tests[i].supported && !svm_tests[i].supported())
 			continue;
-		if (svm_tests[i].v2 == NULL) {
-			if (svm_tests[i].on_vcpu) {
-				if (cpu_count() <= svm_tests[i].on_vcpu)
-					continue;
-				on_cpu_async(svm_tests[i].on_vcpu, (void *)test_run, &svm_tests[i]);
-				while (!svm_tests[i].on_vcpu_done)
-					cpu_relax();
-			}
-			else
-				test_run(&svm_tests[i]);
-		} else {
-			vmcb_ident(vmcb);
-			v2_test = &(svm_tests[i]);
-			svm_tests[i].v2();
+
+		if (!svm_tests[i].on_vcpu) {
+			test_run(&svm_tests[i]);
+			continue;
 		}
+
+		if (cpu_count() <= svm_tests[i].on_vcpu)
+			continue;
+
+		on_cpu_async(svm_tests[i].on_vcpu, (void *)test_run, &svm_tests[i]);
+
+		while (!svm_tests[i].on_vcpu_done)
+			cpu_relax();
 	}
 
 	if (!matched)
-- 
2.34.3




[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