summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorNir Weiner <nir.weiner@oracle.com>2019-01-27 12:17:14 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2019-02-20 22:48:50 +0100
commit7fa08e71b4a0591a518814fa78b32e124f90d587 (patch)
treef8b66306b476c5b6e833bceef8a0434bc9116652 /arch
parent8ab3c471eef20925bf64c6d4fa46e88cdb4e86d5 (diff)
downloadlinux-7fa08e71b4a0591a518814fa78b32e124f90d587.tar.bz2
KVM: grow_halt_poll_ns() should never shrink vCPU halt_poll_ns
grow_halt_poll_ns() have a strange behavior in case (halt_poll_ns_grow == 0) && (vcpu->halt_poll_ns != 0). In this case, vcpu->halt_pol_ns will be set to zero. That results in shrinking instead of growing. Fix issue by changing grow_halt_poll_ns() to not modify vcpu->halt_poll_ns in case halt_poll_ns_grow is zero Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> Reviewed-by: Liran Alon <liran.alon@oracle.com> Signed-off-by: Nir Weiner <nir.weiner@oracle.com> Suggested-by: Liran Alon <liran.alon@oracle.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/kvm/book3s_hv.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
index 5a066fc299e1..e316a2ddb70b 100644
--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -3631,8 +3631,11 @@ static void kvmppc_wait_for_exec(struct kvmppc_vcore *vc,
static void grow_halt_poll_ns(struct kvmppc_vcore *vc)
{
+ if (!halt_poll_ns_grow)
+ return;
+
/* 10us base */
- if (vc->halt_poll_ns == 0 && halt_poll_ns_grow)
+ if (vc->halt_poll_ns == 0)
vc->halt_poll_ns = 10000;
else
vc->halt_poll_ns *= halt_poll_ns_grow;