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