Re: [RFC] CPUID usage for interaction between Hypervisors and Linux.

From: H. Peter Anvin
Date: Wed Oct 01 2008 - 21:25:57 EST


Zachary Amsden wrote:

I'm not suggesting using the nominal value. I'm suggesting the
measurement be done in the one and only place where there is perfect
control of the system, the processor boot-strapping in the BIOS.

Only the platform designers themselves know the speed of the oscillator
which is modulating the clock and so only they should be calibrating the
speed of the TSC.


No. *Noone*, including the manufacturers, know the speed of the oscillator which is modulating the clock. What you have to do is average over a timespan which is long enough that the SSM averages out (a relatively small fraction of a second.)

As for trusting the BIOS on this, that's a total joke. Firmware vendors can't get the most basic details right.

If this modulation really does alter the frequency by +/- 2% (seems high
to me, but hey, I don't design motherboards), using an LFO, then
basically all the calibration done in Linux is broken and has been for
some time. You can't calibrate only once, or risk being off by 2%, you
can't calibrate repeatedly and take the fastest estimate, or you are off
by 2%, and you can't calibrate repeatedly and take the average without
risking SMI noise affecting the lowest clock speed measurement,
contributing unknown error.

You have to calibrate over a sample interval long enough that the SSM averages out.

Hmm. Re-reading your e-mail, I see you are saying the nominal frequency
may be off by 2% (and I easily believe that), not necessarily that the
frequency modulation may be 2% (which I still think is high). Does
anyone know what the actual bounds on spread spectrum modulation are or
how fast the clock is modulated?

No, I'm saying the frequency modulation may be up to 2%. Typically it is something like [-2%,+0%].

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