kvm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [kvm-unit-tests PATCH] kvm-unit-tests: vmx: add a test for injecting events to halted L2
@ 2018-02-11  2:06 Chao Gao
  0 siblings, 0 replies; only message in thread
From: Chao Gao @ 2018-02-11  2:06 UTC (permalink / raw)
  To: kvm; +Cc: Chao Gao, Radim Krčmář, Paolo Bonzini, Liran Alon

This patch leverages existing "interrupt" tests. What the patch does is L1
puts L2 in halt state and injects an event to L2. Then check a flag to
identify whether event injection succeeds or not.

Cc: Liran Alon <liran.alon@oracle.com>
Signed-off-by: Chao Gao <chao.gao@intel.com>
---
 x86/vmx_tests.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/x86/vmx_tests.c b/x86/vmx_tests.c
index 0c3b5a7..3c46d3a 100644
--- a/x86/vmx_tests.c
+++ b/x86/vmx_tests.c
@@ -1584,6 +1584,12 @@ static void interrupt_main(void)
 	for (loops = 0; loops < 10000000 && !timer_fired; loops++)
 		asm volatile ("nop");
 	report("running a guest with interrupt acknowledgement set", timer_fired);
+
+	apic_write(APIC_TMICT, 0);
+	irq_enable();
+	timer_fired = false;
+	vmcall();
+	report("Inject an event to a halted guest", timer_fired);
 }
 
 static int interrupt_exit_handler(void)
@@ -1615,6 +1621,12 @@ static int interrupt_exit_handler(void)
 		case 6:
 			vmcs_write(GUEST_ACTV_STATE, ACTV_HLT);
 			break;
+
+		case 8:
+			vmcs_write(GUEST_ACTV_STATE, ACTV_HLT);
+			vmcs_write(ENT_INTR_INFO,
+				   TIMER_VECTOR | INTR_INFO_VALID_MASK);
+			break;
 		}
 		vmx_inc_test_stage();
 		vmcs_write(GUEST_RIP, guest_rip + insn_len);
-- 
1.9.1

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2018-02-11  2:04 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-02-11  2:06 [kvm-unit-tests PATCH] kvm-unit-tests: vmx: add a test for injecting events to halted L2 Chao Gao

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).