]> git.proxmox.com Git - qemu.git/commitdiff
kvm: x86: Do not leave halt if interrupts are disabled
authorJan Kiszka <jan.kiszka@siemens.com>
Tue, 15 Mar 2011 11:26:19 +0000 (12:26 +0100)
committerMarcelo Tosatti <mtosatti@redhat.com>
Wed, 16 Mar 2011 20:11:05 +0000 (17:11 -0300)
When an external interrupt is pending but IF is cleared, we must not
leave the halt state prematurely.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
target-i386/kvm.c

index f7995bd877799adb0e9844cd3c3fb805f8b0f480..3a07fceb2a97f7a7b2a1b9fb3f1f12e4d7b4c9b5 100644 (file)
@@ -1590,7 +1590,9 @@ int kvm_arch_process_async_events(CPUState *env)
         return 0;
     }
 
-    if (env->interrupt_request & (CPU_INTERRUPT_HARD | CPU_INTERRUPT_NMI)) {
+    if (((env->interrupt_request & CPU_INTERRUPT_HARD) &&
+         (env->eflags & IF_MASK)) ||
+        (env->interrupt_request & CPU_INTERRUPT_NMI)) {
         env->halted = 0;
     }
     if (env->interrupt_request & CPU_INTERRUPT_INIT) {