diff options
author | Michael S. Tsirkin <mst@redhat.com> | 2012-06-24 19:25:00 +0300 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2012-06-25 12:40:50 +0300 |
commit | d905c0693514e6f713b207377b67c9972c5d7d49 (patch) | |
tree | a5387b1ab6f44e06b2a7de5c1dca2811ce508f5e /arch/x86/kvm | |
parent | 5cfb1d5a65dd96d2d3a0751a1e4e81dc84c1f08f (diff) | |
download | blackbird-op-linux-d905c0693514e6f713b207377b67c9972c5d7d49.tar.gz blackbird-op-linux-d905c0693514e6f713b207377b67c9972c5d7d49.zip |
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: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/x86/kvm')
-rw-r--r-- | arch/x86/kvm/x86.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index c1f870690a64..7ea0f611bc89 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -5296,8 +5296,7 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu) r = kvm_mmu_reload(vcpu); if (unlikely(r)) { - kvm_x86_ops->cancel_injection(vcpu); - goto out; + goto cancel_injection; } preempt_disable(); @@ -5322,9 +5321,8 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu) smp_wmb(); local_irq_enable(); preempt_enable(); - kvm_x86_ops->cancel_injection(vcpu); r = 1; - goto out; + goto cancel_injection; } 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); r = kvm_x86_ops->handle_exit(vcpu); + return r; + +cancel_injection: + kvm_x86_ops->cancel_injection(vcpu); out: return r; } |