Re: [PATCH 1/7] svm: Add test for selective cr0 intercept

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

 



 On 09/10/2010 06:34 PM, Joerg Roedel wrote:
This patch adds a test to check if the selective cr0
intercept emulation of the kvm svm emulation works.

Signed-off-by: Joerg Roedel<joerg.roedel@xxxxxxx>
---
  x86/svm.c |   37 ++++++++++++++++++++++++++++++++++++-
  1 files changed, 36 insertions(+), 1 deletions(-)

diff --git a/x86/svm.c b/x86/svm.c
index 2f1c900..e65360e 100644
--- a/x86/svm.c
+++ b/x86/svm.c
@@ -357,6 +357,40 @@ static bool check_asid_zero(struct test *test)
      return test->vmcb->control.exit_code == SVM_EXIT_ERR;
  }

+static void sel_cr0_prepare(struct test *test)
+{
+    vmcb_ident(test->vmcb);
+    test->vmcb->control.intercept |= (1ULL<<  INTERCEPT_SELECTIVE_CR0);
+}
+
+static bool sel_cr0_finished(struct test *test)
+{
+	return true;
+}

Coding style - kvm-unit-tests uses the qemu style. Please drop the tabs from new code.

+
+static void sel_cr0_test(struct test *test)
+{
+	unsigned long cr0;
+
+	/* read cr0, clear CD, and write back */

set CD.  Better to ^= it to be sure to trigger.

+	cr0  = read_cr0();
+	cr0 |= (1UL<<  30);
+	write_cr0(cr0);

How about a test that ^= TS to see that we don't intercept unnecessarily?

+
+	/*
+	 * If we are here the test failed, not sure what to do now because we
+	 * are not in guest-mode anymore so we can't trigger an intercept.
+	 * Trigger a tripple-fault for now.
+	 */
+	printf("sel_cr0 test failed. Can not recover from this - exiting\n");
+	exit(1);

Don't understand - we're still in guest mode (only running very slowly...). All you have to do is fall off the end here, and you'll exit with VMMCALL.


--
error compiling committee.c: too many arguments to function

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[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