Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0a434bb2 authored by Avi Kivity's avatar Avi Kivity
Browse files

KVM: VMX: Avoid reading %rip unnecessarily when handling exceptions



Avoids a VMREAD.

Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
parent ae8cc059
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -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;