x86_64 and i386 return 0 when reading MSR_TSC
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
QEMU |
Expired
|
Undecided
|
Unassigned |
Bug Description
Running NetBSD 6.1 (i386 and amd64) under QEMU (from git - 1.5.50 is the version it shows) results in an incorrectly set
TSC frequency (set to 0), because NetBSD uses rdmsr(TSC_MSR) for its serializing CPU counter.
To reproduce the problem, you can run an install ISO of NetBSD 6.1 (either i386 or amd64, depending on which qemu). Quit out of the installer, and you're left at a root prompt:
# sysctl machdep.tsc_freq
machdep.tsc_freq = 0
...on real hardware, it will return the TSC frequency:
# sysctl machdep.tsc_freq
machdep.tsc_freq = 3292685070
...this causes problems with a number of applications.
The NetBSD code which reads the MSR is here:
http://
... the "rdmsr(MSR_TSC)" call in cpu_counter_
I should mention, the NetBSD 6.1 ISO I used for testing is here:
http:// iso.netbsd. org/pub/ NetBSD/ iso/6.1/ NetBSD- 6.1-amd64. iso