~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/s390/kvm/trace.h

Version: ~ [ linux-5.13-rc2 ] ~ [ linux-5.12.4 ] ~ [ linux-5.11.21 ] ~ [ linux-5.10.37 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.119 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.190 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.232 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.268 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.268 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.18.140 ] ~ [ linux-3.16.85 ] ~ [ linux-3.14.79 ] ~ [ linux-3.12.74 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 #if !defined(_TRACE_KVM_H) || defined(TRACE_HEADER_MULTI_READ)
  2 #define _TRACE_KVM_H
  3 
  4 #include <linux/tracepoint.h>
  5 #include <asm/sie.h>
  6 #include <asm/debug.h>
  7 #include <asm/dis.h>
  8 
  9 #undef TRACE_SYSTEM
 10 #define TRACE_SYSTEM kvm
 11 #define TRACE_INCLUDE_PATH .
 12 #undef TRACE_INCLUDE_FILE
 13 #define TRACE_INCLUDE_FILE trace
 14 
 15 /*
 16  * Helpers for vcpu-specific tracepoints containing the same information
 17  * as s390dbf VCPU_EVENTs.
 18  */
 19 #define VCPU_PROTO_COMMON struct kvm_vcpu *vcpu
 20 #define VCPU_ARGS_COMMON vcpu
 21 #define VCPU_FIELD_COMMON __field(int, id)                      \
 22         __field(unsigned long, pswmask)                         \
 23         __field(unsigned long, pswaddr)
 24 #define VCPU_ASSIGN_COMMON do {                                         \
 25         __entry->id = vcpu->vcpu_id;                                    \
 26         __entry->pswmask = vcpu->arch.sie_block->gpsw.mask;             \
 27         __entry->pswaddr = vcpu->arch.sie_block->gpsw.addr;             \
 28         } while (0);
 29 #define VCPU_TP_PRINTK(p_str, p_args...)                                \
 30         TP_printk("%02d[%016lx-%016lx]: " p_str, __entry->id,           \
 31                   __entry->pswmask, __entry->pswaddr, p_args)
 32 
 33 TRACE_EVENT(kvm_s390_skey_related_inst,
 34             TP_PROTO(VCPU_PROTO_COMMON),
 35             TP_ARGS(VCPU_ARGS_COMMON),
 36 
 37             TP_STRUCT__entry(
 38                     VCPU_FIELD_COMMON
 39                     ),
 40 
 41             TP_fast_assign(
 42                     VCPU_ASSIGN_COMMON
 43                     ),
 44             VCPU_TP_PRINTK("%s", "storage key related instruction")
 45         );
 46 
 47 TRACE_EVENT(kvm_s390_major_guest_pfault,
 48             TP_PROTO(VCPU_PROTO_COMMON),
 49             TP_ARGS(VCPU_ARGS_COMMON),
 50 
 51             TP_STRUCT__entry(
 52                     VCPU_FIELD_COMMON
 53                     ),
 54 
 55             TP_fast_assign(
 56                     VCPU_ASSIGN_COMMON
 57                     ),
 58             VCPU_TP_PRINTK("%s", "major fault, maybe applicable for pfault")
 59         );
 60 
 61 TRACE_EVENT(kvm_s390_pfault_init,
 62             TP_PROTO(VCPU_PROTO_COMMON, long pfault_token),
 63             TP_ARGS(VCPU_ARGS_COMMON, pfault_token),
 64 
 65             TP_STRUCT__entry(
 66                     VCPU_FIELD_COMMON
 67                     __field(long, pfault_token)
 68                     ),
 69 
 70             TP_fast_assign(
 71                     VCPU_ASSIGN_COMMON
 72                     __entry->pfault_token = pfault_token;
 73                     ),
 74             VCPU_TP_PRINTK("init pfault token %ld", __entry->pfault_token)
 75         );
 76 
 77 TRACE_EVENT(kvm_s390_pfault_done,
 78             TP_PROTO(VCPU_PROTO_COMMON, long pfault_token),
 79             TP_ARGS(VCPU_ARGS_COMMON, pfault_token),
 80 
 81             TP_STRUCT__entry(
 82                     VCPU_FIELD_COMMON
 83                     __field(long, pfault_token)
 84                     ),
 85 
 86             TP_fast_assign(
 87                     VCPU_ASSIGN_COMMON
 88                     __entry->pfault_token = pfault_token;
 89                     ),
 90             VCPU_TP_PRINTK("done pfault token %ld", __entry->pfault_token)
 91         );
 92 
 93 /*
 94  * Tracepoints for SIE entry and exit.
 95  */
 96 TRACE_EVENT(kvm_s390_sie_enter,
 97             TP_PROTO(VCPU_PROTO_COMMON, int cpuflags),
 98             TP_ARGS(VCPU_ARGS_COMMON, cpuflags),
 99 
100             TP_STRUCT__entry(
101                     VCPU_FIELD_COMMON
102                     __field(int, cpuflags)
103                     ),
104 
105             TP_fast_assign(
106                     VCPU_ASSIGN_COMMON
107                     __entry->cpuflags = cpuflags;
108                     ),
109 
110             VCPU_TP_PRINTK("entering sie flags %x", __entry->cpuflags)
111         );
112 
113 TRACE_EVENT(kvm_s390_sie_fault,
114             TP_PROTO(VCPU_PROTO_COMMON),
115             TP_ARGS(VCPU_ARGS_COMMON),
116 
117             TP_STRUCT__entry(
118                     VCPU_FIELD_COMMON
119                     ),
120 
121             TP_fast_assign(
122                     VCPU_ASSIGN_COMMON
123                     ),
124 
125             VCPU_TP_PRINTK("%s", "fault in sie instruction")
126         );
127 
128 TRACE_EVENT(kvm_s390_sie_exit,
129             TP_PROTO(VCPU_PROTO_COMMON, u8 icptcode),
130             TP_ARGS(VCPU_ARGS_COMMON, icptcode),
131 
132             TP_STRUCT__entry(
133                     VCPU_FIELD_COMMON
134                     __field(u8, icptcode)
135                     ),
136 
137             TP_fast_assign(
138                     VCPU_ASSIGN_COMMON
139                     __entry->icptcode = icptcode;
140                     ),
141 
142             VCPU_TP_PRINTK("exit sie icptcode %d (%s)", __entry->icptcode,
143                            __print_symbolic(__entry->icptcode,
144                                             sie_intercept_code))
145         );
146 
147 /*
148  * Trace point for intercepted instructions.
149  */
150 TRACE_EVENT(kvm_s390_intercept_instruction,
151             TP_PROTO(VCPU_PROTO_COMMON, __u16 ipa, __u32 ipb),
152             TP_ARGS(VCPU_ARGS_COMMON, ipa, ipb),
153 
154             TP_STRUCT__entry(
155                     VCPU_FIELD_COMMON
156                     __field(__u64, instruction)
157                     ),
158 
159             TP_fast_assign(
160                     VCPU_ASSIGN_COMMON
161                     __entry->instruction = ((__u64)ipa << 48) |
162                     ((__u64)ipb << 16);
163                     ),
164 
165             VCPU_TP_PRINTK("intercepted instruction %016llx (%s)",
166                            __entry->instruction,
167                            __print_symbolic(icpt_insn_decoder(__entry->instruction),
168                                             icpt_insn_codes))
169         );
170 
171 /*
172  * Trace point for intercepted program interruptions.
173  */
174 TRACE_EVENT(kvm_s390_intercept_prog,
175             TP_PROTO(VCPU_PROTO_COMMON, __u16 code),
176             TP_ARGS(VCPU_ARGS_COMMON, code),
177 
178             TP_STRUCT__entry(
179                     VCPU_FIELD_COMMON
180                     __field(__u16, code)
181                     ),
182 
183             TP_fast_assign(
184                     VCPU_ASSIGN_COMMON
185                     __entry->code = code;
186                     ),
187 
188             VCPU_TP_PRINTK("intercepted program interruption %04x (%s)",
189                            __entry->code,
190                            __print_symbolic(__entry->code,
191                                             icpt_prog_codes))
192         );
193 
194 /*
195  * Trace point for validity intercepts.
196  */
197 TRACE_EVENT(kvm_s390_intercept_validity,
198             TP_PROTO(VCPU_PROTO_COMMON, __u16 viwhy),
199             TP_ARGS(VCPU_ARGS_COMMON, viwhy),
200 
201             TP_STRUCT__entry(
202                     VCPU_FIELD_COMMON
203                     __field(__u16, viwhy)
204                     ),
205 
206             TP_fast_assign(
207                     VCPU_ASSIGN_COMMON
208                     __entry->viwhy = viwhy;
209                     ),
210 
211             VCPU_TP_PRINTK("got validity intercept %04x", __entry->viwhy)
212         );
213 
214 /*
215  * Trace points for instructions that are of special interest.
216  */
217 
218 TRACE_EVENT(kvm_s390_handle_sigp,
219             TP_PROTO(VCPU_PROTO_COMMON, __u8 order_code, __u16 cpu_addr, \
220                      __u32 parameter),
221             TP_ARGS(VCPU_ARGS_COMMON, order_code, cpu_addr, parameter),
222 
223             TP_STRUCT__entry(
224                     VCPU_FIELD_COMMON
225                     __field(__u8, order_code)
226                     __field(__u16, cpu_addr)
227                     __field(__u32, parameter)
228                     ),
229 
230             TP_fast_assign(
231                     VCPU_ASSIGN_COMMON
232                     __entry->order_code = order_code;
233                     __entry->cpu_addr = cpu_addr;
234                     __entry->parameter = parameter;
235                     ),
236 
237             VCPU_TP_PRINTK("handle sigp order %02x (%s), cpu address %04x, " \
238                            "parameter %08x", __entry->order_code,
239                            __print_symbolic(__entry->order_code,
240                                             sigp_order_codes),
241                            __entry->cpu_addr, __entry->parameter)
242         );
243 
244 TRACE_EVENT(kvm_s390_handle_sigp_pei,
245             TP_PROTO(VCPU_PROTO_COMMON, __u8 order_code, __u16 cpu_addr),
246             TP_ARGS(VCPU_ARGS_COMMON, order_code, cpu_addr),
247 
248             TP_STRUCT__entry(
249                     VCPU_FIELD_COMMON
250                     __field(__u8, order_code)
251                     __field(__u16, cpu_addr)
252                     ),
253 
254             TP_fast_assign(
255                     VCPU_ASSIGN_COMMON
256                     __entry->order_code = order_code;
257                     __entry->cpu_addr = cpu_addr;
258                     ),
259 
260             VCPU_TP_PRINTK("handle sigp pei order %02x (%s), cpu address %04x",
261                            __entry->order_code,
262                            __print_symbolic(__entry->order_code,
263                                             sigp_order_codes),
264                            __entry->cpu_addr)
265         );
266 
267 TRACE_EVENT(kvm_s390_handle_diag,
268             TP_PROTO(VCPU_PROTO_COMMON, __u16 code),
269             TP_ARGS(VCPU_ARGS_COMMON, code),
270 
271             TP_STRUCT__entry(
272                     VCPU_FIELD_COMMON
273                     __field(__u16, code)
274                     ),
275 
276             TP_fast_assign(
277                     VCPU_ASSIGN_COMMON
278                     __entry->code = code;
279                     ),
280 
281             VCPU_TP_PRINTK("handle diagnose call %04x (%s)", __entry->code,
282                            __print_symbolic(__entry->code, diagnose_codes))
283         );
284 
285 TRACE_EVENT(kvm_s390_handle_lctl,
286             TP_PROTO(VCPU_PROTO_COMMON, int g, int reg1, int reg3, u64 addr),
287             TP_ARGS(VCPU_ARGS_COMMON, g, reg1, reg3, addr),
288 
289             TP_STRUCT__entry(
290                     VCPU_FIELD_COMMON
291                     __field(int, g)
292                     __field(int, reg1)
293                     __field(int, reg3)
294                     __field(u64, addr)
295                     ),
296 
297             TP_fast_assign(
298                     VCPU_ASSIGN_COMMON
299                     __entry->g = g;
300                     __entry->reg1 = reg1;
301                     __entry->reg3 = reg3;
302                     __entry->addr = addr;
303                     ),
304 
305             VCPU_TP_PRINTK("%s: loading cr %x-%x from %016llx",
306                            __entry->g ? "lctlg" : "lctl",
307                            __entry->reg1, __entry->reg3, __entry->addr)
308         );
309 
310 TRACE_EVENT(kvm_s390_handle_stctl,
311             TP_PROTO(VCPU_PROTO_COMMON, int g, int reg1, int reg3, u64 addr),
312             TP_ARGS(VCPU_ARGS_COMMON, g, reg1, reg3, addr),
313 
314             TP_STRUCT__entry(
315                     VCPU_FIELD_COMMON
316                     __field(int, g)
317                     __field(int, reg1)
318                     __field(int, reg3)
319                     __field(u64, addr)
320                     ),
321 
322             TP_fast_assign(
323                     VCPU_ASSIGN_COMMON
324                     __entry->g = g;
325                     __entry->reg1 = reg1;
326                     __entry->reg3 = reg3;
327                     __entry->addr = addr;
328                     ),
329 
330             VCPU_TP_PRINTK("%s: storing cr %x-%x to %016llx",
331                            __entry->g ? "stctg" : "stctl",
332                            __entry->reg1, __entry->reg3, __entry->addr)
333         );
334 
335 TRACE_EVENT(kvm_s390_handle_prefix,
336             TP_PROTO(VCPU_PROTO_COMMON, int set, u32 address),
337             TP_ARGS(VCPU_ARGS_COMMON, set, address),
338 
339             TP_STRUCT__entry(
340                     VCPU_FIELD_COMMON
341                     __field(int, set)
342                     __field(u32, address)
343                     ),
344 
345             TP_fast_assign(
346                     VCPU_ASSIGN_COMMON
347                     __entry->set = set;
348                     __entry->address = address;
349                     ),
350 
351             VCPU_TP_PRINTK("%s prefix to %08x",
352                            __entry->set ? "setting" : "storing",
353                            __entry->address)
354         );
355 
356 TRACE_EVENT(kvm_s390_handle_stap,
357             TP_PROTO(VCPU_PROTO_COMMON, u64 address),
358             TP_ARGS(VCPU_ARGS_COMMON, address),
359 
360             TP_STRUCT__entry(
361                     VCPU_FIELD_COMMON
362                     __field(u64, address)
363                     ),
364 
365             TP_fast_assign(
366                     VCPU_ASSIGN_COMMON
367                     __entry->address = address;
368                     ),
369 
370             VCPU_TP_PRINTK("storing cpu address to %016llx",
371                            __entry->address)
372         );
373 
374 TRACE_EVENT(kvm_s390_handle_stfl,
375             TP_PROTO(VCPU_PROTO_COMMON, unsigned int facility_list),
376             TP_ARGS(VCPU_ARGS_COMMON, facility_list),
377 
378             TP_STRUCT__entry(
379                     VCPU_FIELD_COMMON
380                     __field(unsigned int, facility_list)
381                     ),
382 
383             TP_fast_assign(
384                     VCPU_ASSIGN_COMMON
385                     __entry->facility_list = facility_list;
386                     ),
387 
388             VCPU_TP_PRINTK("store facility list value %08x",
389                            __entry->facility_list)
390         );
391 
392 TRACE_EVENT(kvm_s390_handle_stsi,
393             TP_PROTO(VCPU_PROTO_COMMON, int fc, int sel1, int sel2, u64 addr),
394             TP_ARGS(VCPU_ARGS_COMMON, fc, sel1, sel2, addr),
395 
396             TP_STRUCT__entry(
397                     VCPU_FIELD_COMMON
398                     __field(int, fc)
399                     __field(int, sel1)
400                     __field(int, sel2)
401                     __field(u64, addr)
402                     ),
403 
404             TP_fast_assign(
405                     VCPU_ASSIGN_COMMON
406                     __entry->fc = fc;
407                     __entry->sel1 = sel1;
408                     __entry->sel2 = sel2;
409                     __entry->addr = addr;
410                     ),
411 
412             VCPU_TP_PRINTK("STSI %d.%d.%d information stored to %016llx",
413                            __entry->fc, __entry->sel1, __entry->sel2,
414                            __entry->addr)
415         );
416 
417 TRACE_EVENT(kvm_s390_handle_operexc,
418             TP_PROTO(VCPU_PROTO_COMMON, __u16 ipa, __u32 ipb),
419             TP_ARGS(VCPU_ARGS_COMMON, ipa, ipb),
420 
421             TP_STRUCT__entry(
422                     VCPU_FIELD_COMMON
423                     __field(__u64, instruction)
424                     ),
425 
426             TP_fast_assign(
427                     VCPU_ASSIGN_COMMON
428                     __entry->instruction = ((__u64)ipa << 48) |
429                     ((__u64)ipb << 16);
430                     ),
431 
432             VCPU_TP_PRINTK("operation exception on instruction %016llx (%s)",
433                            __entry->instruction,
434                            __print_symbolic(icpt_insn_decoder(__entry->instruction),
435                                             icpt_insn_codes))
436         );
437 
438 TRACE_EVENT(kvm_s390_handle_sthyi,
439             TP_PROTO(VCPU_PROTO_COMMON, u64 code, u64 addr),
440             TP_ARGS(VCPU_ARGS_COMMON, code, addr),
441 
442             TP_STRUCT__entry(
443                     VCPU_FIELD_COMMON
444                     __field(u64, code)
445                     __field(u64, addr)
446                     ),
447 
448             TP_fast_assign(
449                     VCPU_ASSIGN_COMMON
450                     __entry->code = code;
451                     __entry->addr = addr;
452                     ),
453 
454             VCPU_TP_PRINTK("STHYI fc: %llu addr: %016llx",
455                            __entry->code, __entry->addr)
456         );
457 
458 #endif /* _TRACE_KVM_H */
459 
460 /* This part must be outside protection */
461 #include <trace/define_trace.h>
462 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp