MIPS: KVM: Add kvm_asid_change trace event
authorJames Hogan <james.hogan@imgtec.com>
Tue, 14 Jun 2016 08:40:13 +0000 (09:40 +0100)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 14 Jun 2016 09:16:23 +0000 (11:16 +0200)
Add a trace event for guest ASID changes, replacing the existing
kvm_debug call.

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/emulate.c
arch/mips/kvm/trace.h

index fce08bda9ebccc4197032573adc5638c807f3065..ee0e61d2b6fb2612a5c1555f2970a9fdaf2a1e0e 100644 (file)
@@ -1082,11 +1082,10 @@ enum emulation_result kvm_mips_emulate_CP0(u32 inst, u32 *opc, u32 cause,
                                if ((KSEGX(vcpu->arch.gprs[rt]) != CKSEG0) &&
                                    ((kvm_read_c0_guest_entryhi(cop0) &
                                      KVM_ENTRYHI_ASID) != nasid)) {
-                                       kvm_debug("MTCz, change ASID from %#lx to %#lx\n",
+                                       trace_kvm_asid_change(vcpu,
                                                kvm_read_c0_guest_entryhi(cop0)
-                                               & KVM_ENTRYHI_ASID,
-                                               vcpu->arch.gprs[rt]
-                                               & KVM_ENTRYHI_ASID);
+                                                       & KVM_ENTRYHI_ASID,
+                                               nasid);
 
                                        /* Blow away the shadow host TLBs */
                                        kvm_mips_flush_host_tlb(1);
index ffa6ee8f20250acd9f19cbaca295cadf412aad31..7daf7474d6a6894b8a69492705aa3bd8577ac1df 100644 (file)
@@ -122,6 +122,28 @@ TRACE_EVENT(kvm_aux,
                      __entry->pc)
 );
 
+TRACE_EVENT(kvm_asid_change,
+           TP_PROTO(struct kvm_vcpu *vcpu, unsigned int old_asid,
+                    unsigned int new_asid),
+           TP_ARGS(vcpu, old_asid, new_asid),
+           TP_STRUCT__entry(
+                       __field(unsigned long, pc)
+                       __field(u8, old_asid)
+                       __field(u8, new_asid)
+           ),
+
+           TP_fast_assign(
+                       __entry->pc = vcpu->arch.pc;
+                       __entry->old_asid = old_asid;
+                       __entry->new_asid = new_asid;
+           ),
+
+           TP_printk("PC: 0x%08lx old: 0x%02x new: 0x%02x",
+                     __entry->pc,
+                     __entry->old_asid,
+                     __entry->new_asid)
+);
+
 #endif /* _TRACE_KVM_H */
 
 /* This part must be outside protection */