summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvi Kivity <avi@redhat.com>2011-04-28 16:59:33 +0400
committerAvi Kivity <avi@redhat.com>2011-05-22 16:40:01 +0400
commit0a434bb2bf094f463ca3ca71ac42cea9e423048f (patch)
treec37059b8ce8490a607f638a5a61d69fb01ecbc94
parentae8cc059550b2c2ec7a5e9650bb1be7b988a1208 (diff)
downloadlinux-0a434bb2bf094f463ca3ca71ac42cea9e423048f.tar.xz
KVM: VMX: Avoid reading %rip unnecessarily when handling exceptions
Avoids a VMREAD. Signed-off-by: Avi Kivity <avi@redhat.com>
-rw-r--r--arch/x86/kvm/vmx.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index 3f6e9bff0160..139a5cb1f5e1 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -3170,7 +3170,6 @@ static int handle_exception(struct kvm_vcpu *vcpu)
}
error_code = 0;
- rip = kvm_rip_read(vcpu);
if (intr_info & INTR_INFO_DELIVER_CODE_MASK)
error_code = vmcs_read32(VM_EXIT_INTR_ERROR_CODE);
if (is_page_fault(intr_info)) {
@@ -3217,6 +3216,7 @@ static int handle_exception(struct kvm_vcpu *vcpu)
vmx->vcpu.arch.event_exit_inst_len =
vmcs_read32(VM_EXIT_INSTRUCTION_LEN);
kvm_run->exit_reason = KVM_EXIT_DEBUG;
+ rip = kvm_rip_read(vcpu);
kvm_run->debug.arch.pc = vmcs_readl(GUEST_CS_BASE) + rip;
kvm_run->debug.arch.exception = ex_no;
break;