summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGleb Natapov2009-08-27 14:07:30 +0200
committerAvi Kivity2009-09-10 17:11:07 +0200
commit542423b0dd162a9dbf91109461703bd0e545c71f (patch)
tree5d070234ecda6fbe3bc91df53852a4431da13d64
parentKVM: VMX: Conditionally reload debug register 6 (diff)
downloadkernel-qcow2-linux-542423b0dd162a9dbf91109461703bd0e545c71f.tar.gz
kernel-qcow2-linux-542423b0dd162a9dbf91109461703bd0e545c71f.tar.xz
kernel-qcow2-linux-542423b0dd162a9dbf91109461703bd0e545c71f.zip
KVM: VMX: call vmx_load_host_state() only if msr is cached
No need to call it before each kvm_(set|get)_msr_common() Signed-off-by: Gleb Natapov <gleb@redhat.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
-rw-r--r--arch/x86/kvm/vmx.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index f482100eff87..cc6e00a9f724 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -1007,9 +1007,9 @@ static int vmx_get_msr(struct kvm_vcpu *vcpu, u32 msr_index, u64 *pdata)
data = vmcs_readl(GUEST_SYSENTER_ESP);
break;
default:
- vmx_load_host_state(to_vmx(vcpu));
msr = find_msr_entry(to_vmx(vcpu), msr_index);
if (msr) {
+ vmx_load_host_state(to_vmx(vcpu));
data = msr->data;
break;
}
@@ -1066,9 +1066,9 @@ static int vmx_set_msr(struct kvm_vcpu *vcpu, u32 msr_index, u64 data)
}
/* Otherwise falls through to kvm_set_msr_common */
default:
- vmx_load_host_state(vmx);
msr = find_msr_entry(vmx, msr_index);
if (msr) {
+ vmx_load_host_state(vmx);
msr->data = data;
break;
}