On Thu, 7 Jan 2016, Christopher Hall wrote:
On Wed, 06 Jan 2016 11:37:23 -0800, John Stultz <john.stultz@xxxxxxxxxx>
wrote:
> I've not done a super close reading here. But is it very likely the
> the history_ref->cs_seq is the same as the captured seq? I thought
> this history_ref was to allow old cross stamps to be used to improve
> the back-calculation of the time at the given cycle value. So throwing
> them out if they are older then the last tick seems strange.
Maybe this needs more explanation. The clocksource sequence (cs_seq) is
incremented for each change in clocksource. I use this to detect a rare corner
case where the clocksource is changed from (on x86 anyway) TSC and then back.
If the history crosses one of these changes then interpolation shouldn't be
attempted (return error). It's not really enough when using the history to
just check that the current clocksource is equal to the one used at the start
of the history. The clocksource must not have changed at all. To answer your
question, it's not at all likely that this would occur.
You can flush the history when a clocksource change happens. No need to add
extra data to the core structures.