aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kvm
diff options
context:
space:
mode:
authorAlexander Graf <agraf@suse.de>2012-08-14 19:38:43 -0400
committerAlexander Graf <agraf@suse.de>2012-10-05 17:38:48 -0400
commit166a2b7000c388aee81168987ce2eddb6783f550 (patch)
tree2d7bf8d120fabde1b7e5f0b9d6fc14f2b1247f5e /arch/powerpc/kvm
parent50c871edf59b4585fd2c17acfe4e7cd3752418b7 (diff)
KVM: PPC: Use symbols for exit trace
Exit traces are a lot easier to read when you don't have to remember cryptic numbers for guest exit reasons. Symbolify them in our trace output. Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'arch/powerpc/kvm')
-rw-r--r--arch/powerpc/kvm/trace.h58
1 files changed, 56 insertions, 2 deletions
diff --git a/arch/powerpc/kvm/trace.h b/arch/powerpc/kvm/trace.h
index cb2780a42fd8..519aba8bb3d3 100644
--- a/arch/powerpc/kvm/trace.h
+++ b/arch/powerpc/kvm/trace.h
@@ -31,6 +31,60 @@ TRACE_EVENT(kvm_ppc_instr,
31 __entry->inst, __entry->pc, __entry->emulate) 31 __entry->inst, __entry->pc, __entry->emulate)
32); 32);
33 33
34#ifdef CONFIG_PPC_BOOK3S
35#define kvm_trace_symbol_exit \
36 {0x100, "SYSTEM_RESET"}, \
37 {0x200, "MACHINE_CHECK"}, \
38 {0x300, "DATA_STORAGE"}, \
39 {0x380, "DATA_SEGMENT"}, \
40 {0x400, "INST_STORAGE"}, \
41 {0x480, "INST_SEGMENT"}, \
42 {0x500, "EXTERNAL"}, \
43 {0x501, "EXTERNAL_LEVEL"}, \
44 {0x502, "EXTERNAL_HV"}, \
45 {0x600, "ALIGNMENT"}, \
46 {0x700, "PROGRAM"}, \
47 {0x800, "FP_UNAVAIL"}, \
48 {0x900, "DECREMENTER"}, \
49 {0x980, "HV_DECREMENTER"}, \
50 {0xc00, "SYSCALL"}, \
51 {0xd00, "TRACE"}, \
52 {0xe00, "H_DATA_STORAGE"}, \
53 {0xe20, "H_INST_STORAGE"}, \
54 {0xe40, "H_EMUL_ASSIST"}, \
55 {0xf00, "PERFMON"}, \
56 {0xf20, "ALTIVEC"}, \
57 {0xf40, "VSX"}
58#else
59#define kvm_trace_symbol_exit \
60 {0, "CRITICAL"}, \
61 {1, "MACHINE_CHECK"}, \
62 {2, "DATA_STORAGE"}, \
63 {3, "INST_STORAGE"}, \
64 {4, "EXTERNAL"}, \
65 {5, "ALIGNMENT"}, \
66 {6, "PROGRAM"}, \
67 {7, "FP_UNAVAIL"}, \
68 {8, "SYSCALL"}, \
69 {9, "AP_UNAVAIL"}, \
70 {10, "DECREMENTER"}, \
71 {11, "FIT"}, \
72 {12, "WATCHDOG"}, \
73 {13, "DTLB_MISS"}, \
74 {14, "ITLB_MISS"}, \
75 {15, "DEBUG"}, \
76 {32, "SPE_UNAVAIL"}, \
77 {33, "SPE_FP_DATA"}, \
78 {34, "SPE_FP_ROUND"}, \
79 {35, "PERFORMANCE_MONITOR"}, \
80 {36, "DOORBELL"}, \
81 {37, "DOORBELL_CRITICAL"}, \
82 {38, "GUEST_DBELL"}, \
83 {39, "GUEST_DBELL_CRIT"}, \
84 {40, "HV_SYSCALL"}, \
85 {41, "HV_PRIV"}
86#endif
87
34TRACE_EVENT(kvm_exit, 88TRACE_EVENT(kvm_exit,
35 TP_PROTO(unsigned int exit_nr, struct kvm_vcpu *vcpu), 89 TP_PROTO(unsigned int exit_nr, struct kvm_vcpu *vcpu),
36 TP_ARGS(exit_nr, vcpu), 90 TP_ARGS(exit_nr, vcpu),
@@ -62,7 +116,7 @@ TRACE_EVENT(kvm_exit,
62 __entry->last_inst = vcpu->arch.last_inst; 116 __entry->last_inst = vcpu->arch.last_inst;
63 ), 117 ),
64 118
65 TP_printk("exit=0x%x" 119 TP_printk("exit=%s"
66 " | pc=0x%lx" 120 " | pc=0x%lx"
67 " | msr=0x%lx" 121 " | msr=0x%lx"
68 " | dar=0x%lx" 122 " | dar=0x%lx"
@@ -71,7 +125,7 @@ TRACE_EVENT(kvm_exit,
71#endif 125#endif
72 " | last_inst=0x%lx" 126 " | last_inst=0x%lx"
73 , 127 ,
74 __entry->exit_nr, 128 __print_symbolic(__entry->exit_nr, kvm_trace_symbol_exit),
75 __entry->pc, 129 __entry->pc,
76 __entry->msr, 130 __entry->msr,
77 __entry->dar, 131 __entry->dar,