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

Re: [Xen-devel] [PATCH v3 09/11] hvm/hpet: comparator can only change when master clock is enabled.



>>> On 17.04.14 at 19:43, <dslutz@xxxxxxxxxxx> wrote:
> This is based on software-developers-hpet-spec-1-0a.pdf saying:
> 
> When the main counter value matches the value in the timer's
> comparator register, an interrupt can be generated.  The hardware
> will then automatically increase the value in the compare register
> by the last value written to that register.
> 
> When the overall enable is off (the main count is halted), none of
> the compare registers should change.
> 
> The code lines:
> 
>     elapsed = hpet_read_maincounter(h, guest_time) +
>         period - 1 - comparator;
>     comparator += (elapsed / period) * period;
> 
> are what matter here.  They will always adjust comparator to be no
> more then one period away.
> 
> Using some numbers to help show the issue:
> 
> hpet_read_maincounter(h, guest_time) = 67752
> period = 62500
> comparator = 255252 == 67752 + 3 * 62500
> 
> comparator       : 255252
> elapsed          : -125001
> elapsed/period   : -2
> comparator_delta : -125000
> new comparator   : 130252
> 
> Signed-off-by: Don Slutz <dslutz@xxxxxxxxxxx>

Acked-by: Jan Beulich <jbeulich@xxxxxxxx>

> ---
> v3:
>   Better commit message.
> 
>  xen/arch/x86/hvm/hpet.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/xen/arch/x86/hvm/hpet.c b/xen/arch/x86/hvm/hpet.c
> index e24bc46..6aa6e9b 100644
> --- a/xen/arch/x86/hvm/hpet.c
> +++ b/xen/arch/x86/hvm/hpet.c
> @@ -92,7 +92,7 @@ static uint64_t hpet_get_comparator(HPETState *h, unsigned 
> int tn,
>      int64_t elapsed;
>  
>      comparator = h->hpet.comparator64[tn];
> -    if ( timer_is_periodic(h, tn) )
> +    if ( hpet_enabled(h) && timer_is_periodic(h, tn) )
>      {
>          /* update comparator by number of periods elapsed since last update 
> */
>          int64_t period = h->hpet.period[tn];
> -- 
> 1.8.4




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