[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3] x86/hvm/hpet: avoid 'small' time diff test on resume
> -----Original Message----- > From: Jan Beulich [mailto:JBeulich@xxxxxxxx] > Sent: 29 May 2019 17:00 > To: Paul Durrant <Paul.Durrant@xxxxxxxxxx> > Cc: Andrew Cooper <Andrew.Cooper3@xxxxxxxxxx>; Roger Pau Monne > <roger.pau@xxxxxxxxxx>; xen-devel <xen- > devel@xxxxxxxxxxxxxxxxxxxx>; WeiLiu <wl@xxxxxxx> > Subject: Re: [PATCH v3] x86/hvm/hpet: avoid 'small' time diff test on resume > > >>> On 29.05.19 at 16:07, <paul.durrant@xxxxxxxxxx> wrote: > > It appears that even 64-bit versions of Windows 10, when not using syth- > > etic timers, will use 32-bit HPET non-periodic timers. There is a test > > in hpet_set_timer(), specific to 32-bit timers, that tries to disambiguate > > between a comparator value that is in the past and one that is sufficiently > > far in the future that it wraps. This is done by assuming that the delta > > between the main counter and comparator will be 'small' [1], if the > > comparator value is in the past. Unfortunately, more often than not, this > > is not the case if the timer is being re-started after a migrate and so > > the timer is set to fire far in the future (in excess of a minute in > > several observed cases) rather then set to fire immediately. This has a > > rather odd symptom where the guest console is alive enough to be able to > > deal with mouse pointer re-rendering, but any keyboard activity or mouse > > clicks yield no response. > > > > This patch simply adds an extra check of 'creation_finished' into > > hpet_set_timer() so that the 'small' time test is omitted when the function > > is called to restart timers after migration, and thus any negative delta > > causes a timer to fire immediately. > > > > [1] The number of ticks that equate to 0.9765625 milliseconds > > > > Signed-off-by: Paul Durrant <paul.durrant@xxxxxxxxxx> > > Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> > Thanks. > > I notice that we seemingly don't handle main counter wrap in the HPET code. > > The spec. says that timers should fire at the point the counter wraps at the > > timer's width. I think the need for the 'small' time test would go away if > > this was implemented, but that's for another day. > > For posterity I would have hoped you would update this remark as > well. Oops, sorry, yes I forgot to update this part of the commit comment. FTR the spec does only state that the timer should fire when a 32-bit timer counter wraps. Paul > > Jan > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |