Linux Audio

Check our new training course

Loading...
Note: File does not exist in v6.13.7.
  1/* SPDX-License-Identifier: GPL-2.0 */
  2#if !defined(_TRACE_KVM_H) || defined(TRACE_HEADER_MULTI_READ)
  3#define _TRACE_KVM_H
  4
  5#include <linux/tracepoint.h>
  6
  7#undef TRACE_SYSTEM
  8#define TRACE_SYSTEM kvm
  9
 10/*
 11 * Tracepoints for entry/exit to guest
 12 */
 13TRACE_EVENT(kvm_entry,
 14	TP_PROTO(unsigned long vcpu_pc),
 15	TP_ARGS(vcpu_pc),
 16
 17	TP_STRUCT__entry(
 18		__field(	unsigned long,	vcpu_pc		)
 19	),
 20
 21	TP_fast_assign(
 22		__entry->vcpu_pc		= vcpu_pc;
 23	),
 24
 25	TP_printk("PC: 0x%08lx", __entry->vcpu_pc)
 26);
 27
 28TRACE_EVENT(kvm_exit,
 29	TP_PROTO(int idx, unsigned int exit_reason, unsigned long vcpu_pc),
 30	TP_ARGS(idx, exit_reason, vcpu_pc),
 31
 32	TP_STRUCT__entry(
 33		__field(	int,		idx		)
 34		__field(	unsigned int,	exit_reason	)
 35		__field(	unsigned long,	vcpu_pc		)
 36	),
 37
 38	TP_fast_assign(
 39		__entry->idx			= idx;
 40		__entry->exit_reason		= exit_reason;
 41		__entry->vcpu_pc		= vcpu_pc;
 42	),
 43
 44	TP_printk("%s: HSR_EC: 0x%04x (%s), PC: 0x%08lx",
 45		  __print_symbolic(__entry->idx, kvm_arm_exception_type),
 46		  __entry->exit_reason,
 47		  __print_symbolic(__entry->exit_reason, kvm_arm_exception_class),
 48		  __entry->vcpu_pc)
 49);
 50
 51TRACE_EVENT(kvm_guest_fault,
 52	TP_PROTO(unsigned long vcpu_pc, unsigned long hsr,
 53		 unsigned long hxfar,
 54		 unsigned long long ipa),
 55	TP_ARGS(vcpu_pc, hsr, hxfar, ipa),
 56
 57	TP_STRUCT__entry(
 58		__field(	unsigned long,	vcpu_pc		)
 59		__field(	unsigned long,	hsr		)
 60		__field(	unsigned long,	hxfar		)
 61		__field(   unsigned long long,	ipa		)
 62	),
 63
 64	TP_fast_assign(
 65		__entry->vcpu_pc		= vcpu_pc;
 66		__entry->hsr			= hsr;
 67		__entry->hxfar			= hxfar;
 68		__entry->ipa			= ipa;
 69	),
 70
 71	TP_printk("ipa %#llx, hsr %#08lx, hxfar %#08lx, pc %#08lx",
 72		  __entry->ipa, __entry->hsr,
 73		  __entry->hxfar, __entry->vcpu_pc)
 74);
 75
 76TRACE_EVENT(kvm_access_fault,
 77	TP_PROTO(unsigned long ipa),
 78	TP_ARGS(ipa),
 79
 80	TP_STRUCT__entry(
 81		__field(	unsigned long,	ipa		)
 82	),
 83
 84	TP_fast_assign(
 85		__entry->ipa		= ipa;
 86	),
 87
 88	TP_printk("IPA: %lx", __entry->ipa)
 89);
 90
 91TRACE_EVENT(kvm_irq_line,
 92	TP_PROTO(unsigned int type, int vcpu_idx, int irq_num, int level),
 93	TP_ARGS(type, vcpu_idx, irq_num, level),
 94
 95	TP_STRUCT__entry(
 96		__field(	unsigned int,	type		)
 97		__field(	int,		vcpu_idx	)
 98		__field(	int,		irq_num		)
 99		__field(	int,		level		)
100	),
101
102	TP_fast_assign(
103		__entry->type		= type;
104		__entry->vcpu_idx	= vcpu_idx;
105		__entry->irq_num	= irq_num;
106		__entry->level		= level;
107	),
108
109	TP_printk("Inject %s interrupt (%d), vcpu->idx: %d, num: %d, level: %d",
110		  (__entry->type == KVM_ARM_IRQ_TYPE_CPU) ? "CPU" :
111		  (__entry->type == KVM_ARM_IRQ_TYPE_PPI) ? "VGIC PPI" :
112		  (__entry->type == KVM_ARM_IRQ_TYPE_SPI) ? "VGIC SPI" : "UNKNOWN",
113		  __entry->type, __entry->vcpu_idx, __entry->irq_num, __entry->level)
114);
115
116TRACE_EVENT(kvm_mmio_emulate,
117	TP_PROTO(unsigned long vcpu_pc, unsigned long instr,
118		 unsigned long cpsr),
119	TP_ARGS(vcpu_pc, instr, cpsr),
120
121	TP_STRUCT__entry(
122		__field(	unsigned long,	vcpu_pc		)
123		__field(	unsigned long,	instr		)
124		__field(	unsigned long,	cpsr		)
125	),
126
127	TP_fast_assign(
128		__entry->vcpu_pc		= vcpu_pc;
129		__entry->instr			= instr;
130		__entry->cpsr			= cpsr;
131	),
132
133	TP_printk("Emulate MMIO at: 0x%08lx (instr: %08lx, cpsr: %08lx)",
134		  __entry->vcpu_pc, __entry->instr, __entry->cpsr)
135);
136
137TRACE_EVENT(kvm_unmap_hva,
138	TP_PROTO(unsigned long hva),
139	TP_ARGS(hva),
140
141	TP_STRUCT__entry(
142		__field(	unsigned long,	hva		)
143	),
144
145	TP_fast_assign(
146		__entry->hva		= hva;
147	),
148
149	TP_printk("mmu notifier unmap hva: %#08lx", __entry->hva)
150);
151
152TRACE_EVENT(kvm_unmap_hva_range,
153	TP_PROTO(unsigned long start, unsigned long end),
154	TP_ARGS(start, end),
155
156	TP_STRUCT__entry(
157		__field(	unsigned long,	start		)
158		__field(	unsigned long,	end		)
159	),
160
161	TP_fast_assign(
162		__entry->start		= start;
163		__entry->end		= end;
164	),
165
166	TP_printk("mmu notifier unmap range: %#08lx -- %#08lx",
167		  __entry->start, __entry->end)
168);
169
170TRACE_EVENT(kvm_set_spte_hva,
171	TP_PROTO(unsigned long hva),
172	TP_ARGS(hva),
173
174	TP_STRUCT__entry(
175		__field(	unsigned long,	hva		)
176	),
177
178	TP_fast_assign(
179		__entry->hva		= hva;
180	),
181
182	TP_printk("mmu notifier set pte hva: %#08lx", __entry->hva)
183);
184
185TRACE_EVENT(kvm_age_hva,
186	TP_PROTO(unsigned long start, unsigned long end),
187	TP_ARGS(start, end),
188
189	TP_STRUCT__entry(
190		__field(	unsigned long,	start		)
191		__field(	unsigned long,	end		)
192	),
193
194	TP_fast_assign(
195		__entry->start		= start;
196		__entry->end		= end;
197	),
198
199	TP_printk("mmu notifier age hva: %#08lx -- %#08lx",
200		  __entry->start, __entry->end)
201);
202
203TRACE_EVENT(kvm_test_age_hva,
204	TP_PROTO(unsigned long hva),
205	TP_ARGS(hva),
206
207	TP_STRUCT__entry(
208		__field(	unsigned long,	hva		)
209	),
210
211	TP_fast_assign(
212		__entry->hva		= hva;
213	),
214
215	TP_printk("mmu notifier test age hva: %#08lx", __entry->hva)
216);
217
218TRACE_EVENT(kvm_set_way_flush,
219	    TP_PROTO(unsigned long vcpu_pc, bool cache),
220	    TP_ARGS(vcpu_pc, cache),
221
222	    TP_STRUCT__entry(
223		    __field(	unsigned long,	vcpu_pc		)
224		    __field(	bool,		cache		)
225	    ),
226
227	    TP_fast_assign(
228		    __entry->vcpu_pc		= vcpu_pc;
229		    __entry->cache		= cache;
230	    ),
231
232	    TP_printk("S/W flush at 0x%016lx (cache %s)",
233		      __entry->vcpu_pc, __entry->cache ? "on" : "off")
234);
235
236TRACE_EVENT(kvm_toggle_cache,
237	    TP_PROTO(unsigned long vcpu_pc, bool was, bool now),
238	    TP_ARGS(vcpu_pc, was, now),
239
240	    TP_STRUCT__entry(
241		    __field(	unsigned long,	vcpu_pc		)
242		    __field(	bool,		was		)
243		    __field(	bool,		now		)
244	    ),
245
246	    TP_fast_assign(
247		    __entry->vcpu_pc		= vcpu_pc;
248		    __entry->was		= was;
249		    __entry->now		= now;
250	    ),
251
252	    TP_printk("VM op at 0x%016lx (cache was %s, now %s)",
253		      __entry->vcpu_pc, __entry->was ? "on" : "off",
254		      __entry->now ? "on" : "off")
255);
256
257/*
258 * Tracepoints for arch_timer
259 */
260TRACE_EVENT(kvm_timer_update_irq,
261	TP_PROTO(unsigned long vcpu_id, __u32 irq, int level),
262	TP_ARGS(vcpu_id, irq, level),
263
264	TP_STRUCT__entry(
265		__field(	unsigned long,	vcpu_id	)
266		__field(	__u32,		irq	)
267		__field(	int,		level	)
268	),
269
270	TP_fast_assign(
271		__entry->vcpu_id	= vcpu_id;
272		__entry->irq		= irq;
273		__entry->level		= level;
274	),
275
276	TP_printk("VCPU: %ld, IRQ %d, level %d",
277		  __entry->vcpu_id, __entry->irq, __entry->level)
278);
279
280#endif /* _TRACE_KVM_H */
281
282#undef TRACE_INCLUDE_PATH
283#define TRACE_INCLUDE_PATH ../../../virt/kvm/arm
284#undef TRACE_INCLUDE_FILE
285#define TRACE_INCLUDE_FILE trace
286
287/* This part must be outside protection */
288#include <trace/define_trace.h>