On 11/02/2018 10:01, Liran Alon wrote: > > ----- chao.gao@xxxxxxxxx wrote: > >> 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@xxxxxxxxxx> >> Signed-off-by: Chao Gao <chao.gao@xxxxxxxxx> >> --- >> 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); > > I would specify interrupt-type explicitly rather than implicitly. > Meaning passing here: > (TIMER_VECTOR | > (VMX_INTR_TYPE_EXT_INTR << INTR_INFO_INTR_TYPE_SHIFT) | > INTR_INFO_VALID_MASK) I'll do when applying. Thanks! Paolo >> + break; >> } >> vmx_inc_test_stage(); >> vmcs_write(GUEST_RIP, guest_rip + insn_len); >> -- >> 1.9.1 > > Besides small comment above, looks good to me. > Reviewed-by: Liran Alon <liran.alon@xxxxxxxxxx> >