[Devel] [PATCH RHEL7 COMMIT] ms/kvm/x86: Hyper-V fix SynIC timer disabling condition

Konstantin Khorenko khorenko at virtuozzo.com
Tue Feb 16 01:50:27 PST 2016


The commit is pushed to "branch-rh7-3.10.0-327.4.5.vz7.11.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh7-3.10.0-327.4.5.vz7.11.2
------>
commit 284885a4a518194e9a53705fd4a179207a54e65d
Author: Andrey Smetanin <asmetanin at virtuozzo.com>
Date:   Tue Feb 16 13:50:27 2016 +0400

    ms/kvm/x86: Hyper-V fix SynIC timer disabling condition
    
    Hypervisor Function Specification(HFS) doesn't require
    to disable SynIC timer at timer config write if timer->count = 0.
    
    So drop this check, this allow to load timers MSR's
    during migration restore, because config are set before count
    in QEMU side.
    
    Also fix condition according to HFS doc(15.3.1):
    "It is not permitted to set the SINTx field to zero for an
    enabled timer. If attempted, the timer will be
    marked disabled (that is, bit 0 cleared) immediately."
    
    ms commit - 23a3b201fd187f1e7af573b3794c3c5ebf7d2c06.
    
    Signed-off-by: Andrey Smetanin <asmetanin at virtuozzo.com>
    
    Reviewed-by: Roman Kagan <rkagan at virtuozzo.com>
    CC: Gleb Natapov <gleb at kernel.org>
    CC: Paolo Bonzini <pbonzini at redhat.com>
    CC: Roman Kagan <rkagan at virtuozzo.com>
    CC: Denis V. Lunev <den at openvz.org>
    CC: qemu-devel at nongnu.org
    Signed-off-by: Paolo Bonzini <pbonzini at redhat.com>
---
 arch/x86/kvm/hyperv.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/kvm/hyperv.c b/arch/x86/kvm/hyperv.c
index b121fca..119e3b2 100644
--- a/arch/x86/kvm/hyperv.c
+++ b/arch/x86/kvm/hyperv.c
@@ -474,7 +474,7 @@ static int stimer_start(struct kvm_vcpu_hv_stimer *stimer)
 static int stimer_set_config(struct kvm_vcpu_hv_stimer *stimer, u64 config,
 			     bool host)
 {
-	if (stimer->count == 0 || HV_STIMER_SINT(config) == 0)
+	if ((stimer->config & HV_STIMER_ENABLE) && HV_STIMER_SINT(config) == 0)
 		config &= ~HV_STIMER_ENABLE;
 	stimer->config = config;
 	stimer_cleanup(stimer);


More information about the Devel mailing list