diff options
author | Gleb Natapov <gleb@redhat.com> | 2009-03-23 12:12:11 +0200 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2009-03-24 12:11:58 +0200 |
commit | f72173ad999adfb07a8101c923d7b855a77655e6 (patch) | |
tree | c6a46f184049e28da611ddeaf73ae14dd7e5b2b4 /virt | |
parent | e7a04f4c2e480a0cf1db452065ebebcc2dcb7fb8 (diff) |
KVM: Fix interrupt unhalting a vcpu when it shouldn't
kvm_vcpu_block() unhalts vpu on an interrupt/timer without checking
if interrupt window is actually opened.
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'virt')
-rw-r--r-- | virt/kvm/kvm_main.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 273490fd3d68..8aa3b95c5d70 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -1612,7 +1612,8 @@ void kvm_vcpu_block(struct kvm_vcpu *vcpu) for (;;) { prepare_to_wait(&vcpu->wq, &wait, TASK_INTERRUPTIBLE); - if (kvm_cpu_has_interrupt(vcpu) || + if ((kvm_arch_interrupt_allowed(vcpu) && + kvm_cpu_has_interrupt(vcpu)) || kvm_arch_vcpu_runnable(vcpu)) { set_bit(KVM_REQ_UNHALT, &vcpu->requests); break; |