Stefano Stabellini
2013-Feb-18 16:02 UTC
[PATCH v2 4/4] xen/arm: don''t set the internal Xen timer if virt_timer is masked
Changes in v2: - do not disable interrupts in virt_timer_save because they are already disabled during the entirety of ctxt_switch_from by a previous patch. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> --- xen/arch/arm/vtimer.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/xen/arch/arm/vtimer.c b/xen/arch/arm/vtimer.c index fec363b..5d650d7 100644 --- a/xen/arch/arm/vtimer.c +++ b/xen/arch/arm/vtimer.c @@ -87,7 +87,8 @@ int virt_timer_save(struct vcpu *v) v->arch.virt_timer.ctl = READ_CP32(CNTV_CTL); WRITE_CP32(v->arch.virt_timer.ctl & ~CNTx_CTL_ENABLE, CNTV_CTL); v->arch.virt_timer.cval = READ_CP64(CNTV_CVAL); - 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)); -- 1.7.2.5
Ian Campbell
2013-Apr-10 15:23 UTC
Re: [PATCH v2 4/4] xen/arm: don''t set the internal Xen timer if virt_timer is masked
On Mon, 2013-02-18 at 16:02 +0000, Stefano Stabellini wrote:> Changes in v2: > - do not disable interrupts in virt_timer_save because they are already > disabled during the entirety of ctxt_switch_from by a previous patch. > > Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>Acked + applied. I have to fixup the context due to the change to 64-but register names.> --- > xen/arch/arm/vtimer.c | 3 ++- > 1 files changed, 2 insertions(+), 1 deletions(-) > > diff --git a/xen/arch/arm/vtimer.c b/xen/arch/arm/vtimer.c > index fec363b..5d650d7 100644 > --- a/xen/arch/arm/vtimer.c > +++ b/xen/arch/arm/vtimer.c > @@ -87,7 +87,8 @@ int virt_timer_save(struct vcpu *v) > v->arch.virt_timer.ctl = READ_CP32(CNTV_CTL); > WRITE_CP32(v->arch.virt_timer.ctl & ~CNTx_CTL_ENABLE, CNTV_CTL); > v->arch.virt_timer.cval = READ_CP64(CNTV_CVAL); > - 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));