diff options
Diffstat (limited to 'arch/x86/kvm/mmutrace.h')
-rw-r--r-- | arch/x86/kvm/mmutrace.h | 84 |
1 files changed, 35 insertions, 49 deletions
diff --git a/arch/x86/kvm/mmutrace.h b/arch/x86/kvm/mmutrace.h index 3e4a5c6ca2a9..42f07b1bfbc9 100644 --- a/arch/x86/kvm/mmutrace.h +++ b/arch/x86/kvm/mmutrace.h | |||
@@ -6,14 +6,12 @@ | |||
6 | 6 | ||
7 | #undef TRACE_SYSTEM | 7 | #undef TRACE_SYSTEM |
8 | #define TRACE_SYSTEM kvmmmu | 8 | #define TRACE_SYSTEM kvmmmu |
9 | #define TRACE_INCLUDE_PATH . | ||
10 | #define TRACE_INCLUDE_FILE mmutrace | ||
11 | 9 | ||
12 | #define KVM_MMU_PAGE_FIELDS \ | 10 | #define KVM_MMU_PAGE_FIELDS \ |
13 | __field(__u64, gfn) \ | 11 | __field(__u64, gfn) \ |
14 | __field(__u32, role) \ | 12 | __field(__u32, role) \ |
15 | __field(__u32, root_count) \ | 13 | __field(__u32, root_count) \ |
16 | __field(__u32, unsync) | 14 | __field(bool, unsync) |
17 | 15 | ||
18 | #define KVM_MMU_PAGE_ASSIGN(sp) \ | 16 | #define KVM_MMU_PAGE_ASSIGN(sp) \ |
19 | __entry->gfn = sp->gfn; \ | 17 | __entry->gfn = sp->gfn; \ |
@@ -30,14 +28,14 @@ | |||
30 | \ | 28 | \ |
31 | role.word = __entry->role; \ | 29 | role.word = __entry->role; \ |
32 | \ | 30 | \ |
33 | trace_seq_printf(p, "sp gfn %llx %u/%u q%u%s %s%s %spge" \ | 31 | trace_seq_printf(p, "sp gfn %llx %u%s q%u%s %s%s" \ |
34 | " %snxe root %u %s%c", \ | 32 | " %snxe root %u %s%c", \ |
35 | __entry->gfn, role.level, role.glevels, \ | 33 | __entry->gfn, role.level, \ |
34 | role.cr4_pae ? " pae" : "", \ | ||
36 | role.quadrant, \ | 35 | role.quadrant, \ |
37 | role.direct ? " direct" : "", \ | 36 | role.direct ? " direct" : "", \ |
38 | access_str[role.access], \ | 37 | access_str[role.access], \ |
39 | role.invalid ? " invalid" : "", \ | 38 | role.invalid ? " invalid" : "", \ |
40 | role.cr4_pge ? "" : "!", \ | ||
41 | role.nxe ? "" : "!", \ | 39 | role.nxe ? "" : "!", \ |
42 | __entry->root_count, \ | 40 | __entry->root_count, \ |
43 | __entry->unsync ? "unsync" : "sync", 0); \ | 41 | __entry->unsync ? "unsync" : "sync", 0); \ |
@@ -94,15 +92,15 @@ TRACE_EVENT( | |||
94 | TP_printk("pte %llx level %u", __entry->pte, __entry->level) | 92 | TP_printk("pte %llx level %u", __entry->pte, __entry->level) |
95 | ); | 93 | ); |
96 | 94 | ||
97 | /* We set a pte accessed bit */ | 95 | DECLARE_EVENT_CLASS(kvm_mmu_set_bit_class, |
98 | TRACE_EVENT( | 96 | |
99 | kvm_mmu_set_accessed_bit, | ||
100 | TP_PROTO(unsigned long table_gfn, unsigned index, unsigned size), | 97 | TP_PROTO(unsigned long table_gfn, unsigned index, unsigned size), |
98 | |||
101 | TP_ARGS(table_gfn, index, size), | 99 | TP_ARGS(table_gfn, index, size), |
102 | 100 | ||
103 | TP_STRUCT__entry( | 101 | TP_STRUCT__entry( |
104 | __field(__u64, gpa) | 102 | __field(__u64, gpa) |
105 | ), | 103 | ), |
106 | 104 | ||
107 | TP_fast_assign( | 105 | TP_fast_assign( |
108 | __entry->gpa = ((u64)table_gfn << PAGE_SHIFT) | 106 | __entry->gpa = ((u64)table_gfn << PAGE_SHIFT) |
@@ -112,22 +110,20 @@ TRACE_EVENT( | |||
112 | TP_printk("gpa %llx", __entry->gpa) | 110 | TP_printk("gpa %llx", __entry->gpa) |
113 | ); | 111 | ); |
114 | 112 | ||
115 | /* We set a pte dirty bit */ | 113 | /* We set a pte accessed bit */ |
116 | TRACE_EVENT( | 114 | DEFINE_EVENT(kvm_mmu_set_bit_class, kvm_mmu_set_accessed_bit, |
117 | kvm_mmu_set_dirty_bit, | 115 | |
118 | TP_PROTO(unsigned long table_gfn, unsigned index, unsigned size), | 116 | TP_PROTO(unsigned long table_gfn, unsigned index, unsigned size), |
119 | TP_ARGS(table_gfn, index, size), | ||
120 | 117 | ||
121 | TP_STRUCT__entry( | 118 | TP_ARGS(table_gfn, index, size) |
122 | __field(__u64, gpa) | 119 | ); |
123 | ), | ||
124 | 120 | ||
125 | TP_fast_assign( | 121 | /* We set a pte dirty bit */ |
126 | __entry->gpa = ((u64)table_gfn << PAGE_SHIFT) | 122 | DEFINE_EVENT(kvm_mmu_set_bit_class, kvm_mmu_set_dirty_bit, |
127 | + index * size; | ||
128 | ), | ||
129 | 123 | ||
130 | TP_printk("gpa %llx", __entry->gpa) | 124 | TP_PROTO(unsigned long table_gfn, unsigned index, unsigned size), |
125 | |||
126 | TP_ARGS(table_gfn, index, size) | ||
131 | ); | 127 | ); |
132 | 128 | ||
133 | TRACE_EVENT( | 129 | TRACE_EVENT( |
@@ -166,55 +162,45 @@ TRACE_EVENT( | |||
166 | __entry->created ? "new" : "existing") | 162 | __entry->created ? "new" : "existing") |
167 | ); | 163 | ); |
168 | 164 | ||
169 | TRACE_EVENT( | 165 | DECLARE_EVENT_CLASS(kvm_mmu_page_class, |
170 | kvm_mmu_sync_page, | 166 | |
171 | TP_PROTO(struct kvm_mmu_page *sp), | 167 | TP_PROTO(struct kvm_mmu_page *sp), |
172 | TP_ARGS(sp), | 168 | TP_ARGS(sp), |
173 | 169 | ||
174 | TP_STRUCT__entry( | 170 | TP_STRUCT__entry( |
175 | KVM_MMU_PAGE_FIELDS | 171 | KVM_MMU_PAGE_FIELDS |
176 | ), | 172 | ), |
177 | 173 | ||
178 | TP_fast_assign( | 174 | TP_fast_assign( |
179 | KVM_MMU_PAGE_ASSIGN(sp) | 175 | KVM_MMU_PAGE_ASSIGN(sp) |
180 | ), | 176 | ), |
181 | 177 | ||
182 | TP_printk("%s", KVM_MMU_PAGE_PRINTK()) | 178 | TP_printk("%s", KVM_MMU_PAGE_PRINTK()) |
183 | ); | 179 | ); |
184 | 180 | ||
185 | TRACE_EVENT( | 181 | DEFINE_EVENT(kvm_mmu_page_class, kvm_mmu_sync_page, |
186 | kvm_mmu_unsync_page, | ||
187 | TP_PROTO(struct kvm_mmu_page *sp), | 182 | TP_PROTO(struct kvm_mmu_page *sp), |
188 | TP_ARGS(sp), | ||
189 | |||
190 | TP_STRUCT__entry( | ||
191 | KVM_MMU_PAGE_FIELDS | ||
192 | ), | ||
193 | 183 | ||
194 | TP_fast_assign( | 184 | TP_ARGS(sp) |
195 | KVM_MMU_PAGE_ASSIGN(sp) | ||
196 | ), | ||
197 | |||
198 | TP_printk("%s", KVM_MMU_PAGE_PRINTK()) | ||
199 | ); | 185 | ); |
200 | 186 | ||
201 | TRACE_EVENT( | 187 | DEFINE_EVENT(kvm_mmu_page_class, kvm_mmu_unsync_page, |
202 | kvm_mmu_zap_page, | ||
203 | TP_PROTO(struct kvm_mmu_page *sp), | 188 | TP_PROTO(struct kvm_mmu_page *sp), |
204 | TP_ARGS(sp), | ||
205 | 189 | ||
206 | TP_STRUCT__entry( | 190 | TP_ARGS(sp) |
207 | KVM_MMU_PAGE_FIELDS | 191 | ); |
208 | ), | ||
209 | 192 | ||
210 | TP_fast_assign( | 193 | DEFINE_EVENT(kvm_mmu_page_class, kvm_mmu_zap_page, |
211 | KVM_MMU_PAGE_ASSIGN(sp) | 194 | TP_PROTO(struct kvm_mmu_page *sp), |
212 | ), | ||
213 | 195 | ||
214 | TP_printk("%s", KVM_MMU_PAGE_PRINTK()) | 196 | TP_ARGS(sp) |
215 | ); | 197 | ); |
216 | |||
217 | #endif /* _TRACE_KVMMMU_H */ | 198 | #endif /* _TRACE_KVMMMU_H */ |
218 | 199 | ||
200 | #undef TRACE_INCLUDE_PATH | ||
201 | #define TRACE_INCLUDE_PATH . | ||
202 | #undef TRACE_INCLUDE_FILE | ||
203 | #define TRACE_INCLUDE_FILE mmutrace | ||
204 | |||
219 | /* This part must be outside protection */ | 205 | /* This part must be outside protection */ |
220 | #include <trace/define_trace.h> | 206 | #include <trace/define_trace.h> |