A couple of questions ...
1) Is there a way to know, from a driver, when a processor's frequency changes? The OS (Windows) does not provide any callbacks for frequecy changes, and it does not appear to be any hardware interrupts generated on frequency/voltage transitions.
2) Is the bus multiplier value available in an MSR, or is it the ratio of APERF/MPERF, or something else? Don't know how public the first part of the question is.
3) On a Core 2 processor I can count EIST_TRANS (event 0x3A) and set it up to interrupt on every increment of the counter. Then in the interrupt handler calculate the APERF/MPERF ratio and come up with value for the frequency. Does that make sense? I'm insterested on servers, at moderate to high utilization so I'm assuming the rate of frequency/voltage transitions is low (a few per second).
Enio.