mirror of
https://github.com/torvalds/linux.git
synced 2024-12-02 09:01:34 +00:00
KVM: VMX: Avoid reading %rip unnecessarily when handling exceptions
Avoids a VMREAD. Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
parent
ae8cc05955
commit
0a434bb2bf
@ -3170,7 +3170,6 @@ static int handle_exception(struct kvm_vcpu *vcpu)
|
|||||||
}
|
}
|
||||||
|
|
||||||
error_code = 0;
|
error_code = 0;
|
||||||
rip = kvm_rip_read(vcpu);
|
|
||||||
if (intr_info & INTR_INFO_DELIVER_CODE_MASK)
|
if (intr_info & INTR_INFO_DELIVER_CODE_MASK)
|
||||||
error_code = vmcs_read32(VM_EXIT_INTR_ERROR_CODE);
|
error_code = vmcs_read32(VM_EXIT_INTR_ERROR_CODE);
|
||||||
if (is_page_fault(intr_info)) {
|
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 =
|
vmx->vcpu.arch.event_exit_inst_len =
|
||||||
vmcs_read32(VM_EXIT_INSTRUCTION_LEN);
|
vmcs_read32(VM_EXIT_INSTRUCTION_LEN);
|
||||||
kvm_run->exit_reason = KVM_EXIT_DEBUG;
|
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.pc = vmcs_readl(GUEST_CS_BASE) + rip;
|
||||||
kvm_run->debug.arch.exception = ex_no;
|
kvm_run->debug.arch.exception = ex_no;
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user