kvm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Eduardo Habkost <ehabkost@redhat.com>
To: Haozhong Zhang <haozhong.zhang@intel.com>
Cc: qemu-devel@nongnu.org, kvm@vger.kernel.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	Marcelo Tosatti <mtosatti@redhat.com>,
	Richard Henderson <rth@twiddle.net>,
	libvir-list@redhat.com
Subject: Re: [PATCH 3/3] kvm-all: notice KVM of vcpu's TSC rate after migration
Date: Mon, 28 Sep 2015 13:37:34 -0300	[thread overview]
Message-ID: <20150928163734.GF4130@thinpad.lan.raisama.net> (raw)
In-Reply-To: <1443418711-24106-4-git-send-email-haozhong.zhang@intel.com>

On Mon, Sep 28, 2015 at 01:38:31PM +0800, Haozhong Zhang wrote:
> When a vcpu is created in KVM, its TSC rate is initially identical to
> the host TSC rate. If its state is migrated to a vcpu on another
> machine (target machine) which may uses a different host TSC rate, QEMU
> on the target machine should notice KVM of the migrated vcpu's TSC
> rate. In case that KVM on the target machine supports TSC scaling, guest
> programs running on the migrated vcpu will observe the same TSC rate
> before and after the migration.
> 
> Signed-off-by: Haozhong Zhang <haozhong.zhang@intel.com>
> ---
>  kvm-all.c | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/kvm-all.c b/kvm-all.c
> index 0be4615..e8de038 100644
> --- a/kvm-all.c
> +++ b/kvm-all.c
> @@ -1769,6 +1769,19 @@ void kvm_cpu_synchronize_post_reset(CPUState *cpu)
>  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?

> +     */
> +    r = kvm_check_extension(cpu->kvm_state, KVM_CAP_TSC_CONTROL);
> +    if (r && env->tsc_khz) {
> +        r = kvm_vcpu_ioctl(cpu, KVM_SET_TSC_KHZ, env->tsc_khz);
> +        if (r < 0) {
> +            fprintf(stderr, "KVM_SET_TSC_KHZ failed\n");
> +        }
> +    }

This is duplicating the existing KVM_SET_TSC_KHZ call at
kvm_arch_init_vcpu(). I wonder if there's a way to avoid this
duplication. Should we set TSC KHz only at
do_kvm_cpu_synchronize_post_init(), and remove the call from
kvm_arch_init_vcpu()?

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)

-- 
Eduardo

  reply	other threads:[~2015-09-28 16:37 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-28  5:38 [PATCH 0/3] target-i386: save/restore vcpu's TSC rate during migration Haozhong Zhang
2015-09-28  5:38 ` [PATCH 1/3] target-i386: add a subsection of vcpu's TSC rate in vmstate_x86_cpu Haozhong Zhang
2015-09-29 19:00   ` [Qemu-devel] " Dr. David Alan Gilbert
2015-09-30  1:17     ` Haozhong Zhang
2015-09-30  8:07       ` Dr. David Alan Gilbert
2015-10-06  1:24         ` Haozhong Zhang
2015-09-28  5:38 ` [PATCH 2/3] target-i386: initialize vcpu's TSC rate to the value from KVM Haozhong Zhang
2015-09-28 16:17   ` Eduardo Habkost
2015-09-29  1:23     ` Haozhong Zhang
2015-09-29  1:46       ` Haozhong Zhang
2015-09-28  5:38 ` [PATCH 3/3] kvm-all: notice KVM of vcpu's TSC rate after migration Haozhong Zhang
2015-09-28 16:37   ` Eduardo Habkost [this message]
2015-09-29  3:43     ` Haozhong Zhang
2015-09-29 18:02       ` Eduardo Habkost
2015-09-30  0:32         ` Haozhong Zhang
2015-09-30 20:36           ` Eduardo Habkost
2015-10-06  1:20             ` Haozhong Zhang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150928163734.GF4130@thinpad.lan.raisama.net \
    --to=ehabkost@redhat.com \
    --cc=haozhong.zhang@intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=libvir-list@redhat.com \
    --cc=mtosatti@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).