public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Avi Kivity <avi@redhat.com>
To: stable@vger.kernel.org
Cc: Marcelo Tosatti <mtosatti@redhat.com>, kvm@vger.kernel.org
Subject: [PATCH 07/11] KVM: VMX: Fix delayed load of shared MSRs
Date: Wed,  9 May 2012 16:10:43 +0300	[thread overview]
Message-ID: <1336569047-23576-8-git-send-email-avi@redhat.com> (raw)
In-Reply-To: <1336569047-23576-1-git-send-email-avi@redhat.com>

Shared MSRs (MSR_*STAR and related) are stored in both vmx->guest_msrs
and in the CPU registers, but vmx_set_msr() only updated memory. Prior
to 46199f33c2953, this didn't matter, since we called vmx_load_host_state(),
which scheduled a vmx_save_host_state(), which re-synchronized the CPU
state, but now we don't, so the CPU state will not be synchronized until
the next exit to host userspace.  This mostly affects nested vmx workloads,
which play with these MSRs a lot.

Fix by loading the MSR eagerly.

Signed-off-by: Avi Kivity <avi@redhat.com>
(cherry picked from commit 9ee73970c03edb68146ceb1ba2a7033c99a5e017)
---
 arch/x86/kvm/vmx.c |    3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index 3b4c8d8..fafb325 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -2219,6 +2219,9 @@ static int vmx_set_msr(struct kvm_vcpu *vcpu, u32 msr_index, u64 data)
 		msr = find_msr_entry(vmx, msr_index);
 		if (msr) {
 			msr->data = data;
+			if (msr - vmx->guest_msrs < vmx->save_nmsrs)
+				kvm_set_shared_msr(msr->index, msr->data,
+						   msr->mask);
 			break;
 		}
 		ret = kvm_set_msr_common(vcpu, msr_index, data);
-- 
1.7.10.1


  parent reply	other threads:[~2012-05-09 13:11 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-09 13:10 [PATCH 00/11] KVM fixes for 3.3.5 Avi Kivity
2012-05-09 13:10 ` [PATCH 01/11] KVM: s390: do store status after handling STOP_ON_STOP bit Avi Kivity
2012-05-09 13:10 ` [PATCH 02/11] KVM: s390: Sanitize fpc registers for KVM_SET_FPU Avi Kivity
2012-05-09 13:10 ` [PATCH 03/11] KVM: Fix write protection race during dirty logging Avi Kivity
2012-05-09 13:10 ` [PATCH 04/11] KVM: mmu_notifier: Flush TLBs before releasing mmu_lock Avi Kivity
2012-05-09 13:10 ` [PATCH 05/11] KVM: x86 emulator: correctly mask pmc index bits in RDPMC instruction emulation Avi Kivity
2012-05-09 13:10 ` [PATCH 06/11] KVM: Ensure all vcpus are consistent with in-kernel irqchip settings Avi Kivity
2012-05-09 13:10 ` Avi Kivity [this message]
2012-05-09 13:10 ` [PATCH 08/11] KVM: nVMX: Fix erroneous exception bitmap check Avi Kivity
2012-05-09 13:10 ` [PATCH 09/11] KVM: VMX: vmx_set_cr0 expects kvm->srcu locked Avi Kivity
2012-05-09 13:10 ` [PATCH 10/11] KVM: VMX: Fix kvm_set_shared_msr() called in preemptible context Avi Kivity
2012-05-09 13:10 ` [PATCH 11/11] KVM: lock slots_lock around device assignment Avi Kivity
2012-05-10 16:28 ` [PATCH 00/11] KVM fixes for 3.3.5 Greg KH
2012-05-12  0:35 ` Ben Hutchings
2012-05-13  9:23   ` Avi Kivity
2012-05-13 10:19     ` Ben Hutchings

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=1336569047-23576-8-git-send-email-avi@redhat.com \
    --to=avi@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=mtosatti@redhat.com \
    --cc=stable@vger.kernel.org \
    /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