aboutsummaryrefslogtreecommitdiff
path: root/kvm/kernel/svm.c
diff options
context:
space:
mode:
Diffstat (limited to 'kvm/kernel/svm.c')
-rw-r--r--kvm/kernel/svm.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/kvm/kernel/svm.c b/kvm/kernel/svm.c
index ccc06b1b9..7397bfbbc 100644
--- a/kvm/kernel/svm.c
+++ b/kvm/kernel/svm.c
@@ -17,6 +17,7 @@
#include <linux/module.h>
#include <linux/vmalloc.h>
#include <linux/highmem.h>
+#include <linux/profile.h>
#include <asm/desc.h>
#include "kvm_svm.h"
@@ -1406,7 +1407,8 @@ static int svm_vcpu_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
int r;
again:
- do_interrupt_requests(vcpu, kvm_run);
+ if (!vcpu->mmio_read_completed)
+ do_interrupt_requests(vcpu, kvm_run);
clgi();
@@ -1558,6 +1560,13 @@ again:
reload_tss(vcpu);
+ /*
+ * Profile KVM exit RIPs:
+ */
+ if (unlikely(prof_on == KVM_PROFILING))
+ profile_hit(KVM_PROFILING,
+ (void *)(unsigned long)vcpu->svm->vmcb->save.rip);
+
stgi();
kvm_reput_irq(vcpu);