On Thu, 2006-11-09 at 23:38 +0000, Thomas Gleixner wrote:
> plain text document attachment
> (gtod-mark-tsc-unusable-for-highres-timers.patch)
> From: Thomas Gleixner <[email protected]>
>
> The TSC is too unstable and unreliable to be used with high resolution timers.
> The automatic detection of TSC unstability fails once we switched to high
> resolution mode, because the tick emulation would use the TSC as reference.
> This results in a circular dependency. Mark it unusable for high res upfront.
>
> [[email protected]: updated for i386-time-avoid-pit-smp-lockups.patch]
> Signed-off-by: Thomas Gleixner <[email protected]>
> Signed-off-by: Ingo Molnar <[email protected]>
>
> diff -puN arch/i386/kernel/tsc.c~gtod-mark-tsc-unusable-for-highres-timers arch/i386/kernel/tsc.c
> --- a/arch/i386/kernel/tsc.c~gtod-mark-tsc-unusable-for-highres-timers
> +++ a/arch/i386/kernel/tsc.c
> @@ -459,10 +459,23 @@ static int __init init_tsc_clocksource(v
> 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.
Mind adding a warning so users know why a system that might use the TSC
normally does not use the TSC w/ highres timers?
Otherwise looks ok.
Acked-by: John Stultz <[email protected]>
thanks
-john
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]