The kernel assumes that the PM timer frequency is normal, so it does:
read pm-timer start value, read TSC start value
wait for a some time
read pm-timer end value, read TSC end value
And the TSC frequency is calculated via:
TSC-End - TSC-Start
TSC-Frequency = -------------------- * PM-Frequency
PM-End - PM-Start
So if your PM-Timer runs at the double frequency for reasons only
known to the Chip Manufacturer the kernel miscalculates the TSC
frequency by factor 0.5.
Simple rule of three.
Thanks,
tglx
--