Re: System clock runs too fast after 2.6.27 -> 2.6.28.1 upgrade

From: Ingo Molnar
Date: Fri Jan 23 2009 - 06:05:27 EST



* john stultz <johnstul@xxxxxxxxxx> wrote:

> On Fri, 2009-01-23 at 00:57 +0100, Miklos Vajna wrote:
> > On Thu, Jan 22, 2009 at 12:03:14PM -0800, john stultz
> > > CONFIG_X86_VISWS: If I recall, this is support for SGI workstations that
> > > had different apics then most systems, and might be related.
> > >
> > I just did a new build with CONFIG_X86_VISWS and CONFIG_X86_RDC321X
> > disabled, but I kept CONFIG_PARAVIRT_GUEST enabled and that works fine
> > as well. So CONFIG_PARAVIRT_GUEST seems to be unrelated.
>
> Ah. CONFIG_X86_RDC321X is indeed the issue.
>
> >From arch/x86/include/asm/timex.h:
>
> #ifdef CONFIG_X86_ELAN
> # define PIT_TICK_RATE 1189200 /* AMD Elan has different frequency! */
> #elif defined(CONFIG_X86_RDC321X)
> # define PIT_TICK_RATE 1041667 /* Underlying HZ for R8610 */
> #else
> # define PIT_TICK_RATE 1193182 /* Underlying HZ */
> #endif
>
> This gives the kernel an incorrect slower frequency for the PIT hardware
> on your system and is why the TSC calibration is off and why the ACPI PM
> gets thrown out.
>
> I'd think this would ideally be more of a subarch in the config
> selection like the AMD Elan is, so folks know it really is not just a
> extra-support feature and in fact limits what hardware you can use the
> resulting kernel on.

a better solution is that if RDC is set [it is unset by default] we should
turn PIT_TICK_RATE into a variable, defaulting it to 1193182. If a real
RDC or ELAN system is running, that variable is changed during early
bootup, in the init functions for those platforms.

Ingo
--
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/