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

Re: [Xen-devel] [PATCH v3 11/11] hvm/hpet: handle 1st period special



At 16:19 -0400 on 01 May (1398957542), Don Slutz wrote:
> On 05/01/14 06:31, Tim Deegan wrote:
> > Couldn't it be fixed more simply by detecting comparator values in the
> > past in hpet_get_comparator()?
> 
> This statement only works using 64-bit arithmetic for the main counter never
>                                           63
> changing by more then 2     .   (Which is a boundary case that should not
> happen in my life time.)
> 
> 
> Without patch #11 (this patch) and without patch #8 (Use signed divide...)
> and adding:
> 
> 
> commit 8c450bed530b13c3f3d18b9dafb3d1b1d69ac1f2
> Author: Don Slutz <dslutz@xxxxxxxxxxx>
> Date:   Thu May 1 14:02:47 2014 -0400
> 
>      hvm/hpet: Detect comparator values in the past
> 
>      Signed-off-by: Don Slutz <dslutz@xxxxxxxxxxx>
> 
> diff --git a/xen/arch/x86/hvm/hpet.c b/xen/arch/x86/hvm/hpet.c
> index 4e4da20..d93dd69 100644
> --- a/xen/arch/x86/hvm/hpet.c
> +++ b/xen/arch/x86/hvm/hpet.c
> @@ -98,10 +98,12 @@ static uint64_t hpet_get_comparator(HPETState *h, 
> unsigned int tn,
>           uint64_t period = h->hpet.period[tn];
>           if (period)
>           {
> -            elapsed = hpet_read_maincounter(h, guest_time) +
> -                period - comparator;
> -            comparator += (elapsed / period) * period;
> -            h->hpet.comparator64[tn] = comparator;
> +            elapsed = hpet_read_maincounter(h, guest_time) - comparator;
> +            if ( (int64_t)elapsed >= 0 )
> +            {
> +                comparator += ((elapsed + period) / period) * period;
> +                h->hpet.comparator64[tn] = comparator;
> +            }
>           }
>       }
> 
> 
> 
> Which I think was what you mean.
> 
> It looks to be "ok" (ignoring the boundary case).  So should
> I send it as v4?

Yes, that looks good.  You can add 
Acked-by: Tim Deegan <tim@xxxxxxx>
to it too.

Cheers,

Tim.

_______________________________________________
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®.