1#if !defined(_TRACE_ARM64_KVM_H) || defined(TRACE_HEADER_MULTI_READ)
2#define _TRACE_ARM64_KVM_H
3
4#include <linux/tracepoint.h>
5
6#undef TRACE_SYSTEM
7#define TRACE_SYSTEM kvm
8
9TRACE_EVENT(kvm_wfx_arm64,
10	TP_PROTO(unsigned long vcpu_pc, bool is_wfe),
11	TP_ARGS(vcpu_pc, is_wfe),
12
13	TP_STRUCT__entry(
14		__field(unsigned long,	vcpu_pc)
15		__field(bool,		is_wfe)
16	),
17
18	TP_fast_assign(
19		__entry->vcpu_pc = vcpu_pc;
20		__entry->is_wfe  = is_wfe;
21	),
22
23	TP_printk("guest executed wf%c at: 0x%08lx",
24		  __entry->is_wfe ? 'e' : 'i', __entry->vcpu_pc)
25);
26
27TRACE_EVENT(kvm_hvc_arm64,
28	TP_PROTO(unsigned long vcpu_pc, unsigned long r0, unsigned long imm),
29	TP_ARGS(vcpu_pc, r0, imm),
30
31	TP_STRUCT__entry(
32		__field(unsigned long, vcpu_pc)
33		__field(unsigned long, r0)
34		__field(unsigned long, imm)
35	),
36
37	TP_fast_assign(
38		__entry->vcpu_pc = vcpu_pc;
39		__entry->r0 = r0;
40		__entry->imm = imm;
41	),
42
43	TP_printk("HVC at 0x%08lx (r0: 0x%08lx, imm: 0x%lx)",
44		  __entry->vcpu_pc, __entry->r0, __entry->imm)
45);
46
47#endif /* _TRACE_ARM64_KVM_H */
48
49#undef TRACE_INCLUDE_PATH
50#define TRACE_INCLUDE_PATH .
51#undef TRACE_INCLUDE_FILE
52#define TRACE_INCLUDE_FILE trace
53
54/* This part must be outside protection */
55#include <trace/define_trace.h>
56