xref: /openbmc/linux/arch/powerpc/kvm/trace.h (revision 1c2dd16a)
1 #if !defined(_TRACE_KVM_H) || defined(TRACE_HEADER_MULTI_READ)
2 #define _TRACE_KVM_H
3 
4 #include <linux/tracepoint.h>
5 
6 #undef TRACE_SYSTEM
7 #define TRACE_SYSTEM kvm
8 #define TRACE_INCLUDE_PATH .
9 #define TRACE_INCLUDE_FILE trace
10 
11 /*
12  * Tracepoint for guest mode entry.
13  */
14 TRACE_EVENT(kvm_ppc_instr,
15 	TP_PROTO(unsigned int inst, unsigned long _pc, unsigned int emulate),
16 	TP_ARGS(inst, _pc, emulate),
17 
18 	TP_STRUCT__entry(
19 		__field(	unsigned int,	inst		)
20 		__field(	unsigned long,	pc		)
21 		__field(	unsigned int,	emulate		)
22 	),
23 
24 	TP_fast_assign(
25 		__entry->inst		= inst;
26 		__entry->pc		= _pc;
27 		__entry->emulate	= emulate;
28 	),
29 
30 	TP_printk("inst %u pc 0x%lx emulate %u\n",
31 		  __entry->inst, __entry->pc, __entry->emulate)
32 );
33 
34 TRACE_EVENT(kvm_stlb_inval,
35 	TP_PROTO(unsigned int stlb_index),
36 	TP_ARGS(stlb_index),
37 
38 	TP_STRUCT__entry(
39 		__field(	unsigned int,	stlb_index	)
40 	),
41 
42 	TP_fast_assign(
43 		__entry->stlb_index	= stlb_index;
44 	),
45 
46 	TP_printk("stlb_index %u", __entry->stlb_index)
47 );
48 
49 TRACE_EVENT(kvm_stlb_write,
50 	TP_PROTO(unsigned int victim, unsigned int tid, unsigned int word0,
51 		 unsigned int word1, unsigned int word2),
52 	TP_ARGS(victim, tid, word0, word1, word2),
53 
54 	TP_STRUCT__entry(
55 		__field(	unsigned int,	victim		)
56 		__field(	unsigned int,	tid		)
57 		__field(	unsigned int,	word0		)
58 		__field(	unsigned int,	word1		)
59 		__field(	unsigned int,	word2		)
60 	),
61 
62 	TP_fast_assign(
63 		__entry->victim		= victim;
64 		__entry->tid		= tid;
65 		__entry->word0		= word0;
66 		__entry->word1		= word1;
67 		__entry->word2		= word2;
68 	),
69 
70 	TP_printk("victim %u tid %u w0 %u w1 %u w2 %u",
71 		__entry->victim, __entry->tid, __entry->word0,
72 		__entry->word1, __entry->word2)
73 );
74 
75 TRACE_EVENT(kvm_gtlb_write,
76 	TP_PROTO(unsigned int gtlb_index, unsigned int tid, unsigned int word0,
77 		 unsigned int word1, unsigned int word2),
78 	TP_ARGS(gtlb_index, tid, word0, word1, word2),
79 
80 	TP_STRUCT__entry(
81 		__field(	unsigned int,	gtlb_index	)
82 		__field(	unsigned int,	tid		)
83 		__field(	unsigned int,	word0		)
84 		__field(	unsigned int,	word1		)
85 		__field(	unsigned int,	word2		)
86 	),
87 
88 	TP_fast_assign(
89 		__entry->gtlb_index	= gtlb_index;
90 		__entry->tid		= tid;
91 		__entry->word0		= word0;
92 		__entry->word1		= word1;
93 		__entry->word2		= word2;
94 	),
95 
96 	TP_printk("gtlb_index %u tid %u w0 %u w1 %u w2 %u",
97 		__entry->gtlb_index, __entry->tid, __entry->word0,
98 		__entry->word1, __entry->word2)
99 );
100 
101 TRACE_EVENT(kvm_check_requests,
102 	TP_PROTO(struct kvm_vcpu *vcpu),
103 	TP_ARGS(vcpu),
104 
105 	TP_STRUCT__entry(
106 		__field(	__u32,	cpu_nr		)
107 		__field(	__u32,	requests	)
108 	),
109 
110 	TP_fast_assign(
111 		__entry->cpu_nr		= vcpu->vcpu_id;
112 		__entry->requests	= vcpu->requests;
113 	),
114 
115 	TP_printk("vcpu=%x requests=%x",
116 		__entry->cpu_nr, __entry->requests)
117 );
118 
119 #endif /* _TRACE_KVM_H */
120 
121 /* This part must be outside protection */
122 #include <trace/define_trace.h>
123