[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
cpu_counter_serializing() vs. QEMU
This all came about because I discovered that "modload dtrace" while
running under QEMU (amd64, but I bet the same thing happens under i386)
panics the kernel, because tsc_freq is 0. Hm.
Digging a little deeper, in sys/arch/x86/x86/tsc.c:
if (cpu_feature & CPUID_MSR)
Under QEMU, rdmsr(MSR_TSC) always returns 0, because that MSR isn't
implemented (apparently). If I hardcode cpu_counter_serializing() to
always return cpu_counter(), things work just fine.
A couple things:
- is testing (cpu_feature & CPUID_MSR) the right test? Only some
MSRs are implemented.
- if that test is correct, what's the right way/best place to check if
rdmsr(MSR_TSC) returns 0, and hence use cpu_counter() instead?
I'd be surprised if dtrace is the only thing suffering because of this...
Main Index |
Thread Index |