Linux Audio

Check our new training course

Loading...
Note: File does not exist in v5.9.
  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
  9/*
 10 * Tracepoints for entry/exit to guest
 11 */
 12TRACE_EVENT(kvm_entry,
 13	TP_PROTO(unsigned long vcpu_pc),
 14	TP_ARGS(vcpu_pc),
 15
 16	TP_STRUCT__entry(
 17		__field(	unsigned long,	vcpu_pc		)
 18	),
 19
 20	TP_fast_assign(
 21		__entry->vcpu_pc		= vcpu_pc;
 22	),
 23
 24	TP_printk("PC: 0x%08lx", __entry->vcpu_pc)
 25);
 26
 27TRACE_EVENT(kvm_exit,
 28	TP_PROTO(unsigned long vcpu_pc),
 29	TP_ARGS(vcpu_pc),
 30
 31	TP_STRUCT__entry(
 32		__field(	unsigned long,	vcpu_pc		)
 33	),
 34
 35	TP_fast_assign(
 36		__entry->vcpu_pc		= vcpu_pc;
 37	),
 38
 39	TP_printk("PC: 0x%08lx", __entry->vcpu_pc)
 40);
 41
 42TRACE_EVENT(kvm_guest_fault,
 43	TP_PROTO(unsigned long vcpu_pc, unsigned long hsr,
 44		 unsigned long hxfar,
 45		 unsigned long long ipa),
 46	TP_ARGS(vcpu_pc, hsr, hxfar, ipa),
 47
 48	TP_STRUCT__entry(
 49		__field(	unsigned long,	vcpu_pc		)
 50		__field(	unsigned long,	hsr		)
 51		__field(	unsigned long,	hxfar		)
 52		__field(   unsigned long long,	ipa		)
 53	),
 54
 55	TP_fast_assign(
 56		__entry->vcpu_pc		= vcpu_pc;
 57		__entry->hsr			= hsr;
 58		__entry->hxfar			= hxfar;
 59		__entry->ipa			= ipa;
 60	),
 61
 62	TP_printk("ipa %#llx, hsr %#08lx, hxfar %#08lx, pc %#08lx",
 63		  __entry->ipa, __entry->hsr,
 64		  __entry->hxfar, __entry->vcpu_pc)
 65);
 66
 67TRACE_EVENT(kvm_irq_line,
 68	TP_PROTO(unsigned int type, int vcpu_idx, int irq_num, int level),
 69	TP_ARGS(type, vcpu_idx, irq_num, level),
 70
 71	TP_STRUCT__entry(
 72		__field(	unsigned int,	type		)
 73		__field(	int,		vcpu_idx	)
 74		__field(	int,		irq_num		)
 75		__field(	int,		level		)
 76	),
 77
 78	TP_fast_assign(
 79		__entry->type		= type;
 80		__entry->vcpu_idx	= vcpu_idx;
 81		__entry->irq_num	= irq_num;
 82		__entry->level		= level;
 83	),
 84
 85	TP_printk("Inject %s interrupt (%d), vcpu->idx: %d, num: %d, level: %d",
 86		  (__entry->type == KVM_ARM_IRQ_TYPE_CPU) ? "CPU" :
 87		  (__entry->type == KVM_ARM_IRQ_TYPE_PPI) ? "VGIC PPI" :
 88		  (__entry->type == KVM_ARM_IRQ_TYPE_SPI) ? "VGIC SPI" : "UNKNOWN",
 89		  __entry->type, __entry->vcpu_idx, __entry->irq_num, __entry->level)
 90);
 91
 92TRACE_EVENT(kvm_mmio_emulate,
 93	TP_PROTO(unsigned long vcpu_pc, unsigned long instr,
 94		 unsigned long cpsr),
 95	TP_ARGS(vcpu_pc, instr, cpsr),
 96
 97	TP_STRUCT__entry(
 98		__field(	unsigned long,	vcpu_pc		)
 99		__field(	unsigned long,	instr		)
100		__field(	unsigned long,	cpsr		)
101	),
102
103	TP_fast_assign(
104		__entry->vcpu_pc		= vcpu_pc;
105		__entry->instr			= instr;
106		__entry->cpsr			= cpsr;
107	),
108
109	TP_printk("Emulate MMIO at: 0x%08lx (instr: %08lx, cpsr: %08lx)",
110		  __entry->vcpu_pc, __entry->instr, __entry->cpsr)
111);
112
113/* Architecturally implementation defined CP15 register access */
114TRACE_EVENT(kvm_emulate_cp15_imp,
115	TP_PROTO(unsigned long Op1, unsigned long Rt1, unsigned long CRn,
116		 unsigned long CRm, unsigned long Op2, bool is_write),
117	TP_ARGS(Op1, Rt1, CRn, CRm, Op2, is_write),
118
119	TP_STRUCT__entry(
120		__field(	unsigned int,	Op1		)
121		__field(	unsigned int,	Rt1		)
122		__field(	unsigned int,	CRn		)
123		__field(	unsigned int,	CRm		)
124		__field(	unsigned int,	Op2		)
125		__field(	bool,		is_write	)
126	),
127
128	TP_fast_assign(
129		__entry->is_write		= is_write;
130		__entry->Op1			= Op1;
131		__entry->Rt1			= Rt1;
132		__entry->CRn			= CRn;
133		__entry->CRm			= CRm;
134		__entry->Op2			= Op2;
135	),
136
137	TP_printk("Implementation defined CP15: %s\tp15, %u, r%u, c%u, c%u, %u",
138			(__entry->is_write) ? "mcr" : "mrc",
139			__entry->Op1, __entry->Rt1, __entry->CRn,
140			__entry->CRm, __entry->Op2)
141);
142
143TRACE_EVENT(kvm_wfi,
144	TP_PROTO(unsigned long vcpu_pc),
145	TP_ARGS(vcpu_pc),
146
147	TP_STRUCT__entry(
148		__field(	unsigned long,	vcpu_pc		)
149	),
150
151	TP_fast_assign(
152		__entry->vcpu_pc		= vcpu_pc;
153	),
154
155	TP_printk("guest executed wfi at: 0x%08lx", __entry->vcpu_pc)
156);
157
158TRACE_EVENT(kvm_unmap_hva,
159	TP_PROTO(unsigned long hva),
160	TP_ARGS(hva),
161
162	TP_STRUCT__entry(
163		__field(	unsigned long,	hva		)
164	),
165
166	TP_fast_assign(
167		__entry->hva		= hva;
168	),
169
170	TP_printk("mmu notifier unmap hva: %#08lx", __entry->hva)
171);
172
173TRACE_EVENT(kvm_unmap_hva_range,
174	TP_PROTO(unsigned long start, unsigned long end),
175	TP_ARGS(start, end),
176
177	TP_STRUCT__entry(
178		__field(	unsigned long,	start		)
179		__field(	unsigned long,	end		)
180	),
181
182	TP_fast_assign(
183		__entry->start		= start;
184		__entry->end		= end;
185	),
186
187	TP_printk("mmu notifier unmap range: %#08lx -- %#08lx",
188		  __entry->start, __entry->end)
189);
190
191TRACE_EVENT(kvm_set_spte_hva,
192	TP_PROTO(unsigned long hva),
193	TP_ARGS(hva),
194
195	TP_STRUCT__entry(
196		__field(	unsigned long,	hva		)
197	),
198
199	TP_fast_assign(
200		__entry->hva		= hva;
201	),
202
203	TP_printk("mmu notifier set pte hva: %#08lx", __entry->hva)
204);
205
206TRACE_EVENT(kvm_hvc,
207	TP_PROTO(unsigned long vcpu_pc, unsigned long r0, unsigned long imm),
208	TP_ARGS(vcpu_pc, r0, imm),
209
210	TP_STRUCT__entry(
211		__field(	unsigned long,	vcpu_pc		)
212		__field(	unsigned long,	r0		)
213		__field(	unsigned long,	imm		)
214	),
215
216	TP_fast_assign(
217		__entry->vcpu_pc		= vcpu_pc;
218		__entry->r0		= r0;
219		__entry->imm		= imm;
220	),
221
222	TP_printk("HVC at 0x%08lx (r0: 0x%08lx, imm: 0x%lx",
223		  __entry->vcpu_pc, __entry->r0, __entry->imm)
224);
225
226#endif /* _TRACE_KVM_H */
227
228#undef TRACE_INCLUDE_PATH
229#define TRACE_INCLUDE_PATH arch/arm/kvm
230#undef TRACE_INCLUDE_FILE
231#define TRACE_INCLUDE_FILE trace
232
233/* This part must be outside protection */
234#include <trace/define_trace.h>