]> Git Repo - qemu.git/commitdiff
x86: svm: Always clear event_inj on vmexit
authorJan Kiszka <[email protected]>
Wed, 2 Jun 2010 06:49:14 +0000 (08:49 +0200)
committerAurelien Jarno <[email protected]>
Wed, 30 Jun 2010 18:59:53 +0000 (20:59 +0200)
We currently only clear SVM_EVTINJ_VALID after successful interrupt
delivery. This apparently does not match real hardware which clears the
whole event_inj field on every vmexit, including unsuccessful interrupt
delivery.

Reported-by: Erik van der Kouwe <[email protected]>
Signed-off-by: Jan Kiszka <[email protected]>
Signed-off-by: Aurelien Jarno <[email protected]>
target-i386/op_helper.c

index c1256f4abd4da64b02b7ed1f63165dc0b95a2cf4..71331c6c3335bf422cb7626fa390c978b412a86f 100644 (file)
@@ -5388,6 +5388,7 @@ void helper_vmexit(uint32_t exit_code, uint64_t exit_info_1)
              ldl_phys(env->vm_vmcb + offsetof(struct vmcb, control.event_inj)));
     stl_phys(env->vm_vmcb + offsetof(struct vmcb, control.exit_int_info_err),
              ldl_phys(env->vm_vmcb + offsetof(struct vmcb, control.event_inj_err)));
+    stl_phys(env->vm_vmcb + offsetof(struct vmcb, control.event_inj), 0);
 
     env->hflags2 &= ~HF2_GIF_MASK;
     /* FIXME: Resets the current ASID register to zero (host ASID). */
This page took 0.024481 seconds and 4 git commands to generate.