Re: [PATCH v7 6/8] x86: tsc: Always Running Timer (ART) correlated clocksource

From: Christopher Hall
Date: Mon Feb 22 2016 - 21:38:19 EST


On Thu, 18 Feb 2016 13:11:33 -0800, Andy Lutomirski <luto@xxxxxxxxxx> wrote:
+#define X86_FEATURE_INVARIANT_TSC (7*32+4) /* Intel Invariant TSC */

This is removed. It was basically an alias for NONSTOP_TSC and not needed.


+/*
+ * Convert ART to TSC given numerator/denominator found in detect_art()
+ */
+struct system_counterval_t convert_art_to_tsc(cycle_t art)
+{
+ u64 tmp, res, rem;
+
+ rem = do_div(art, art_to_tsc_denominator);
+
+ res = art * art_to_tsc_numerator;
+ tmp = rem * art_to_tsc_numerator;
+
+ do_div(tmp, art_to_tsc_denominator);
+ res += tmp;
+
+ return (struct system_counterval_t) {.cs = art_related_clocksource,
+ .cycles = res};

The SDM and the patch description both mention an offset "k". Shouldn't this code at least have a comment about how it deals with the k != 0 case?

I don't deal with the k != 0 case. I assume that IA32 TSC adjust MSR is 0 because it's almost always a *bad idea* to change it. I've discussed this with a few other developers and there is some consensus agreeing. From an earlier related thread Peter Zijlstra asserts that TSC adjust "had
better" be 0.(http://lkml.iu.edu/hypermail/linux/kernel/1507.3/03734.html).

Do we really need to accommodate BIOS's that do this?

Chris