From: Marcelo Tosatti <mtosatti@redhat.com>
To: Andrew Jones <drjones@redhat.com>
Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, pbonzini@redhat.com
Subject: Re: [PATCH] x86: kvm: fix unstable_tsc boot
Date: Mon, 24 Feb 2014 18:15:24 -0300 [thread overview]
Message-ID: <20140224211524.GC22025@amt.cnet> (raw)
In-Reply-To: <1393256549-7743-1-git-send-email-drjones@redhat.com>
On Mon, Feb 24, 2014 at 04:42:29PM +0100, Andrew Jones wrote:
> When the tsc is marked unstable on the host it causes global clock
> updates to be requested each time a vcpu is loaded, nearly halting
> all progress on guests with a large number of vcpus.
>
> Fix this by only requesting a local clock update unless the vcpu
> is migrating to another cpu.
>
> Signed-off-by: Andrew Jones <drjones@redhat.com>
> ---
> arch/x86/kvm/x86.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
> index 6530019116b0d..ea716a162b4a3 100644
> --- a/arch/x86/kvm/x86.c
> +++ b/arch/x86/kvm/x86.c
> @@ -2781,15 +2781,18 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
> vcpu->arch.last_guest_tsc);
> kvm_x86_ops->write_tsc_offset(vcpu, offset);
> vcpu->arch.tsc_catchup = 1;
> + set_bit(KVM_REQ_CLOCK_UPDATE, &vcpu->requests);
> }
> + }
> +
> + if (unlikely(vcpu->cpu != cpu)) {
> /*
> * On a host with synchronized TSC, there is no need to update
> * kvmclock on vcpu->cpu migration
> */
> if (!vcpu->kvm->arch.use_master_clock || vcpu->cpu == -1)
> kvm_make_request(KVM_REQ_GLOBAL_CLOCK_UPDATE, vcpu);
> - if (vcpu->cpu != cpu)
> - kvm_migrate_timers(vcpu);
> + kvm_migrate_timers(vcpu);
> vcpu->cpu = cpu;
> }
>
> --
> 1.8.1.4
Consider VCPU1 not doing kvm_arch_vcpu_load (guest not executing HLT,
not switching VCPUs, no exits to QEMU).
VCPU0 doing kvm_arch_vcpu_load (guest executing HLT, say).
The updates on VCPU0 must generate updates on VCPU1 as well, otherwise
NTP correction applies to VCPU0 but not VCPU1.
next prev parent reply other threads:[~2014-02-24 21:56 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-24 15:42 [PATCH] x86: kvm: fix unstable_tsc boot Andrew Jones
2014-02-24 21:15 ` Marcelo Tosatti [this message]
2014-02-25 10:13 ` Andrew Jones
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=20140224211524.GC22025@amt.cnet \
--to=mtosatti@redhat.com \
--cc=drjones@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pbonzini@redhat.com \
/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