On Tue, Sep 29, 2015 at 11:43:34AM +0800, Haozhong Zhang wrote:
On Mon, Sep 28, 2015 at 01:37:34PM -0300, Eduardo Habkost wrote:
> On Mon, Sep 28, 2015 at 01:38:31PM +0800, Haozhong Zhang wrote:
[...]
> > static void do_kvm_cpu_synchronize_post_init(void *arg)
> > {
> > CPUState *cpu = arg;
> > + CPUX86State *env = &X86_CPU(cpu)->env;
> > + int r;
> > +
> > + /*
> > + * XXX: KVM_SET_TSC_KHZ must be done before kvm_arch_put_registers().
> Could you explain where this requirement comes from?
>
kvm_arch_put_registers() below will setup vcpu's MSR_IA32_TSC through
KVM ioctl KVM_SET_MSRS. KVM needs to know vcpu's TSC rate so as to
correctly scale the TSC value given by QEMU, especially when vcpu's
TSC rate is different than the host TSC rate (e.g. it's migrated from
another machine w/ different host TSC rate than the current one).
Thanks. The comment above could contain a short version of this
explanation, e.g.: "KVM needs KVM_SET_TSC_KHZ to be done before
KVM_SET_MSRS sets MSR_IA32_TSC (done by kvm_arch_put_registers())".
[...]
> > Or maybe we shouldn't treat this as VM state, but as configuration, and
> > let management configure the TSC frequency explicitly if the user really
> > needs it to stay the same during migration.
> >
> > (CCing libvir-list to see if they have feedback)
> >
> Thanks for CC. I'll consider to add a command line
option to control
> the configuration of guest TSC fequency.
It already exists, -cpu has a "tsc-freq" option.
--
Eduardo