x86: Use MSRs and model info for timer freqs (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Tue, 24 Oct 2017 20:00:32 +0000 (16:00 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 26 Oct 2017 18:33:29 +0000 (14:33 -0400)
commit3474834b09054cd2e9faa668524cd1322670f1c4
treedfda4a9adef0cc75a7b3717612982493864b8e25
parent587318b8dfe68b3d41049b0b55dbce1c5618e78b
x86: Use MSRs and model info for timer freqs (XCC)

We should be able to know from cpuid family/model what the bus frequency
is.  It's a minor pain.

On some machine (notably not my Qemu), you can read MSR_PLATFORM_INFO and
get the invariant TSC freq.  With that and the bus freq, we can get an
exact TSC frequency.

This helps FTQ slightly.  With slight errors in the invariant TSC freq,
our measurements would drift.  FTQ has an override for get_tsc_freq(), but
we can do the right thing on Akaros.

Plus this speeds up everyone's boot times!

Reinstall your kernel header, though it shouldn't matter.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/arch/x86/arch.h
kern/arch/x86/cpuinfo.c
kern/arch/x86/ros/msr-index.h
kern/arch/x86/time.c