KVM: fix polling for guest halt continued even if disable it
authorWanpeng Li <wanpeng.li@hotmail.com>
Mon, 14 Sep 2015 09:38:51 +0000 (17:38 +0800)
committerPaolo Bonzini <pbonzini@redhat.com>
Mon, 14 Sep 2015 15:07:04 +0000 (17:07 +0200)
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>
virt/kvm/kvm_main.c

index a25a731..eb4c9d2 100644 (file)
@@ -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);
 }