aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>2013-10-07 12:47:57 -0400
committerAlexander Graf <agraf@suse.de>2013-10-17 09:36:22 -0400
commit72c1253574a1854b0b6f196e24cd0dd08c1ad9b9 (patch)
tree3564efc426ce20608781d14a056484c4b18b0386
parent699cc87641c123128bf3a4e12c0a8d739b1ac2f3 (diff)
kvm: powerpc: book3s: pr: move PR related tracepoints to a separate header
This patch moves PR related tracepoints to a separate header. This enables in converting PR to a kernel module which will be done in later patches 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/book3s_64_mmu_host.c2
-rw-r--r--arch/powerpc/kvm/book3s_mmu_hpte.c2
-rw-r--r--arch/powerpc/kvm/book3s_pr.c4
-rw-r--r--arch/powerpc/kvm/trace.h234
-rw-r--r--arch/powerpc/kvm/trace_pr.h297
5 files changed, 309 insertions, 230 deletions
diff --git a/arch/powerpc/kvm/book3s_64_mmu_host.c b/arch/powerpc/kvm/book3s_64_mmu_host.c
index 819672c9d787..0d513af62bba 100644
--- a/arch/powerpc/kvm/book3s_64_mmu_host.c
+++ b/arch/powerpc/kvm/book3s_64_mmu_host.c
@@ -27,7 +27,7 @@
27#include <asm/machdep.h> 27#include <asm/machdep.h>
28#include <asm/mmu_context.h> 28#include <asm/mmu_context.h>
29#include <asm/hw_irq.h> 29#include <asm/hw_irq.h>
30#include "trace.h" 30#include "trace_pr.h"
31 31
32#define PTE_SIZE 12 32#define PTE_SIZE 12
33 33
diff --git a/arch/powerpc/kvm/book3s_mmu_hpte.c b/arch/powerpc/kvm/book3s_mmu_hpte.c
index 6b79bfc44ba5..5a1ab1250a05 100644
--- a/arch/powerpc/kvm/book3s_mmu_hpte.c
+++ b/arch/powerpc/kvm/book3s_mmu_hpte.c
@@ -28,7 +28,7 @@
28#include <asm/mmu_context.h> 28#include <asm/mmu_context.h>
29#include <asm/hw_irq.h> 29#include <asm/hw_irq.h>
30 30
31#include "trace.h" 31#include "trace_pr.h"
32 32
33#define PTE_SIZE 12 33#define PTE_SIZE 12
34 34
diff --git a/arch/powerpc/kvm/book3s_pr.c b/arch/powerpc/kvm/book3s_pr.c
index b6a525d7b5c3..ca6c73d2ee77 100644
--- a/arch/powerpc/kvm/book3s_pr.c
+++ b/arch/powerpc/kvm/book3s_pr.c
@@ -42,7 +42,9 @@
42#include <linux/highmem.h> 42#include <linux/highmem.h>
43 43
44#include "book3s.h" 44#include "book3s.h"
45#include "trace.h" 45
46#define CREATE_TRACE_POINTS
47#include "trace_pr.h"
46 48
47/* #define EXIT_DEBUG */ 49/* #define EXIT_DEBUG */
48/* #define DEBUG_EXT */ 50/* #define DEBUG_EXT */
diff --git a/arch/powerpc/kvm/trace.h b/arch/powerpc/kvm/trace.h
index 9e8368edf371..80f252af6cb8 100644
--- a/arch/powerpc/kvm/trace.h
+++ b/arch/powerpc/kvm/trace.h
@@ -85,6 +85,12 @@ TRACE_EVENT(kvm_ppc_instr,
85 {41, "HV_PRIV"} 85 {41, "HV_PRIV"}
86#endif 86#endif
87 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
88TRACE_EVENT(kvm_exit, 94TRACE_EVENT(kvm_exit,
89 TP_PROTO(unsigned int exit_nr, struct kvm_vcpu *vcpu), 95 TP_PROTO(unsigned int exit_nr, struct kvm_vcpu *vcpu),
90 TP_ARGS(exit_nr, vcpu), 96 TP_ARGS(exit_nr, vcpu),
@@ -94,9 +100,6 @@ TRACE_EVENT(kvm_exit,
94 __field( unsigned long, pc ) 100 __field( unsigned long, pc )
95 __field( unsigned long, msr ) 101 __field( unsigned long, msr )
96 __field( unsigned long, dar ) 102 __field( unsigned long, dar )
97#ifdef CONFIG_KVM_BOOK3S_PR_POSSIBLE
98 __field( unsigned long, srr1 )
99#endif
100 __field( unsigned long, last_inst ) 103 __field( unsigned long, last_inst )
101 ), 104 ),
102 105
@@ -105,9 +108,6 @@ TRACE_EVENT(kvm_exit,
105 __entry->pc = kvmppc_get_pc(vcpu); 108 __entry->pc = kvmppc_get_pc(vcpu);
106 __entry->dar = kvmppc_get_fault_dar(vcpu); 109 __entry->dar = kvmppc_get_fault_dar(vcpu);
107 __entry->msr = vcpu->arch.shared->msr; 110 __entry->msr = vcpu->arch.shared->msr;
108#ifdef CONFIG_KVM_BOOK3S_PR_POSSIBLE
109 __entry->srr1 = vcpu->arch.shadow_srr1;
110#endif
111 __entry->last_inst = vcpu->arch.last_inst; 111 __entry->last_inst = vcpu->arch.last_inst;
112 ), 112 ),
113 113
@@ -115,18 +115,12 @@ TRACE_EVENT(kvm_exit,
115 " | pc=0x%lx" 115 " | pc=0x%lx"
116 " | msr=0x%lx" 116 " | msr=0x%lx"
117 " | dar=0x%lx" 117 " | dar=0x%lx"
118#ifdef CONFIG_KVM_BOOK3S_PR_POSSIBLE
119 " | srr1=0x%lx"
120#endif
121 " | last_inst=0x%lx" 118 " | last_inst=0x%lx"
122 , 119 ,
123 __print_symbolic(__entry->exit_nr, kvm_trace_symbol_exit), 120 __print_symbolic(__entry->exit_nr, kvm_trace_symbol_exit),
124 __entry->pc, 121 __entry->pc,
125 __entry->msr, 122 __entry->msr,
126 __entry->dar, 123 __entry->dar,
127#ifdef CONFIG_KVM_BOOK3S_PR_POSSIBLE
128 __entry->srr1,
129#endif
130 __entry->last_inst 124 __entry->last_inst
131 ) 125 )
132); 126);
@@ -145,6 +139,7 @@ TRACE_EVENT(kvm_unmap_hva,
145 139
146 TP_printk("unmap hva 0x%lx\n", __entry->hva) 140 TP_printk("unmap hva 0x%lx\n", __entry->hva)
147); 141);
142#endif
148 143
149TRACE_EVENT(kvm_stlb_inval, 144TRACE_EVENT(kvm_stlb_inval,
150 TP_PROTO(unsigned int stlb_index), 145 TP_PROTO(unsigned int stlb_index),
@@ -231,221 +226,6 @@ TRACE_EVENT(kvm_check_requests,
231 __entry->cpu_nr, __entry->requests) 226 __entry->cpu_nr, __entry->requests)
232); 227);
233 228
234
235/*************************************************************************
236 * Book3S trace points *
237 *************************************************************************/
238
239#ifdef CONFIG_KVM_BOOK3S_PR_POSSIBLE
240
241TRACE_EVENT(kvm_book3s_reenter,
242 TP_PROTO(int r, struct kvm_vcpu *vcpu),
243 TP_ARGS(r, vcpu),
244
245 TP_STRUCT__entry(
246 __field( unsigned int, r )
247 __field( unsigned long, pc )
248 ),
249
250 TP_fast_assign(
251 __entry->r = r;
252 __entry->pc = kvmppc_get_pc(vcpu);
253 ),
254
255 TP_printk("reentry r=%d | pc=0x%lx", __entry->r, __entry->pc)
256);
257
258#ifdef CONFIG_PPC_BOOK3S_64
259
260TRACE_EVENT(kvm_book3s_64_mmu_map,
261 TP_PROTO(int rflags, ulong hpteg, ulong va, pfn_t hpaddr,
262 struct kvmppc_pte *orig_pte),
263 TP_ARGS(rflags, hpteg, va, hpaddr, orig_pte),
264
265 TP_STRUCT__entry(
266 __field( unsigned char, flag_w )
267 __field( unsigned char, flag_x )
268 __field( unsigned long, eaddr )
269 __field( unsigned long, hpteg )
270 __field( unsigned long, va )
271 __field( unsigned long long, vpage )
272 __field( unsigned long, hpaddr )
273 ),
274
275 TP_fast_assign(
276 __entry->flag_w = ((rflags & HPTE_R_PP) == 3) ? '-' : 'w';
277 __entry->flag_x = (rflags & HPTE_R_N) ? '-' : 'x';
278 __entry->eaddr = orig_pte->eaddr;
279 __entry->hpteg = hpteg;
280 __entry->va = va;
281 __entry->vpage = orig_pte->vpage;
282 __entry->hpaddr = hpaddr;
283 ),
284
285 TP_printk("KVM: %c%c Map 0x%lx: [%lx] 0x%lx (0x%llx) -> %lx",
286 __entry->flag_w, __entry->flag_x, __entry->eaddr,
287 __entry->hpteg, __entry->va, __entry->vpage, __entry->hpaddr)
288);
289
290#endif /* CONFIG_PPC_BOOK3S_64 */
291
292TRACE_EVENT(kvm_book3s_mmu_map,
293 TP_PROTO(struct hpte_cache *pte),
294 TP_ARGS(pte),
295
296 TP_STRUCT__entry(
297 __field( u64, host_vpn )
298 __field( u64, pfn )
299 __field( ulong, eaddr )
300 __field( u64, vpage )
301 __field( ulong, raddr )
302 __field( int, flags )
303 ),
304
305 TP_fast_assign(
306 __entry->host_vpn = pte->host_vpn;
307 __entry->pfn = pte->pfn;
308 __entry->eaddr = pte->pte.eaddr;
309 __entry->vpage = pte->pte.vpage;
310 __entry->raddr = pte->pte.raddr;
311 __entry->flags = (pte->pte.may_read ? 0x4 : 0) |
312 (pte->pte.may_write ? 0x2 : 0) |
313 (pte->pte.may_execute ? 0x1 : 0);
314 ),
315
316 TP_printk("Map: hvpn=%llx pfn=%llx ea=%lx vp=%llx ra=%lx [%x]",
317 __entry->host_vpn, __entry->pfn, __entry->eaddr,
318 __entry->vpage, __entry->raddr, __entry->flags)
319);
320
321TRACE_EVENT(kvm_book3s_mmu_invalidate,
322 TP_PROTO(struct hpte_cache *pte),
323 TP_ARGS(pte),
324
325 TP_STRUCT__entry(
326 __field( u64, host_vpn )
327 __field( u64, pfn )
328 __field( ulong, eaddr )
329 __field( u64, vpage )
330 __field( ulong, raddr )
331 __field( int, flags )
332 ),
333
334 TP_fast_assign(
335 __entry->host_vpn = pte->host_vpn;
336 __entry->pfn = pte->pfn;
337 __entry->eaddr = pte->pte.eaddr;
338 __entry->vpage = pte->pte.vpage;
339 __entry->raddr = pte->pte.raddr;
340 __entry->flags = (pte->pte.may_read ? 0x4 : 0) |
341 (pte->pte.may_write ? 0x2 : 0) |
342 (pte->pte.may_execute ? 0x1 : 0);
343 ),
344
345 TP_printk("Flush: hva=%llx pfn=%llx ea=%lx vp=%llx ra=%lx [%x]",
346 __entry->host_vpn, __entry->pfn, __entry->eaddr,
347 __entry->vpage, __entry->raddr, __entry->flags)
348);
349
350TRACE_EVENT(kvm_book3s_mmu_flush,
351 TP_PROTO(const char *type, struct kvm_vcpu *vcpu, unsigned long long p1,
352 unsigned long long p2),
353 TP_ARGS(type, vcpu, p1, p2),
354
355 TP_STRUCT__entry(
356 __field( int, count )
357 __field( unsigned long long, p1 )
358 __field( unsigned long long, p2 )
359 __field( const char *, type )
360 ),
361
362 TP_fast_assign(
363 __entry->count = to_book3s(vcpu)->hpte_cache_count;
364 __entry->p1 = p1;
365 __entry->p2 = p2;
366 __entry->type = type;
367 ),
368
369 TP_printk("Flush %d %sPTEs: %llx - %llx",
370 __entry->count, __entry->type, __entry->p1, __entry->p2)
371);
372
373TRACE_EVENT(kvm_book3s_slb_found,
374 TP_PROTO(unsigned long long gvsid, unsigned long long hvsid),
375 TP_ARGS(gvsid, hvsid),
376
377 TP_STRUCT__entry(
378 __field( unsigned long long, gvsid )
379 __field( unsigned long long, hvsid )
380 ),
381
382 TP_fast_assign(
383 __entry->gvsid = gvsid;
384 __entry->hvsid = hvsid;
385 ),
386
387 TP_printk("%llx -> %llx", __entry->gvsid, __entry->hvsid)
388);
389
390TRACE_EVENT(kvm_book3s_slb_fail,
391 TP_PROTO(u16 sid_map_mask, unsigned long long gvsid),
392 TP_ARGS(sid_map_mask, gvsid),
393
394 TP_STRUCT__entry(
395 __field( unsigned short, sid_map_mask )
396 __field( unsigned long long, gvsid )
397 ),
398
399 TP_fast_assign(
400 __entry->sid_map_mask = sid_map_mask;
401 __entry->gvsid = gvsid;
402 ),
403
404 TP_printk("%x/%x: %llx", __entry->sid_map_mask,
405 SID_MAP_MASK - __entry->sid_map_mask, __entry->gvsid)
406);
407
408TRACE_EVENT(kvm_book3s_slb_map,
409 TP_PROTO(u16 sid_map_mask, unsigned long long gvsid,
410 unsigned long long hvsid),
411 TP_ARGS(sid_map_mask, gvsid, hvsid),
412
413 TP_STRUCT__entry(
414 __field( unsigned short, sid_map_mask )
415 __field( unsigned long long, guest_vsid )
416 __field( unsigned long long, host_vsid )
417 ),
418
419 TP_fast_assign(
420 __entry->sid_map_mask = sid_map_mask;
421 __entry->guest_vsid = gvsid;
422 __entry->host_vsid = hvsid;
423 ),
424
425 TP_printk("%x: %llx -> %llx", __entry->sid_map_mask,
426 __entry->guest_vsid, __entry->host_vsid)
427);
428
429TRACE_EVENT(kvm_book3s_slbmte,
430 TP_PROTO(u64 slb_vsid, u64 slb_esid),
431 TP_ARGS(slb_vsid, slb_esid),
432
433 TP_STRUCT__entry(
434 __field( u64, slb_vsid )
435 __field( u64, slb_esid )
436 ),
437
438 TP_fast_assign(
439 __entry->slb_vsid = slb_vsid;
440 __entry->slb_esid = slb_esid;
441 ),
442
443 TP_printk("%llx, %llx", __entry->slb_vsid, __entry->slb_esid)
444);
445
446#endif /* CONFIG_PPC_BOOK3S */
447
448
449/************************************************************************* 229/*************************************************************************
450 * Book3E trace points * 230 * Book3E trace points *
451 *************************************************************************/ 231 *************************************************************************/
diff --git a/arch/powerpc/kvm/trace_pr.h b/arch/powerpc/kvm/trace_pr.h
new file mode 100644
index 000000000000..8b22e4748344
--- /dev/null
+++ b/arch/powerpc/kvm/trace_pr.h
@@ -0,0 +1,297 @@
1
2#if !defined(_TRACE_KVM_PR_H) || defined(TRACE_HEADER_MULTI_READ)
3#define _TRACE_KVM_PR_H
4
5#include <linux/tracepoint.h>
6
7#undef TRACE_SYSTEM
8#define TRACE_SYSTEM kvm_pr
9#define TRACE_INCLUDE_PATH .
10#define TRACE_INCLUDE_FILE trace_pr
11
12#define kvm_trace_symbol_exit \
13 {0x100, "SYSTEM_RESET"}, \
14 {0x200, "MACHINE_CHECK"}, \
15 {0x300, "DATA_STORAGE"}, \
16 {0x380, "DATA_SEGMENT"}, \
17 {0x400, "INST_STORAGE"}, \
18 {0x480, "INST_SEGMENT"}, \
19 {0x500, "EXTERNAL"}, \
20 {0x501, "EXTERNAL_LEVEL"}, \
21 {0x502, "EXTERNAL_HV"}, \
22 {0x600, "ALIGNMENT"}, \
23 {0x700, "PROGRAM"}, \
24 {0x800, "FP_UNAVAIL"}, \
25 {0x900, "DECREMENTER"}, \
26 {0x980, "HV_DECREMENTER"}, \
27 {0xc00, "SYSCALL"}, \
28 {0xd00, "TRACE"}, \
29 {0xe00, "H_DATA_STORAGE"}, \
30 {0xe20, "H_INST_STORAGE"}, \
31 {0xe40, "H_EMUL_ASSIST"}, \
32 {0xf00, "PERFMON"}, \
33 {0xf20, "ALTIVEC"}, \
34 {0xf40, "VSX"}
35
36TRACE_EVENT(kvm_book3s_reenter,
37 TP_PROTO(int r, struct kvm_vcpu *vcpu),
38 TP_ARGS(r, vcpu),
39
40 TP_STRUCT__entry(
41 __field( unsigned int, r )
42 __field( unsigned long, pc )
43 ),
44
45 TP_fast_assign(
46 __entry->r = r;
47 __entry->pc = kvmppc_get_pc(vcpu);
48 ),
49
50 TP_printk("reentry r=%d | pc=0x%lx", __entry->r, __entry->pc)
51);
52
53#ifdef CONFIG_PPC_BOOK3S_64
54
55TRACE_EVENT(kvm_book3s_64_mmu_map,
56 TP_PROTO(int rflags, ulong hpteg, ulong va, pfn_t hpaddr,
57 struct kvmppc_pte *orig_pte),
58 TP_ARGS(rflags, hpteg, va, hpaddr, orig_pte),
59
60 TP_STRUCT__entry(
61 __field( unsigned char, flag_w )
62 __field( unsigned char, flag_x )
63 __field( unsigned long, eaddr )
64 __field( unsigned long, hpteg )
65 __field( unsigned long, va )
66 __field( unsigned long long, vpage )
67 __field( unsigned long, hpaddr )
68 ),
69
70 TP_fast_assign(
71 __entry->flag_w = ((rflags & HPTE_R_PP) == 3) ? '-' : 'w';
72 __entry->flag_x = (rflags & HPTE_R_N) ? '-' : 'x';
73 __entry->eaddr = orig_pte->eaddr;
74 __entry->hpteg = hpteg;
75 __entry->va = va;
76 __entry->vpage = orig_pte->vpage;
77 __entry->hpaddr = hpaddr;
78 ),
79
80 TP_printk("KVM: %c%c Map 0x%lx: [%lx] 0x%lx (0x%llx) -> %lx",
81 __entry->flag_w, __entry->flag_x, __entry->eaddr,
82 __entry->hpteg, __entry->va, __entry->vpage, __entry->hpaddr)
83);
84
85#endif /* CONFIG_PPC_BOOK3S_64 */
86
87TRACE_EVENT(kvm_book3s_mmu_map,
88 TP_PROTO(struct hpte_cache *pte),
89 TP_ARGS(pte),
90
91 TP_STRUCT__entry(
92 __field( u64, host_vpn )
93 __field( u64, pfn )
94 __field( ulong, eaddr )
95 __field( u64, vpage )
96 __field( ulong, raddr )
97 __field( int, flags )
98 ),
99
100 TP_fast_assign(
101 __entry->host_vpn = pte->host_vpn;
102 __entry->pfn = pte->pfn;
103 __entry->eaddr = pte->pte.eaddr;
104 __entry->vpage = pte->pte.vpage;
105 __entry->raddr = pte->pte.raddr;
106 __entry->flags = (pte->pte.may_read ? 0x4 : 0) |
107 (pte->pte.may_write ? 0x2 : 0) |
108 (pte->pte.may_execute ? 0x1 : 0);
109 ),
110
111 TP_printk("Map: hvpn=%llx pfn=%llx ea=%lx vp=%llx ra=%lx [%x]",
112 __entry->host_vpn, __entry->pfn, __entry->eaddr,
113 __entry->vpage, __entry->raddr, __entry->flags)
114);
115
116TRACE_EVENT(kvm_book3s_mmu_invalidate,
117 TP_PROTO(struct hpte_cache *pte),
118 TP_ARGS(pte),
119
120 TP_STRUCT__entry(
121 __field( u64, host_vpn )
122 __field( u64, pfn )
123 __field( ulong, eaddr )
124 __field( u64, vpage )
125 __field( ulong, raddr )
126 __field( int, flags )
127 ),
128
129 TP_fast_assign(
130 __entry->host_vpn = pte->host_vpn;
131 __entry->pfn = pte->pfn;
132 __entry->eaddr = pte->pte.eaddr;
133 __entry->vpage = pte->pte.vpage;
134 __entry->raddr = pte->pte.raddr;
135 __entry->flags = (pte->pte.may_read ? 0x4 : 0) |
136 (pte->pte.may_write ? 0x2 : 0) |
137 (pte->pte.may_execute ? 0x1 : 0);
138 ),
139
140 TP_printk("Flush: hva=%llx pfn=%llx ea=%lx vp=%llx ra=%lx [%x]",
141 __entry->host_vpn, __entry->pfn, __entry->eaddr,
142 __entry->vpage, __entry->raddr, __entry->flags)
143);
144
145TRACE_EVENT(kvm_book3s_mmu_flush,
146 TP_PROTO(const char *type, struct kvm_vcpu *vcpu, unsigned long long p1,
147 unsigned long long p2),
148 TP_ARGS(type, vcpu, p1, p2),
149
150 TP_STRUCT__entry(
151 __field( int, count )
152 __field( unsigned long long, p1 )
153 __field( unsigned long long, p2 )
154 __field( const char *, type )
155 ),
156
157 TP_fast_assign(
158 __entry->count = to_book3s(vcpu)->hpte_cache_count;
159 __entry->p1 = p1;
160 __entry->p2 = p2;
161 __entry->type = type;
162 ),
163
164 TP_printk("Flush %d %sPTEs: %llx - %llx",
165 __entry->count, __entry->type, __entry->p1, __entry->p2)
166);
167
168TRACE_EVENT(kvm_book3s_slb_found,
169 TP_PROTO(unsigned long long gvsid, unsigned long long hvsid),
170 TP_ARGS(gvsid, hvsid),
171
172 TP_STRUCT__entry(
173 __field( unsigned long long, gvsid )
174 __field( unsigned long long, hvsid )
175 ),
176
177 TP_fast_assign(
178 __entry->gvsid = gvsid;
179 __entry->hvsid = hvsid;
180 ),
181
182 TP_printk("%llx -> %llx", __entry->gvsid, __entry->hvsid)
183);
184
185TRACE_EVENT(kvm_book3s_slb_fail,
186 TP_PROTO(u16 sid_map_mask, unsigned long long gvsid),
187 TP_ARGS(sid_map_mask, gvsid),
188
189 TP_STRUCT__entry(
190 __field( unsigned short, sid_map_mask )
191 __field( unsigned long long, gvsid )
192 ),
193
194 TP_fast_assign(
195 __entry->sid_map_mask = sid_map_mask;
196 __entry->gvsid = gvsid;
197 ),
198
199 TP_printk("%x/%x: %llx", __entry->sid_map_mask,
200 SID_MAP_MASK - __entry->sid_map_mask, __entry->gvsid)
201);
202
203TRACE_EVENT(kvm_book3s_slb_map,
204 TP_PROTO(u16 sid_map_mask, unsigned long long gvsid,
205 unsigned long long hvsid),
206 TP_ARGS(sid_map_mask, gvsid, hvsid),
207
208 TP_STRUCT__entry(
209 __field( unsigned short, sid_map_mask )
210 __field( unsigned long long, guest_vsid )
211 __field( unsigned long long, host_vsid )
212 ),
213
214 TP_fast_assign(
215 __entry->sid_map_mask = sid_map_mask;
216 __entry->guest_vsid = gvsid;
217 __entry->host_vsid = hvsid;
218 ),
219
220 TP_printk("%x: %llx -> %llx", __entry->sid_map_mask,
221 __entry->guest_vsid, __entry->host_vsid)
222);
223
224TRACE_EVENT(kvm_book3s_slbmte,
225 TP_PROTO(u64 slb_vsid, u64 slb_esid),
226 TP_ARGS(slb_vsid, slb_esid),
227
228 TP_STRUCT__entry(
229 __field( u64, slb_vsid )
230 __field( u64, slb_esid )
231 ),
232
233 TP_fast_assign(
234 __entry->slb_vsid = slb_vsid;
235 __entry->slb_esid = slb_esid;
236 ),
237
238 TP_printk("%llx, %llx", __entry->slb_vsid, __entry->slb_esid)
239);
240
241TRACE_EVENT(kvm_exit,
242 TP_PROTO(unsigned int exit_nr, struct kvm_vcpu *vcpu),
243 TP_ARGS(exit_nr, vcpu),
244
245 TP_STRUCT__entry(
246 __field( unsigned int, exit_nr )
247 __field( unsigned long, pc )
248 __field( unsigned long, msr )
249 __field( unsigned long, dar )
250 __field( unsigned long, srr1 )
251 __field( unsigned long, last_inst )
252 ),
253
254 TP_fast_assign(
255 __entry->exit_nr = exit_nr;
256 __entry->pc = kvmppc_get_pc(vcpu);
257 __entry->dar = kvmppc_get_fault_dar(vcpu);
258 __entry->msr = vcpu->arch.shared->msr;
259 __entry->srr1 = vcpu->arch.shadow_srr1;
260 __entry->last_inst = vcpu->arch.last_inst;
261 ),
262
263 TP_printk("exit=%s"
264 " | pc=0x%lx"
265 " | msr=0x%lx"
266 " | dar=0x%lx"
267 " | srr1=0x%lx"
268 " | last_inst=0x%lx"
269 ,
270 __print_symbolic(__entry->exit_nr, kvm_trace_symbol_exit),
271 __entry->pc,
272 __entry->msr,
273 __entry->dar,
274 __entry->srr1,
275 __entry->last_inst
276 )
277);
278
279TRACE_EVENT(kvm_unmap_hva,
280 TP_PROTO(unsigned long hva),
281 TP_ARGS(hva),
282
283 TP_STRUCT__entry(
284 __field( unsigned long, hva )
285 ),
286
287 TP_fast_assign(
288 __entry->hva = hva;
289 ),
290
291 TP_printk("unmap hva 0x%lx\n", __entry->hva)
292);
293
294#endif /* _TRACE_KVM_H */
295
296/* This part must be outside protection */
297#include <trace/define_trace.h>