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

Commit d905c069 authored by Michael S. Tsirkin's avatar Michael S. Tsirkin Committed by Avi Kivity
Browse files

KVM: rearrange injection cancelling code



Each time we need to cancel injection we invoke same code
(cancel_injection callback).  Move it towards the end of function using
the familiar goto on error pattern.

Will make it easier to do more cleanups for PV EOI.

Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
parent 5cfb1d5a
Loading
Loading
Loading
Loading
+6 −4
Original line number Original line Diff line number Diff line
@@ -5296,8 +5296,7 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu)


	r = kvm_mmu_reload(vcpu);
	r = kvm_mmu_reload(vcpu);
	if (unlikely(r)) {
	if (unlikely(r)) {
		kvm_x86_ops->cancel_injection(vcpu);
		goto cancel_injection;
		goto out;
	}
	}


	preempt_disable();
	preempt_disable();
@@ -5322,9 +5321,8 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu)
		smp_wmb();
		smp_wmb();
		local_irq_enable();
		local_irq_enable();
		preempt_enable();
		preempt_enable();
		kvm_x86_ops->cancel_injection(vcpu);
		r = 1;
		r = 1;
		goto out;
		goto cancel_injection;
	}
	}


	srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx);
	srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx);
@@ -5392,6 +5390,10 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu)
		kvm_lapic_sync_from_vapic(vcpu);
		kvm_lapic_sync_from_vapic(vcpu);


	r = kvm_x86_ops->handle_exit(vcpu);
	r = kvm_x86_ops->handle_exit(vcpu);
	return r;

cancel_injection:
	kvm_x86_ops->cancel_injection(vcpu);
out:
out:
	return r;
	return r;
}
}