
On 05/06/2014 04:50 PM, Daniel P. Berrange wrote:
On Tue, May 06, 2014 at 03:27:20PM +0200, Ján Tomko wrote:
The support for this timer is indicated by bit 8 of EDX after calling CPUID with 0x80000007. It does not show up in /proc/cpuinfo [1] and since we're calling qemu without 'enforce', it doesn't error out if the host doesn't support this.
Maybe I'm mis-interpreting the kernel source, but my reading of that was that this *does* show up in /proc/cpuinfo, but it is given the name 'constant_tsc' instead of 'invtsc'.
On my host I see 'constant_tsc' and 'nonstop_tsc' in /proc/cpuinfo
I see them too, despite not having this invariant TSC feature - the less 'enhanced' timer is enough for these flags to appear.
Alternatively, we could expose it in libvirt as a cpu flag: <cpu mode='custom' match='exact'> <model fallback='forbid'>qemu64</model> <feature policy='require' name='invtsc'/> </cpu> or maybe add +invtsc to qemu args when the 'nonstop_tsc' flag is requested?
Yep, I could see that as a valid option. If it is visible in /proc/cpuinfo, then I think that's a compelling reason for libvirt to model it as a CPU flag too, rather than pretend it is a new type of timer when it is just an attribute of the base TSC timer.
The lack of a name in /proc/cpuinfo for this feature is the reason I posted the <timer> version first. Jan