Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
trace-s390.h
Go to the documentation of this file.
1 #if !defined(_TRACE_KVMS390_H) || defined(TRACE_HEADER_MULTI_READ)
2 #define _TRACE_KVMS390_H
3 
4 #include <linux/tracepoint.h>
5 
6 #undef TRACE_SYSTEM
7 #define TRACE_SYSTEM kvm-s390
8 #define TRACE_INCLUDE_PATH .
9 #undef TRACE_INCLUDE_FILE
10 #define TRACE_INCLUDE_FILE trace-s390
11 
12 /*
13  * Trace point for the creation of the kvm instance.
14  */
15 TRACE_EVENT(kvm_s390_create_vm,
16  TP_PROTO(unsigned long type),
17  TP_ARGS(type),
18 
20  __field(unsigned long, type)
21  ),
22 
24  __entry->type = type;
25  ),
26 
27  TP_printk("create vm%s",
28  __entry->type & KVM_VM_S390_UCONTROL ? " (UCONTROL)" : "")
29  );
30 
31 /*
32  * Trace points for creation and destruction of vpcus.
33  */
34 TRACE_EVENT(kvm_s390_create_vcpu,
35  TP_PROTO(unsigned int id, struct kvm_vcpu *vcpu,
36  struct kvm_s390_sie_block *sie_block),
37  TP_ARGS(id, vcpu, sie_block),
38 
40  __field(unsigned int, id)
41  __field(struct kvm_vcpu *, vcpu)
42  __field(struct kvm_s390_sie_block *, sie_block)
43  ),
44 
46  __entry->id = id;
47  __entry->vcpu = vcpu;
48  __entry->sie_block = sie_block;
49  ),
50 
51  TP_printk("create cpu %d at %p, sie block at %p", __entry->id,
52  __entry->vcpu, __entry->sie_block)
53  );
54 
55 TRACE_EVENT(kvm_s390_destroy_vcpu,
56  TP_PROTO(unsigned int id),
57  TP_ARGS(id),
58 
60  __field(unsigned int, id)
61  ),
62 
64  __entry->id = id;
65  ),
66 
67  TP_printk("destroy cpu %d", __entry->id)
68  );
69 
70 /*
71  * Trace points for injection of interrupts, either per machine or
72  * per vcpu.
73  */
74 
75 #define kvm_s390_int_type \
76  {KVM_S390_SIGP_STOP, "sigp stop"}, \
77  {KVM_S390_PROGRAM_INT, "program interrupt"}, \
78  {KVM_S390_SIGP_SET_PREFIX, "sigp set prefix"}, \
79  {KVM_S390_RESTART, "sigp restart"}, \
80  {KVM_S390_INT_VIRTIO, "virtio interrupt"}, \
81  {KVM_S390_INT_SERVICE, "sclp interrupt"}, \
82  {KVM_S390_INT_EMERGENCY, "sigp emergency"}, \
83  {KVM_S390_INT_EXTERNAL_CALL, "sigp ext call"}
84 
86  TP_PROTO(__u64 type, __u32 parm, __u64 parm64, int who),
87  TP_ARGS(type, parm, parm64, who),
88 
90  __field(__u32, inttype)
91  __field(__u32, parm)
92  __field(__u64, parm64)
93  __field(int, who)
94  ),
95 
97  __entry->inttype = type & 0x00000000ffffffff;
98  __entry->parm = parm;
99  __entry->parm64 = parm64;
100  __entry->who = who;
101  ),
102 
103  TP_printk("inject%s: type:%x (%s) parm:%x parm64:%llx",
104  (__entry->who == 1) ? " (from kernel)" :
105  (__entry->who == 2) ? " (from user)" : "",
106  __entry->inttype,
108  __entry->parm, __entry->parm64)
109  );
110 
112  TP_PROTO(unsigned int id, __u64 type, __u32 parm, __u64 parm64, \
113  int who),
114  TP_ARGS(id, type, parm, parm64, who),
115 
117  __field(int, id)
118  __field(__u32, inttype)
119  __field(__u32, parm)
120  __field(__u64, parm64)
121  __field(int, who)
122  ),
123 
125  __entry->id = id;
126  __entry->inttype = type & 0x00000000ffffffff;
127  __entry->parm = parm;
128  __entry->parm64 = parm64;
129  __entry->who = who;
130  ),
131 
132  TP_printk("inject%s (vcpu %d): type:%x (%s) parm:%x parm64:%llx",
133  (__entry->who == 1) ? " (from kernel)" :
134  (__entry->who == 2) ? " (from user)" : "",
135  __entry->id, __entry->inttype,
137  __entry->parm, __entry->parm64)
138  );
139 
140 /*
141  * Trace point for the actual delivery of interrupts.
142  */
143 TRACE_EVENT(kvm_s390_deliver_interrupt,
144  TP_PROTO(unsigned int id, __u64 type, __u32 data0, __u64 data1),
145  TP_ARGS(id, type, data0, data1),
146 
148  __field(int, id)
149  __field(__u32, inttype)
150  __field(__u32, data0)
151  __field(__u64, data1)
152  ),
153 
155  __entry->id = id;
156  __entry->inttype = type & 0x00000000ffffffff;
157  __entry->data0 = data0;
158  __entry->data1 = data1;
159  ),
160 
161  TP_printk("deliver interrupt (vcpu %d): type:%x (%s) " \
162  "data:%08x %016llx",
163  __entry->id, __entry->inttype,
165  __entry->data0, __entry->data1)
166  );
167 
168 /*
169  * Trace point for resets that may be requested from userspace.
170  */
171 TRACE_EVENT(kvm_s390_request_resets,
172  TP_PROTO(__u64 resets),
173  TP_ARGS(resets),
174 
176  __field(__u64, resets)
177  ),
178 
180  __entry->resets = resets;
181  ),
182 
183  TP_printk("requesting userspace resets %llx",
184  __entry->resets)
185  );
186 
187 /*
188  * Trace point for a vcpu's stop requests.
189  */
190 TRACE_EVENT(kvm_s390_stop_request,
191  TP_PROTO(unsigned int action_bits),
192  TP_ARGS(action_bits),
193 
195  __field(unsigned int, action_bits)
196  ),
197 
199  __entry->action_bits = action_bits;
200  ),
201 
202  TP_printk("stop request, action_bits = %08x",
203  __entry->action_bits)
204  );
205 
206 
207 #endif /* _TRACE_KVMS390_H */
208 
209 /* This part must be outside protection */
210 #include <trace/define_trace.h>