[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <c7f37ead-3cf2-4277-a44e-425a7b940d31@default>
Date: Thu, 15 Oct 2009 06:27:24 -0700 (PDT)
From: Dan Magenheimer <dan.magenheimer@...cle.com>
To: Jeremy Fitzhardinge <jeremy@...p.org>
Cc: Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
Xen-devel <xen-devel@...ts.xensource.com>,
kurt.hackel@...cle.com, arch/x86 maintainers <x86@...nel.org>,
Glauber de Oliveira Costa <gcosta@...hat.com>,
Avi Kivity <avi@...hat.com>, chris.mason@...cle.com
Subject: RE: [Xen-devel] [PATCH 05/12] xen/pvclock: add monotonicity check
> On 10/14/09 20:26, Dan Magenheimer wrote:
> > As long as we are going through the trouble of making
> > this monotonic, shouldn't it be monotonically increasing
> > (rather than just monotonically non-decreasing)? The
> > rdtsc instruction and any suitably high-precision
> > hardware timer will never return the same value
> > on subsequent uses so this might be a reasonable
> > precedent to obey. E.g.
> >
> > + return ret > xen_clocksource.cycle_last ?
> > + ret : ++xen_clocksource.cycle_last;
>
> No, cycle_last isn't updated on every read, only on timer ticks. This
> test doesn't seem to be intended to make sure that every
> clocksource_read is globally monotonic, but just to avoid
> some boundary
> conditions in the timer interrupt. I just copied it directly from
> read_tsc().
I understand but you are now essentially emulating a
reliable platform timer with a potentially unreliable
(but still high resolution) per-CPU timer AND probably
delivering that result to userland.
Read_tsc should only be used if either CONSTANT_TSC
or TSC_RELIABLE is true, so read_tsc is guaranteed
to be monotonically-strictly-increasing by hardware
(and enforced for CONSTANT_TSC by check_tsc_warp
at boot).
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists