Re: [PATCH v6 3/9] Add correlated clocksource relating aliased auxiliary and system clocks
From: John Stultz <hidden>
Date: 2016-01-15 00:24:21
Also in:
intel-wired-lan, lkml
On Wed, Jan 13, 2016 at 4:12 AM, Christopher S. Hall [off-list ref] wrote:
quoted hunk ↗ jump to hunk
ACKNOWLEDGMENT: The original correlated clock source and cross timestamp code was developed by Thomas Gleixner [off-list ref]. It has changed considerably and any mistakes are mine. The timekeeping and clocksource code don't currently comprehend two clocks that are aliases of one another. That is clocks that are *exactly* related. The correlated_cs struct encapsulated this relationship between a clocksource and its alias clock. Modern Intel hardware provides an Always Running Timer (ART) which is exactly related to TSC through a known frequency ratio. The ART is an example of a correlated clocksource. Signed-off-by: Christopher S. Hall <redacted> --- include/linux/clocksource.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+)diff --git a/include/linux/clocksource.h b/include/linux/clocksource.h index 4542293..726ca68 100644 --- a/include/linux/clocksource.h +++ b/include/linux/clocksource.h@@ -267,4 +267,18 @@ struct system_counterval_t { struct clocksource *cs; }; +/* + * struct correlated_cs - Descriptor for a clocksource correlated to another + * clocksource + * @related_cs: Pointer to the related timekeeping clocksource + * @convert: Conversion function to convert a timestamp from + * the correlated clocksource to cycles of the related + * timekeeping clocksource + */ +struct correlated_cs { + struct clocksource *related_cs; + cycle_t (*convert)(struct correlated_cs *cs, + cycle_t cycles); +}; +
So.. In reworking your patch set, I've preserved this, but I'm still not totally convinced. Its a generic structure, but not used by any generic code and its only used by hardware specific implementations (ie: the tsc and e1000e_hwts logic). It seems like this could be a tsc.h specific structure w/o a real issue. And really this doesn't seem to be a generic thing. The e1000e hwts is always the ART based. Its not likely these sorts of cross hardware timestamps are going to be completely abstract and interchangeable, is it? thanks -john