MIPS: KVM: Add guest mode switch trace events
authorJames Hogan <james.hogan@imgtec.com>
Tue, 14 Jun 2016 08:40:14 +0000 (09:40 +0100)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 14 Jun 2016 09:16:24 +0000 (11:16 +0200)
Add a few trace events for entering and coming out of guest mode, as well
as re-entering it from a guest exit exception.

Signed-off-by: James Hogan <james.hogan@imgtec.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Radim Krčmář <rkrcmar@redhat.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: kvm@vger.kernel.org
Cc: linux-mips@linux-mips.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/mips/kvm/mips.c
arch/mips/kvm/trace.h

index e9e40b9dd9be3d1d77ef8df84a4aaca4669fe6e0..b5ad2ba1847ab4e239c6a8bc86d6e19335ae0142 100644 (file)
@@ -410,7 +410,9 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *run)
        /* Disable hardware page table walking while in guest */
        htw_stop();
 
+       trace_kvm_enter(vcpu);
        r = vcpu->arch.vcpu_run(run, vcpu);
+       trace_kvm_out(vcpu);
 
        /* Re-enable HTW before enabling interrupts */
        htw_start();
@@ -1389,6 +1391,8 @@ skip_emul:
        }
 
        if (ret == RESUME_GUEST) {
+               trace_kvm_reenter(vcpu);
+
                /*
                 * If FPU / MSA are enabled (i.e. the guest's FPU / MSA context
                 * is live), restore FCR31 / MSACSR.
index 7daf7474d6a6894b8a69492705aa3bd8577ac1df..aec1c43f2b442300676d9a6df756d04038e5e421 100644 (file)
 #define TRACE_INCLUDE_PATH .
 #define TRACE_INCLUDE_FILE trace
 
+/*
+ * Tracepoints for VM enters
+ */
+TRACE_EVENT(kvm_enter,
+           TP_PROTO(struct kvm_vcpu *vcpu),
+           TP_ARGS(vcpu),
+           TP_STRUCT__entry(
+                       __field(unsigned long, pc)
+           ),
+
+           TP_fast_assign(
+                       __entry->pc = vcpu->arch.pc;
+           ),
+
+           TP_printk("PC: 0x%08lx",
+                     __entry->pc)
+);
+
+TRACE_EVENT(kvm_reenter,
+           TP_PROTO(struct kvm_vcpu *vcpu),
+           TP_ARGS(vcpu),
+           TP_STRUCT__entry(
+                       __field(unsigned long, pc)
+           ),
+
+           TP_fast_assign(
+                       __entry->pc = vcpu->arch.pc;
+           ),
+
+           TP_printk("PC: 0x%08lx",
+                     __entry->pc)
+);
+
+TRACE_EVENT(kvm_out,
+           TP_PROTO(struct kvm_vcpu *vcpu),
+           TP_ARGS(vcpu),
+           TP_STRUCT__entry(
+                       __field(unsigned long, pc)
+           ),
+
+           TP_fast_assign(
+                       __entry->pc = vcpu->arch.pc;
+           ),
+
+           TP_printk("PC: 0x%08lx",
+                     __entry->pc)
+);
+
 /* The first 32 exit reasons correspond to Cause.ExcCode */
 #define KVM_TRACE_EXIT_INT              0
 #define KVM_TRACE_EXIT_TLBMOD           1