|
@@ -111,6 +111,7 @@ static int nested = 0;
|
|
|
module_param(nested, int, S_IRUGO);
|
|
|
|
|
|
static void svm_flush_tlb(struct kvm_vcpu *vcpu);
|
|
|
+static void svm_complete_interrupts(struct vcpu_svm *svm);
|
|
|
|
|
|
static int nested_svm_exit_handled(struct vcpu_svm *svm, bool kvm_override);
|
|
|
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)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ svm_complete_interrupts(svm);
|
|
|
+
|
|
|
if (npt_enabled) {
|
|
|
int mmu_reload = 0;
|
|
|
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)
|
|
|
vcpu->arch.regs_avail &= ~(1 << VCPU_EXREG_PDPTR);
|
|
|
vcpu->arch.regs_dirty &= ~(1 << VCPU_EXREG_PDPTR);
|
|
|
}
|
|
|
-
|
|
|
- svm_complete_interrupts(svm);
|
|
|
}
|
|
|
|
|
|
#undef R
|