From 20f708523e1c617e8c57a77d9d61811f8febccd1 Mon Sep 17 00:00:00 2001 From: Eduardo Habkost <ehabkost@redhat.com> Date: Mon, 5 Oct 2009 14:32:46 -0300 Subject: [PATCH 5/6] KVM: VMX: flush TLB with INVEPT on cpu migration RH-Author: Marcelo Tosatti <mtosatti@redhat.com> Message-id: <20091001235239.GA26284@amt.cnet> Patchwork-id: 3552 O-Subject: [PATCH RHEL 5.4.z] KVM: VMX: flush TLB with INVEPT on cpu migration Bugzilla: 518081 RH-Acked-by: Juan Quintela <quintela@redhat.com> RH-Acked-by: Avi Kivity <avi@redhat.com> RH-Acked-by: Gleb Natapov <gleb@redhat.com> It is possible that stale EPTP-tagged mappings are used, if a vcpu migrates to a different pcpu. Set KVM_REQ_TLB_FLUSH in vmx_vcpu_load, when switching pcpus, which will invalidate both VPID and EPT mappings on the next vm-entry. Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com> (cherry picked from commit 083e9e10dd99629b52e2cfad7eeb4fb6d7511d15) Bugzilla: 518081 Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> --- arch/x86/kvm/vmx.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c index 445f0d0..dd61bbb 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c @@ -640,7 +640,7 @@ static void vmx_vcpu_load(struct kvm_vcpu *vcpu, int cpu) if (vcpu->cpu != cpu) { vcpu_clear(vmx); kvm_migrate_timers(vcpu); - vpid_sync_vcpu_all(vmx); + set_bit(KVM_REQ_TLB_FLUSH, &vcpu->requests); local_irq_disable(); list_add(&vmx->local_vcpus_link, &per_cpu(vcpus_on_cpu, cpu)); -- 1.6.3.rc4.29.g8146