Fix: Revert "KVM: MMU: show mmu_valid_gen..." (v5.1)
[lttng-modules.git] / instrumentation / events / lttng-module / arch / x86 / kvm / mmutrace.h
CommitLineData
9bbf98da
MD
1#if !defined(LTTNG_TRACE_KVM_MMU_H) || defined(TRACE_HEADER_MULTI_READ)
2#define LTTNG_TRACE_KVM_MMU_H
b3c40230 3
6ec43db8 4#include <probes/lttng-tracepoint-event.h>
d3a7bdc5 5#include <linux/version.h>
b3c40230 6
55d9985e
MD
7#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0))
8#include <linux/trace_events.h>
9#else /* if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)) */
10#include <linux/ftrace_event.h>
11#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)) */
12
b3c40230 13#undef TRACE_SYSTEM
9bbf98da 14#define TRACE_SYSTEM kvm_mmu
b3c40230 15
436ca2bd
MJ
16#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,1,0))
17
18#define LTTNG_KVM_MMU_PAGE_FIELDS \
19 ctf_integer(__u64, gfn, (sp)->gfn) \
20 ctf_integer(__u32, role, (sp)->role.word) \
21 ctf_integer(__u32, root_count, (sp)->root_count) \
22 ctf_integer(bool, unsync, (sp)->unsync)
23
24#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0))
05b915ce 25
f127e61e 26#define LTTNG_KVM_MMU_PAGE_FIELDS \
05b915ce 27 ctf_integer(unsigned long, mmu_valid_gen, (sp)->mmu_valid_gen) \
f127e61e
MD
28 ctf_integer(__u64, gfn, (sp)->gfn) \
29 ctf_integer(__u32, role, (sp)->role.word) \
30 ctf_integer(__u32, root_count, (sp)->root_count) \
31 ctf_integer(bool, unsync, (sp)->unsync)
b3c40230 32
05b915ce
MD
33#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)) */
34
35#define LTTNG_KVM_MMU_PAGE_FIELDS \
36 ctf_integer(__u64, gfn, (sp)->gfn) \
37 ctf_integer(__u32, role, (sp)->role.word) \
38 ctf_integer(__u32, root_count, (sp)->root_count) \
39 ctf_integer(bool, unsync, (sp)->unsync)
40
41#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)) */
42
4bbec2e1 43#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
b3c40230
MG
44/*
45 * A pagetable walk has started
46 */
3bc29f0a 47LTTNG_TRACEPOINT_EVENT(
b3c40230
MG
48 kvm_mmu_pagetable_walk,
49 TP_PROTO(u64 addr, u32 pferr),
50 TP_ARGS(addr, pferr),
51
f127e61e
MD
52 TP_FIELDS(
53 ctf_integer(__u64, addr, addr)
54 ctf_integer(__u32, pferr, pferr)
55 )
b3c40230 56)
4bbec2e1
MD
57#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0)) */
58/*
59 * A pagetable walk has started
60 */
61LTTNG_TRACEPOINT_EVENT(
62 kvm_mmu_pagetable_walk,
63 TP_PROTO(u64 addr, int write_fault, int user_fault, int fetch_fault),
64 TP_ARGS(addr, write_fault, user_fault, fetch_fault),
b3c40230 65
4bbec2e1
MD
66 TP_FIELDS(
67 ctf_integer(__u64, addr, addr)
68 ctf_integer(__u32, pferr,
69 (!!write_fault << 1) | (!!user_fault << 2)
70 | (!!fetch_fault << 4))
71 )
72)
73#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0)) */
b3c40230
MG
74
75/* We just walked a paging element */
3bc29f0a 76LTTNG_TRACEPOINT_EVENT(
b3c40230
MG
77 kvm_mmu_paging_element,
78 TP_PROTO(u64 pte, int level),
79 TP_ARGS(pte, level),
80
f127e61e
MD
81 TP_FIELDS(
82 ctf_integer(__u64, pte, pte)
83 ctf_integer(__u32, level, level)
84 )
b3c40230
MG
85)
86
3bc29f0a 87LTTNG_TRACEPOINT_EVENT_CLASS(kvm_mmu_set_bit_class,
b3c40230
MG
88
89 TP_PROTO(unsigned long table_gfn, unsigned index, unsigned size),
90
91 TP_ARGS(table_gfn, index, size),
92
f127e61e
MD
93 TP_FIELDS(
94 ctf_integer(__u64, gpa,
95 ((u64)table_gfn << PAGE_SHIFT) + index * size)
96 )
b3c40230
MG
97)
98
99/* We set a pte accessed bit */
3bc29f0a 100LTTNG_TRACEPOINT_EVENT_INSTANCE(kvm_mmu_set_bit_class, kvm_mmu_set_accessed_bit,
b3c40230
MG
101
102 TP_PROTO(unsigned long table_gfn, unsigned index, unsigned size),
103
104 TP_ARGS(table_gfn, index, size)
105)
106
107/* We set a pte dirty bit */
3bc29f0a 108LTTNG_TRACEPOINT_EVENT_INSTANCE(kvm_mmu_set_bit_class, kvm_mmu_set_dirty_bit,
b3c40230
MG
109
110 TP_PROTO(unsigned long table_gfn, unsigned index, unsigned size),
111
112 TP_ARGS(table_gfn, index, size)
113)
114
3bc29f0a 115LTTNG_TRACEPOINT_EVENT(
b3c40230
MG
116 kvm_mmu_walker_error,
117 TP_PROTO(u32 pferr),
118 TP_ARGS(pferr),
119
f127e61e
MD
120 TP_FIELDS(
121 ctf_integer(__u32, pferr, pferr)
122 )
b3c40230
MG
123)
124
3bc29f0a 125LTTNG_TRACEPOINT_EVENT(
b3c40230
MG
126 kvm_mmu_get_page,
127 TP_PROTO(struct kvm_mmu_page *sp, bool created),
128 TP_ARGS(sp, created),
129
f127e61e
MD
130 TP_FIELDS(
131 LTTNG_KVM_MMU_PAGE_FIELDS
132 ctf_integer(bool, created, created)
133 )
b3c40230
MG
134)
135
3bc29f0a 136LTTNG_TRACEPOINT_EVENT_CLASS(kvm_mmu_page_class,
b3c40230
MG
137
138 TP_PROTO(struct kvm_mmu_page *sp),
139 TP_ARGS(sp),
140
f127e61e
MD
141 TP_FIELDS(
142 LTTNG_KVM_MMU_PAGE_FIELDS
143 )
b3c40230
MG
144)
145
3bc29f0a 146LTTNG_TRACEPOINT_EVENT_INSTANCE(kvm_mmu_page_class, kvm_mmu_sync_page,
b3c40230
MG
147 TP_PROTO(struct kvm_mmu_page *sp),
148
149 TP_ARGS(sp)
150)
151
3bc29f0a 152LTTNG_TRACEPOINT_EVENT_INSTANCE(kvm_mmu_page_class, kvm_mmu_unsync_page,
b3c40230
MG
153 TP_PROTO(struct kvm_mmu_page *sp),
154
155 TP_ARGS(sp)
156)
157
3bc29f0a 158LTTNG_TRACEPOINT_EVENT_INSTANCE(kvm_mmu_page_class, kvm_mmu_prepare_zap_page,
b3c40230
MG
159 TP_PROTO(struct kvm_mmu_page *sp),
160
161 TP_ARGS(sp)
162)
163
d3a7bdc5
MD
164#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0))
165
166LTTNG_TRACEPOINT_EVENT_MAP(
167 mark_mmio_spte,
168
169 kvm_mmu_mark_mmio_spte,
170
171 TP_PROTO(u64 *sptep, gfn_t gfn, unsigned access, unsigned int gen),
172 TP_ARGS(sptep, gfn, access, gen),
173
174 TP_FIELDS(
fa91fcac 175 ctf_integer_hex(void *, sptep, sptep)
d3a7bdc5
MD
176 ctf_integer(gfn_t, gfn, gfn)
177 ctf_integer(unsigned, access, access)
178 ctf_integer(unsigned int, gen, gen)
179 )
180)
181
182#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)) */
183
9bbf98da 184LTTNG_TRACEPOINT_EVENT_MAP(
b3c40230 185 mark_mmio_spte,
9bbf98da
MD
186
187 kvm_mmu_mark_mmio_spte,
188
b3c40230
MG
189 TP_PROTO(u64 *sptep, gfn_t gfn, unsigned access),
190 TP_ARGS(sptep, gfn, access),
191
f127e61e 192 TP_FIELDS(
fa91fcac 193 ctf_integer_hex(void *, sptep, sptep)
f127e61e
MD
194 ctf_integer(gfn_t, gfn, gfn)
195 ctf_integer(unsigned, access, access)
196 )
b3c40230
MG
197)
198
d3a7bdc5
MD
199#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)) */
200
9bbf98da 201LTTNG_TRACEPOINT_EVENT_MAP(
b3c40230 202 handle_mmio_page_fault,
9bbf98da
MD
203
204 kvm_mmu_handle_mmio_page_fault,
205
b3c40230
MG
206 TP_PROTO(u64 addr, gfn_t gfn, unsigned access),
207 TP_ARGS(addr, gfn, access),
208
f127e61e
MD
209 TP_FIELDS(
210 ctf_integer(u64, addr, addr)
211 ctf_integer(gfn_t, gfn, gfn)
212 ctf_integer(unsigned, access, access)
213 )
b3c40230
MG
214)
215
9bbf98da 216LTTNG_TRACEPOINT_EVENT_MAP(
b3c40230 217 fast_page_fault,
9bbf98da
MD
218
219 kvm_mmu_fast_page_fault,
220
b3c40230
MG
221 TP_PROTO(struct kvm_vcpu *vcpu, gva_t gva, u32 error_code,
222 u64 *sptep, u64 old_spte, bool retry),
223 TP_ARGS(vcpu, gva, error_code, sptep, old_spte, retry),
224
f127e61e
MD
225 TP_FIELDS(
226 ctf_integer(int, vcpu_id, vcpu->vcpu_id)
227 ctf_integer(gva_t, gva, gva)
228 ctf_integer(u32, error_code, error_code)
fa91fcac 229 ctf_integer_hex(u64 *, sptep, sptep)
f127e61e
MD
230 ctf_integer(u64, old_spte, old_spte)
231 ctf_integer(u64, new_spte, *sptep)
232 ctf_integer(bool, retry, retry)
b3c40230
MG
233 )
234)
9bbf98da 235#endif /* LTTNG_TRACE_KVM_MMU_H */
b3c40230
MG
236
237#undef TRACE_INCLUDE_PATH
c075712b 238#define TRACE_INCLUDE_PATH instrumentation/events/lttng-module/arch/x86/kvm
b3c40230
MG
239#undef TRACE_INCLUDE_FILE
240#define TRACE_INCLUDE_FILE mmutrace
241
242/* This part must be outside protection */
6ec43db8 243#include <probes/define_trace.h>
This page took 0.040028 seconds and 4 git commands to generate.