diff options
author | Wanpeng Li <wanpeng.li@hotmail.com> | 2015-09-14 05:38:51 -0400 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2015-09-14 11:07:04 -0400 |
commit | edb9272f35d8bc97c86101a13f67d0ba16f3eecc (patch) | |
tree | 02b2eace7cc485ebdfe2363d8a53940bf6a9c31a | |
parent | 6ff33f3902c3b1c5d0db6b1e2c70b6d76fba357f (diff) |
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>
-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 a25a73147f71..eb4c9d2849dc 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c | |||
@@ -2043,7 +2043,8 @@ out: | |||
2043 | else if (vcpu->halt_poll_ns < halt_poll_ns && | 2043 | else if (vcpu->halt_poll_ns < halt_poll_ns && |
2044 | block_ns < halt_poll_ns) | 2044 | block_ns < halt_poll_ns) |
2045 | grow_halt_poll_ns(vcpu); | 2045 | grow_halt_poll_ns(vcpu); |
2046 | } | 2046 | } else |
2047 | vcpu->halt_poll_ns = 0; | ||
2047 | 2048 | ||
2048 | trace_kvm_vcpu_wakeup(block_ns, waited); | 2049 | trace_kvm_vcpu_wakeup(block_ns, waited); |
2049 | } | 2050 | } |