xen/arm: don't set the internal Xen timer if virt_timer is masked
authorStefano Stabellini <stefano.stabellini@eu.citrix.com>
Mon, 18 Feb 2013 16:02:29 +0000 (16:02 +0000)
committerIan Campbell <ian.campbell@citrix.com>
Wed, 10 Apr 2013 15:08:36 +0000 (16:08 +0100)
Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
xen/arch/arm/vtimer.c

index dfe3a3ef8df9116ca859ec213815c1956765d0e8..a68f66272a3dcf7a0d51793bfc9c1fd260ebf5ea 100644 (file)
@@ -80,7 +80,8 @@ int virt_timer_save(struct vcpu *v)
     v->arch.virt_timer.ctl = READ_SYSREG32(CNTV_CTL_EL0);
     WRITE_SYSREG32(v->arch.virt_timer.ctl & ~CNTx_CTL_ENABLE, CNTV_CTL_EL0);
     v->arch.virt_timer.cval = READ_SYSREG64(CNTV_CVAL_EL0);
-    if ( v->arch.virt_timer.ctl & CNTx_CTL_ENABLE )
+    if ( (v->arch.virt_timer.ctl & CNTx_CTL_ENABLE) &&
+         !(v->arch.virt_timer.ctl & CNTx_CTL_MASK))
     {
         set_timer(&v->arch.virt_timer.timer, ticks_to_ns(v->arch.virt_timer.cval +
                   v->arch.virt_timer.offset - boot_count));