diff options
Diffstat (limited to 'arch/x86/kvm/svm.c')
-rw-r--r-- | arch/x86/kvm/svm.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index df795bcebd22..825b82540f01 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c | |||
@@ -111,6 +111,7 @@ static int nested = 0; | |||
111 | module_param(nested, int, S_IRUGO); | 111 | module_param(nested, int, S_IRUGO); |
112 | 112 | ||
113 | static void svm_flush_tlb(struct kvm_vcpu *vcpu); | 113 | static void svm_flush_tlb(struct kvm_vcpu *vcpu); |
114 | static void svm_complete_interrupts(struct vcpu_svm *svm); | ||
114 | 115 | ||
115 | static int nested_svm_exit_handled(struct vcpu_svm *svm, bool kvm_override); | 116 | static int nested_svm_exit_handled(struct vcpu_svm *svm, bool kvm_override); |
116 | static int nested_svm_vmexit(struct vcpu_svm *svm); | 117 | static int nested_svm_vmexit(struct vcpu_svm *svm); |
@@ -2324,6 +2325,8 @@ static int handle_exit(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu) | |||
2324 | } | 2325 | } |
2325 | } | 2326 | } |
2326 | 2327 | ||
2328 | svm_complete_interrupts(svm); | ||
2329 | |||
2327 | if (npt_enabled) { | 2330 | if (npt_enabled) { |
2328 | int mmu_reload = 0; | 2331 | int mmu_reload = 0; |
2329 | if ((vcpu->arch.cr0 ^ svm->vmcb->save.cr0) & X86_CR0_PG) { | 2332 | if ((vcpu->arch.cr0 ^ svm->vmcb->save.cr0) & X86_CR0_PG) { |
@@ -2690,8 +2693,6 @@ static void svm_vcpu_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run) | |||
2690 | vcpu->arch.regs_avail &= ~(1 << VCPU_EXREG_PDPTR); | 2693 | vcpu->arch.regs_avail &= ~(1 << VCPU_EXREG_PDPTR); |
2691 | vcpu->arch.regs_dirty &= ~(1 << VCPU_EXREG_PDPTR); | 2694 | vcpu->arch.regs_dirty &= ~(1 << VCPU_EXREG_PDPTR); |
2692 | } | 2695 | } |
2693 | |||
2694 | svm_complete_interrupts(svm); | ||
2695 | } | 2696 | } |
2696 | 2697 | ||
2697 | #undef R | 2698 | #undef R |