From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chao Gao Subject: [kvm-unit-tests PATCH] kvm-unit-tests: vmx: add a test for injecting events to halted L2 Date: Sun, 11 Feb 2018 10:06:47 +0800 Message-ID: <1518314807-31821-1-git-send-email-chao.gao@intel.com> Cc: Chao Gao , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , Paolo Bonzini , Liran Alon To: kvm@vger.kernel.org Return-path: Received: from mga04.intel.com ([192.55.52.120]:46719 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752171AbeBKCEo (ORCPT ); Sat, 10 Feb 2018 21:04:44 -0500 Sender: kvm-owner@vger.kernel.org List-ID: 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 Signed-off-by: Chao Gao --- 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