Re: [patch 13/19] GTOD: Mark TSC unusable for highres timers

From: Andi Kleen
Date: Fri Nov 10 2006 - 00:10:49 EST


current_tsc_khz = tsc_khz;
> > clocksource_tsc.mult = clocksource_khz2mult(current_tsc_khz,
> > clocksource_tsc.shift);
> > +#ifndef CONFIG_HIGH_RES_TIMERS
> > /* lower the rating if we already know its unstable: */
> > if (check_tsc_unstable())
> > clocksource_tsc.rating = 0;
> > -
> > +#else
> > + /*
> > + * Mark TSC unsuitable for high resolution timers. TSC has so
> > + * many pitfalls: frequency changes, stop in idle ... When we
> > + * switch to high resolution mode we can not longer detect a
> > + * firmware caused frequency change, as the emulated tick uses
> > + * TSC as reference. This results in a circular dependency.
> > + * Switch only to high resolution mode, if pm_timer or such
> > + * is available.
> > + */
> > + clocksource_tsc.rating = 50;
> > + clocksource_tsc.is_continuous = 0;
> > +#endif
> > init_timer(&verify_tsc_freq_timer);
> > verify_tsc_freq_timer.function = verify_tsc_freq;
> > verify_tsc_freq_timer.expires =
>
>
> Hmmm. I wish this patch was unnecessary, but I don't see an easy
> solution.

Very sad. This will make a lot of people unhappy, even to the point
where they might prefer disabling noidlehz over super slow gettimeofday.
I assume you at least have a suitable command line option for that, right?

Can we get a summary on which systems the TSC is considered unstable?
Normally we assume if it's stable enough for gettimeofday it should
be stable enough for longer delays too.

-Andi

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/