diff options
author | Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> | 2013-10-07 12:47:58 -0400 |
---|---|---|
committer | Alexander Graf <agraf@suse.de> | 2013-10-17 09:37:16 -0400 |
commit | dba291f2ceacb833063179530eeb83a317a6cc95 (patch) | |
tree | 1ec867460600cd6851f19b78d728cd26ea972780 | |
parent | 72c1253574a1854b0b6f196e24cd0dd08c1ad9b9 (diff) |
kvm: powerpc: booke: Move booke related tracepoints to separate header
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
-rw-r--r-- | arch/powerpc/kvm/booke.c | 4 | ||||
-rw-r--r-- | arch/powerpc/kvm/e500_mmu.c | 2 | ||||
-rw-r--r-- | arch/powerpc/kvm/e500_mmu_host.c | 3 | ||||
-rw-r--r-- | arch/powerpc/kvm/trace.h | 204 | ||||
-rw-r--r-- | arch/powerpc/kvm/trace_booke.h | 177 |
5 files changed, 183 insertions, 207 deletions
diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c index e5f8ba793c31..1769354d0bf8 100644 --- a/arch/powerpc/kvm/booke.c +++ b/arch/powerpc/kvm/booke.c | |||
@@ -40,7 +40,9 @@ | |||
40 | 40 | ||
41 | #include "timing.h" | 41 | #include "timing.h" |
42 | #include "booke.h" | 42 | #include "booke.h" |
43 | #include "trace.h" | 43 | |
44 | #define CREATE_TRACE_POINTS | ||
45 | #include "trace_booke.h" | ||
44 | 46 | ||
45 | unsigned long kvmppc_booke_handlers; | 47 | unsigned long kvmppc_booke_handlers; |
46 | 48 | ||
diff --git a/arch/powerpc/kvm/e500_mmu.c b/arch/powerpc/kvm/e500_mmu.c index d25bb75aec90..ebca6b88ea5e 100644 --- a/arch/powerpc/kvm/e500_mmu.c +++ b/arch/powerpc/kvm/e500_mmu.c | |||
@@ -32,7 +32,7 @@ | |||
32 | #include <asm/kvm_ppc.h> | 32 | #include <asm/kvm_ppc.h> |
33 | 33 | ||
34 | #include "e500.h" | 34 | #include "e500.h" |
35 | #include "trace.h" | 35 | #include "trace_booke.h" |
36 | #include "timing.h" | 36 | #include "timing.h" |
37 | #include "e500_mmu_host.h" | 37 | #include "e500_mmu_host.h" |
38 | 38 | ||
diff --git a/arch/powerpc/kvm/e500_mmu_host.c b/arch/powerpc/kvm/e500_mmu_host.c index 8f0d532522db..e7dde4b88783 100644 --- a/arch/powerpc/kvm/e500_mmu_host.c +++ b/arch/powerpc/kvm/e500_mmu_host.c | |||
@@ -32,10 +32,11 @@ | |||
32 | #include <asm/kvm_ppc.h> | 32 | #include <asm/kvm_ppc.h> |
33 | 33 | ||
34 | #include "e500.h" | 34 | #include "e500.h" |
35 | #include "trace.h" | ||
36 | #include "timing.h" | 35 | #include "timing.h" |
37 | #include "e500_mmu_host.h" | 36 | #include "e500_mmu_host.h" |
38 | 37 | ||
38 | #include "trace_booke.h" | ||
39 | |||
39 | #define to_htlb1_esel(esel) (host_tlb_params[1].entries - (esel) - 1) | 40 | #define to_htlb1_esel(esel) (host_tlb_params[1].entries - (esel) - 1) |
40 | 41 | ||
41 | static struct kvmppc_e500_tlb_params host_tlb_params[E500_TLB_NUM]; | 42 | static struct kvmppc_e500_tlb_params host_tlb_params[E500_TLB_NUM]; |
diff --git a/arch/powerpc/kvm/trace.h b/arch/powerpc/kvm/trace.h index 80f252af6cb8..2e0e67ef3544 100644 --- a/arch/powerpc/kvm/trace.h +++ b/arch/powerpc/kvm/trace.h | |||
@@ -31,116 +31,6 @@ 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 | |||
88 | #ifndef CONFIG_KVM_BOOK3S_PR_POSSIBLE | ||
89 | /* | ||
90 | * For pr we define this in trace_pr.h since it pr can be built as | ||
91 | * a module | ||
92 | */ | ||
93 | |||
94 | TRACE_EVENT(kvm_exit, | ||
95 | TP_PROTO(unsigned int exit_nr, struct kvm_vcpu *vcpu), | ||
96 | TP_ARGS(exit_nr, vcpu), | ||
97 | |||
98 | TP_STRUCT__entry( | ||
99 | __field( unsigned int, exit_nr ) | ||
100 | __field( unsigned long, pc ) | ||
101 | __field( unsigned long, msr ) | ||
102 | __field( unsigned long, dar ) | ||
103 | __field( unsigned long, last_inst ) | ||
104 | ), | ||
105 | |||
106 | TP_fast_assign( | ||
107 | __entry->exit_nr = exit_nr; | ||
108 | __entry->pc = kvmppc_get_pc(vcpu); | ||
109 | __entry->dar = kvmppc_get_fault_dar(vcpu); | ||
110 | __entry->msr = vcpu->arch.shared->msr; | ||
111 | __entry->last_inst = vcpu->arch.last_inst; | ||
112 | ), | ||
113 | |||
114 | TP_printk("exit=%s" | ||
115 | " | pc=0x%lx" | ||
116 | " | msr=0x%lx" | ||
117 | " | dar=0x%lx" | ||
118 | " | last_inst=0x%lx" | ||
119 | , | ||
120 | __print_symbolic(__entry->exit_nr, kvm_trace_symbol_exit), | ||
121 | __entry->pc, | ||
122 | __entry->msr, | ||
123 | __entry->dar, | ||
124 | __entry->last_inst | ||
125 | ) | ||
126 | ); | ||
127 | |||
128 | TRACE_EVENT(kvm_unmap_hva, | ||
129 | TP_PROTO(unsigned long hva), | ||
130 | TP_ARGS(hva), | ||
131 | |||
132 | TP_STRUCT__entry( | ||
133 | __field( unsigned long, hva ) | ||
134 | ), | ||
135 | |||
136 | TP_fast_assign( | ||
137 | __entry->hva = hva; | ||
138 | ), | ||
139 | |||
140 | TP_printk("unmap hva 0x%lx\n", __entry->hva) | ||
141 | ); | ||
142 | #endif | ||
143 | |||
144 | TRACE_EVENT(kvm_stlb_inval, | 34 | TRACE_EVENT(kvm_stlb_inval, |
145 | TP_PROTO(unsigned int stlb_index), | 35 | TP_PROTO(unsigned int stlb_index), |
146 | TP_ARGS(stlb_index), | 36 | TP_ARGS(stlb_index), |
@@ -226,100 +116,6 @@ TRACE_EVENT(kvm_check_requests, | |||
226 | __entry->cpu_nr, __entry->requests) | 116 | __entry->cpu_nr, __entry->requests) |
227 | ); | 117 | ); |
228 | 118 | ||
229 | /************************************************************************* | ||
230 | * Book3E trace points * | ||
231 | *************************************************************************/ | ||
232 | |||
233 | #ifdef CONFIG_BOOKE | ||
234 | |||
235 | TRACE_EVENT(kvm_booke206_stlb_write, | ||
236 | TP_PROTO(__u32 mas0, __u32 mas8, __u32 mas1, __u64 mas2, __u64 mas7_3), | ||
237 | TP_ARGS(mas0, mas8, mas1, mas2, mas7_3), | ||
238 | |||
239 | TP_STRUCT__entry( | ||
240 | __field( __u32, mas0 ) | ||
241 | __field( __u32, mas8 ) | ||
242 | __field( __u32, mas1 ) | ||
243 | __field( __u64, mas2 ) | ||
244 | __field( __u64, mas7_3 ) | ||
245 | ), | ||
246 | |||
247 | TP_fast_assign( | ||
248 | __entry->mas0 = mas0; | ||
249 | __entry->mas8 = mas8; | ||
250 | __entry->mas1 = mas1; | ||
251 | __entry->mas2 = mas2; | ||
252 | __entry->mas7_3 = mas7_3; | ||
253 | ), | ||
254 | |||
255 | TP_printk("mas0=%x mas8=%x mas1=%x mas2=%llx mas7_3=%llx", | ||
256 | __entry->mas0, __entry->mas8, __entry->mas1, | ||
257 | __entry->mas2, __entry->mas7_3) | ||
258 | ); | ||
259 | |||
260 | TRACE_EVENT(kvm_booke206_gtlb_write, | ||
261 | TP_PROTO(__u32 mas0, __u32 mas1, __u64 mas2, __u64 mas7_3), | ||
262 | TP_ARGS(mas0, mas1, mas2, mas7_3), | ||
263 | |||
264 | TP_STRUCT__entry( | ||
265 | __field( __u32, mas0 ) | ||
266 | __field( __u32, mas1 ) | ||
267 | __field( __u64, mas2 ) | ||
268 | __field( __u64, mas7_3 ) | ||
269 | ), | ||
270 | |||
271 | TP_fast_assign( | ||
272 | __entry->mas0 = mas0; | ||
273 | __entry->mas1 = mas1; | ||
274 | __entry->mas2 = mas2; | ||
275 | __entry->mas7_3 = mas7_3; | ||
276 | ), | ||
277 | |||
278 | TP_printk("mas0=%x mas1=%x mas2=%llx mas7_3=%llx", | ||
279 | __entry->mas0, __entry->mas1, | ||
280 | __entry->mas2, __entry->mas7_3) | ||
281 | ); | ||
282 | |||
283 | TRACE_EVENT(kvm_booke206_ref_release, | ||
284 | TP_PROTO(__u64 pfn, __u32 flags), | ||
285 | TP_ARGS(pfn, flags), | ||
286 | |||
287 | TP_STRUCT__entry( | ||
288 | __field( __u64, pfn ) | ||
289 | __field( __u32, flags ) | ||
290 | ), | ||
291 | |||
292 | TP_fast_assign( | ||
293 | __entry->pfn = pfn; | ||
294 | __entry->flags = flags; | ||
295 | ), | ||
296 | |||
297 | TP_printk("pfn=%llx flags=%x", | ||
298 | __entry->pfn, __entry->flags) | ||
299 | ); | ||
300 | |||
301 | TRACE_EVENT(kvm_booke_queue_irqprio, | ||
302 | TP_PROTO(struct kvm_vcpu *vcpu, unsigned int priority), | ||
303 | TP_ARGS(vcpu, priority), | ||
304 | |||
305 | TP_STRUCT__entry( | ||
306 | __field( __u32, cpu_nr ) | ||
307 | __field( __u32, priority ) | ||
308 | __field( unsigned long, pending ) | ||
309 | ), | ||
310 | |||
311 | TP_fast_assign( | ||
312 | __entry->cpu_nr = vcpu->vcpu_id; | ||
313 | __entry->priority = priority; | ||
314 | __entry->pending = vcpu->arch.pending_exceptions; | ||
315 | ), | ||
316 | |||
317 | TP_printk("vcpu=%x prio=%x pending=%lx", | ||
318 | __entry->cpu_nr, __entry->priority, __entry->pending) | ||
319 | ); | ||
320 | |||
321 | #endif | ||
322 | |||
323 | #endif /* _TRACE_KVM_H */ | 119 | #endif /* _TRACE_KVM_H */ |
324 | 120 | ||
325 | /* This part must be outside protection */ | 121 | /* This part must be outside protection */ |
diff --git a/arch/powerpc/kvm/trace_booke.h b/arch/powerpc/kvm/trace_booke.h new file mode 100644 index 000000000000..f7537cf26ce7 --- /dev/null +++ b/arch/powerpc/kvm/trace_booke.h | |||
@@ -0,0 +1,177 @@ | |||
1 | #if !defined(_TRACE_KVM_BOOKE_H) || defined(TRACE_HEADER_MULTI_READ) | ||
2 | #define _TRACE_KVM_BOOKE_H | ||
3 | |||
4 | #include <linux/tracepoint.h> | ||
5 | |||
6 | #undef TRACE_SYSTEM | ||
7 | #define TRACE_SYSTEM kvm_booke | ||
8 | #define TRACE_INCLUDE_PATH . | ||
9 | #define TRACE_INCLUDE_FILE trace_booke | ||
10 | |||
11 | #define kvm_trace_symbol_exit \ | ||
12 | {0, "CRITICAL"}, \ | ||
13 | {1, "MACHINE_CHECK"}, \ | ||
14 | {2, "DATA_STORAGE"}, \ | ||
15 | {3, "INST_STORAGE"}, \ | ||
16 | {4, "EXTERNAL"}, \ | ||
17 | {5, "ALIGNMENT"}, \ | ||
18 | {6, "PROGRAM"}, \ | ||
19 | {7, "FP_UNAVAIL"}, \ | ||
20 | {8, "SYSCALL"}, \ | ||
21 | {9, "AP_UNAVAIL"}, \ | ||
22 | {10, "DECREMENTER"}, \ | ||
23 | {11, "FIT"}, \ | ||
24 | {12, "WATCHDOG"}, \ | ||
25 | {13, "DTLB_MISS"}, \ | ||
26 | {14, "ITLB_MISS"}, \ | ||
27 | {15, "DEBUG"}, \ | ||
28 | {32, "SPE_UNAVAIL"}, \ | ||
29 | {33, "SPE_FP_DATA"}, \ | ||
30 | {34, "SPE_FP_ROUND"}, \ | ||
31 | {35, "PERFORMANCE_MONITOR"}, \ | ||
32 | {36, "DOORBELL"}, \ | ||
33 | {37, "DOORBELL_CRITICAL"}, \ | ||
34 | {38, "GUEST_DBELL"}, \ | ||
35 | {39, "GUEST_DBELL_CRIT"}, \ | ||
36 | {40, "HV_SYSCALL"}, \ | ||
37 | {41, "HV_PRIV"} | ||
38 | |||
39 | TRACE_EVENT(kvm_exit, | ||
40 | TP_PROTO(unsigned int exit_nr, struct kvm_vcpu *vcpu), | ||
41 | TP_ARGS(exit_nr, vcpu), | ||
42 | |||
43 | TP_STRUCT__entry( | ||
44 | __field( unsigned int, exit_nr ) | ||
45 | __field( unsigned long, pc ) | ||
46 | __field( unsigned long, msr ) | ||
47 | __field( unsigned long, dar ) | ||
48 | __field( unsigned long, last_inst ) | ||
49 | ), | ||
50 | |||
51 | TP_fast_assign( | ||
52 | __entry->exit_nr = exit_nr; | ||
53 | __entry->pc = kvmppc_get_pc(vcpu); | ||
54 | __entry->dar = kvmppc_get_fault_dar(vcpu); | ||
55 | __entry->msr = vcpu->arch.shared->msr; | ||
56 | __entry->last_inst = vcpu->arch.last_inst; | ||
57 | ), | ||
58 | |||
59 | TP_printk("exit=%s" | ||
60 | " | pc=0x%lx" | ||
61 | " | msr=0x%lx" | ||
62 | " | dar=0x%lx" | ||
63 | " | last_inst=0x%lx" | ||
64 | , | ||
65 | __print_symbolic(__entry->exit_nr, kvm_trace_symbol_exit), | ||
66 | __entry->pc, | ||
67 | __entry->msr, | ||
68 | __entry->dar, | ||
69 | __entry->last_inst | ||
70 | ) | ||
71 | ); | ||
72 | |||
73 | TRACE_EVENT(kvm_unmap_hva, | ||
74 | TP_PROTO(unsigned long hva), | ||
75 | TP_ARGS(hva), | ||
76 | |||
77 | TP_STRUCT__entry( | ||
78 | __field( unsigned long, hva ) | ||
79 | ), | ||
80 | |||
81 | TP_fast_assign( | ||
82 | __entry->hva = hva; | ||
83 | ), | ||
84 | |||
85 | TP_printk("unmap hva 0x%lx\n", __entry->hva) | ||
86 | ); | ||
87 | |||
88 | TRACE_EVENT(kvm_booke206_stlb_write, | ||
89 | TP_PROTO(__u32 mas0, __u32 mas8, __u32 mas1, __u64 mas2, __u64 mas7_3), | ||
90 | TP_ARGS(mas0, mas8, mas1, mas2, mas7_3), | ||
91 | |||
92 | TP_STRUCT__entry( | ||
93 | __field( __u32, mas0 ) | ||
94 | __field( __u32, mas8 ) | ||
95 | __field( __u32, mas1 ) | ||
96 | __field( __u64, mas2 ) | ||
97 | __field( __u64, mas7_3 ) | ||
98 | ), | ||
99 | |||
100 | TP_fast_assign( | ||
101 | __entry->mas0 = mas0; | ||
102 | __entry->mas8 = mas8; | ||
103 | __entry->mas1 = mas1; | ||
104 | __entry->mas2 = mas2; | ||
105 | __entry->mas7_3 = mas7_3; | ||
106 | ), | ||
107 | |||
108 | TP_printk("mas0=%x mas8=%x mas1=%x mas2=%llx mas7_3=%llx", | ||
109 | __entry->mas0, __entry->mas8, __entry->mas1, | ||
110 | __entry->mas2, __entry->mas7_3) | ||
111 | ); | ||
112 | |||
113 | TRACE_EVENT(kvm_booke206_gtlb_write, | ||
114 | TP_PROTO(__u32 mas0, __u32 mas1, __u64 mas2, __u64 mas7_3), | ||
115 | TP_ARGS(mas0, mas1, mas2, mas7_3), | ||
116 | |||
117 | TP_STRUCT__entry( | ||
118 | __field( __u32, mas0 ) | ||
119 | __field( __u32, mas1 ) | ||
120 | __field( __u64, mas2 ) | ||
121 | __field( __u64, mas7_3 ) | ||
122 | ), | ||
123 | |||
124 | TP_fast_assign( | ||
125 | __entry->mas0 = mas0; | ||
126 | __entry->mas1 = mas1; | ||
127 | __entry->mas2 = mas2; | ||
128 | __entry->mas7_3 = mas7_3; | ||
129 | ), | ||
130 | |||
131 | TP_printk("mas0=%x mas1=%x mas2=%llx mas7_3=%llx", | ||
132 | __entry->mas0, __entry->mas1, | ||
133 | __entry->mas2, __entry->mas7_3) | ||
134 | ); | ||
135 | |||
136 | TRACE_EVENT(kvm_booke206_ref_release, | ||
137 | TP_PROTO(__u64 pfn, __u32 flags), | ||
138 | TP_ARGS(pfn, flags), | ||
139 | |||
140 | TP_STRUCT__entry( | ||
141 | __field( __u64, pfn ) | ||
142 | __field( __u32, flags ) | ||
143 | ), | ||
144 | |||
145 | TP_fast_assign( | ||
146 | __entry->pfn = pfn; | ||
147 | __entry->flags = flags; | ||
148 | ), | ||
149 | |||
150 | TP_printk("pfn=%llx flags=%x", | ||
151 | __entry->pfn, __entry->flags) | ||
152 | ); | ||
153 | |||
154 | TRACE_EVENT(kvm_booke_queue_irqprio, | ||
155 | TP_PROTO(struct kvm_vcpu *vcpu, unsigned int priority), | ||
156 | TP_ARGS(vcpu, priority), | ||
157 | |||
158 | TP_STRUCT__entry( | ||
159 | __field( __u32, cpu_nr ) | ||
160 | __field( __u32, priority ) | ||
161 | __field( unsigned long, pending ) | ||
162 | ), | ||
163 | |||
164 | TP_fast_assign( | ||
165 | __entry->cpu_nr = vcpu->vcpu_id; | ||
166 | __entry->priority = priority; | ||
167 | __entry->pending = vcpu->arch.pending_exceptions; | ||
168 | ), | ||
169 | |||
170 | TP_printk("vcpu=%x prio=%x pending=%lx", | ||
171 | __entry->cpu_nr, __entry->priority, __entry->pending) | ||
172 | ); | ||
173 | |||
174 | #endif | ||
175 | |||
176 | /* This part must be outside protection */ | ||
177 | #include <trace/define_trace.h> | ||