diff options
Diffstat (limited to 'kvm/kernel/svm.c')
-rw-r--r-- | kvm/kernel/svm.c | 11 |
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); |