Messages in this thread |  | | | Date | Fri, 23 Jan 2009 12:04:39 +0100 | | From | Ingo Molnar <> | | Subject | Re: System clock runs too fast after 2.6.27 -> 2.6.28.1 upgrade |
| |
* john stultz <johnstul@us.ibm.com> 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
|  |