[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |