[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v4 11/12] xen/arm: run the vtimer Xen timers on the pcpu the vcpu is running on



On Fri, 2013-04-26 at 16:28 +0100, Stefano Stabellini wrote:
> The Xen physical timer emulator and virtual timer driver use two
> internal Xen timers: initialize them on the pcpu the vcpu is running on,
> rather than the processor that it's creating the vcpu.
> 
> On vcpu restore migrate the phys_timer and the virt_timer to the
> pcpu the vcpu is running on.
> 
> Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>

In so far as I understand Xen's timer architecture:
Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx>

> Changes in v4:
> - migrate Xen timers on virt_timer_restore.
> ---
>  xen/arch/arm/vtimer.c |    6 ++++--
>  1 files changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/xen/arch/arm/vtimer.c b/xen/arch/arm/vtimer.c
> index 1cb365e..393aac3 100644
> --- a/xen/arch/arm/vtimer.c
> +++ b/xen/arch/arm/vtimer.c
> @@ -48,7 +48,7 @@ int vcpu_vtimer_init(struct vcpu *v)
>  {
>      struct vtimer *t = &v->arch.phys_timer;
>  
> -    init_timer(&t->timer, phys_timer_expired, t, smp_processor_id());
> +    init_timer(&t->timer, phys_timer_expired, t, v->processor);
>      t->ctl = 0;
>      t->offset = NOW();
>      t->cval = NOW();
> @@ -56,7 +56,7 @@ int vcpu_vtimer_init(struct vcpu *v)
>      t->v = v;
>  
>      t = &v->arch.virt_timer;
> -    init_timer(&t->timer, virt_timer_expired, t, smp_processor_id());
> +    init_timer(&t->timer, virt_timer_expired, t, v->processor);
>      t->ctl = 0;
>      t->offset = READ_SYSREG64(CNTVCT_EL0) + READ_SYSREG64(CNTVOFF_EL2);
>      t->cval = 0;
> @@ -95,6 +95,8 @@ int virt_timer_restore(struct vcpu *v)
>          return 0;
>  
>      stop_timer(&v->arch.virt_timer.timer);
> +    migrate_timer(&v->arch.virt_timer.timer, v->processor);
> +    migrate_timer(&v->arch.phys_timer.timer, v->processor);
>  
>      WRITE_SYSREG64(v->arch.virt_timer.offset, CNTVOFF_EL2);
>      WRITE_SYSREG64(v->arch.virt_timer.cval, CNTV_CVAL_EL0);



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.