summaryrefslogtreecommitdiffstats
path: root/virt
diff options
context:
space:
mode:
authorWanpeng Li <wanpeng.li@hotmail.com>2015-09-14 17:38:51 +0800
committerPaolo Bonzini <pbonzini@redhat.com>2015-09-14 17:07:04 +0200
commitedb9272f35d8bc97c86101a13f67d0ba16f3eecc (patch)
tree02b2eace7cc485ebdfe2363d8a53940bf6a9c31a /virt
parent6ff33f3902c3b1c5d0db6b1e2c70b6d76fba357f (diff)
downloadlinux-edb9272f35d8bc97c86101a13f67d0ba16f3eecc.tar.gz
linux-edb9272f35d8bc97c86101a13f67d0ba16f3eecc.tar.bz2
linux-edb9272f35d8bc97c86101a13f67d0ba16f3eecc.zip
KVM: fix polling for guest halt continued even if disable it
If there is already some polling ongoing, it's impossible to disable the polling, since as soon as somebody sets halt_poll_ns to 0, polling will never stop, as grow and shrink are only handled if halt_poll_ns is != 0. This patch fix it by reset vcpu->halt_poll_ns in order to stop polling when polling is disabled. Reported-by: Christian Borntraeger <borntraeger@de.ibm.com> Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'virt')
-rw-r--r--virt/kvm/kvm_main.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index a25a73147f71..eb4c9d2849dc 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -2043,7 +2043,8 @@ out:
else if (vcpu->halt_poll_ns < halt_poll_ns &&
block_ns < halt_poll_ns)
grow_halt_poll_ns(vcpu);
- }
+ } else
+ vcpu->halt_poll_ns = 0;
trace_kvm_vcpu_wakeup(block_ns, waited);
}