1 /* SPDX-License-Identifier: GPL-2.0 */
4 #define TRACE_SYSTEM hyperv
6 #if !defined(_HV_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
9 #include <linux/tracepoint.h>
11 DECLARE_EVENT_CLASS(vmbus_hdr_msg
,
12 TP_PROTO(const struct vmbus_channel_message_header
*hdr
),
14 TP_STRUCT__entry(__field(unsigned int, msgtype
)),
15 TP_fast_assign(__entry
->msgtype
= hdr
->msgtype
;),
16 TP_printk("msgtype=%u", __entry
->msgtype
)
19 DEFINE_EVENT(vmbus_hdr_msg
, vmbus_on_msg_dpc
,
20 TP_PROTO(const struct vmbus_channel_message_header
*hdr
),
24 DEFINE_EVENT(vmbus_hdr_msg
, vmbus_on_message
,
25 TP_PROTO(const struct vmbus_channel_message_header
*hdr
),
29 TRACE_EVENT(vmbus_onoffer
,
30 TP_PROTO(const struct vmbus_channel_offer_channel
*offer
),
33 __field(u32
, child_relid
)
34 __field(u8
, monitorid
)
35 __field(u16
, is_ddc_int
)
36 __field(u32
, connection_id
)
37 __array(char, if_type
, 16)
38 __array(char, if_instance
, 16)
39 __field(u16
, chn_flags
)
43 TP_fast_assign(__entry
->child_relid
= offer
->child_relid
;
44 __entry
->monitorid
= offer
->monitorid
;
45 __entry
->is_ddc_int
= offer
->is_dedicated_interrupt
;
46 __entry
->connection_id
= offer
->connection_id
;
47 export_guid(__entry
->if_type
, &offer
->offer
.if_type
);
48 export_guid(__entry
->if_instance
, &offer
->offer
.if_instance
);
49 __entry
->chn_flags
= offer
->offer
.chn_flags
;
50 __entry
->mmio_mb
= offer
->offer
.mmio_megabytes
;
51 __entry
->sub_idx
= offer
->offer
.sub_channel_index
;
53 TP_printk("child_relid 0x%x, monitorid 0x%x, is_dedicated %d, "
54 "connection_id 0x%x, if_type %pUl, if_instance %pUl, "
55 "chn_flags 0x%x, mmio_megabytes %d, sub_channel_index %d",
56 __entry
->child_relid
, __entry
->monitorid
,
57 __entry
->is_ddc_int
, __entry
->connection_id
,
58 __entry
->if_type
, __entry
->if_instance
,
59 __entry
->chn_flags
, __entry
->mmio_mb
,
64 TRACE_EVENT(vmbus_onoffer_rescind
,
65 TP_PROTO(const struct vmbus_channel_rescind_offer
*offer
),
67 TP_STRUCT__entry(__field(u32
, child_relid
)),
68 TP_fast_assign(__entry
->child_relid
= offer
->child_relid
),
69 TP_printk("child_relid 0x%x", __entry
->child_relid
)
72 TRACE_EVENT(vmbus_onopen_result
,
73 TP_PROTO(const struct vmbus_channel_open_result
*result
),
76 __field(u32
, child_relid
)
80 TP_fast_assign(__entry
->child_relid
= result
->child_relid
;
81 __entry
->openid
= result
->openid
;
82 __entry
->status
= result
->status
;
84 TP_printk("child_relid 0x%x, openid %d, status %d",
85 __entry
->child_relid
, __entry
->openid
, __entry
->status
89 TRACE_EVENT(vmbus_ongpadl_created
,
90 TP_PROTO(const struct vmbus_channel_gpadl_created
*gpadlcreated
),
91 TP_ARGS(gpadlcreated
),
93 __field(u32
, child_relid
)
97 TP_fast_assign(__entry
->child_relid
= gpadlcreated
->child_relid
;
98 __entry
->gpadl
= gpadlcreated
->gpadl
;
99 __entry
->status
= gpadlcreated
->creation_status
;
101 TP_printk("child_relid 0x%x, gpadl 0x%x, creation_status %d",
102 __entry
->child_relid
, __entry
->gpadl
, __entry
->status
106 TRACE_EVENT(vmbus_onmodifychannel_response
,
107 TP_PROTO(const struct vmbus_channel_modifychannel_response
*response
),
110 __field(u32
, child_relid
)
113 TP_fast_assign(__entry
->child_relid
= response
->child_relid
;
114 __entry
->status
= response
->status
;
116 TP_printk("child_relid 0x%x, status %d",
117 __entry
->child_relid
, __entry
->status
121 TRACE_EVENT(vmbus_ongpadl_torndown
,
122 TP_PROTO(const struct vmbus_channel_gpadl_torndown
*gpadltorndown
),
123 TP_ARGS(gpadltorndown
),
124 TP_STRUCT__entry(__field(u32
, gpadl
)),
125 TP_fast_assign(__entry
->gpadl
= gpadltorndown
->gpadl
),
126 TP_printk("gpadl 0x%x", __entry
->gpadl
)
129 TRACE_EVENT(vmbus_onversion_response
,
130 TP_PROTO(const struct vmbus_channel_version_response
*response
),
135 TP_fast_assign(__entry
->ver
= response
->version_supported
;
137 TP_printk("version_supported %d", __entry
->ver
)
140 TRACE_EVENT(vmbus_request_offers
,
143 TP_STRUCT__entry(__field(int, ret
)),
144 TP_fast_assign(__entry
->ret
= ret
),
145 TP_printk("sending ret %d", __entry
->ret
)
148 TRACE_EVENT(vmbus_open
,
149 TP_PROTO(const struct vmbus_channel_open_channel
*msg
, int ret
),
152 __field(u32
, child_relid
)
154 __field(u32
, gpadlhandle
)
155 __field(u32
, target_vp
)
160 __entry
->child_relid
= msg
->child_relid
;
161 __entry
->openid
= msg
->openid
;
162 __entry
->gpadlhandle
= msg
->ringbuffer_gpadlhandle
;
163 __entry
->target_vp
= msg
->target_vp
;
164 __entry
->offset
= msg
->downstream_ringbuffer_pageoffset
;
167 TP_printk("sending child_relid 0x%x, openid %d, "
168 "gpadlhandle 0x%x, target_vp 0x%x, offset 0x%x, ret %d",
169 __entry
->child_relid
, __entry
->openid
,
170 __entry
->gpadlhandle
, __entry
->target_vp
,
171 __entry
->offset
, __entry
->ret
175 TRACE_EVENT(vmbus_close_internal
,
176 TP_PROTO(const struct vmbus_channel_close_channel
*msg
, int ret
),
179 __field(u32
, child_relid
)
183 __entry
->child_relid
= msg
->child_relid
;
186 TP_printk("sending child_relid 0x%x, ret %d", __entry
->child_relid
,
190 TRACE_EVENT(vmbus_establish_gpadl_header
,
191 TP_PROTO(const struct vmbus_channel_gpadl_header
*msg
, int ret
),
194 __field(u32
, child_relid
)
196 __field(u16
, range_buflen
)
197 __field(u16
, rangecount
)
201 __entry
->child_relid
= msg
->child_relid
;
202 __entry
->gpadl
= msg
->gpadl
;
203 __entry
->range_buflen
= msg
->range_buflen
;
204 __entry
->rangecount
= msg
->rangecount
;
207 TP_printk("sending child_relid 0x%x, gpadl 0x%x, range_buflen %d "
208 "rangecount %d, ret %d",
209 __entry
->child_relid
, __entry
->gpadl
,
210 __entry
->range_buflen
, __entry
->rangecount
, __entry
->ret
214 TRACE_EVENT(vmbus_establish_gpadl_body
,
215 TP_PROTO(const struct vmbus_channel_gpadl_body
*msg
, int ret
),
218 __field(u32
, msgnumber
)
223 __entry
->msgnumber
= msg
->msgnumber
;
224 __entry
->gpadl
= msg
->gpadl
;
227 TP_printk("sending msgnumber %d, gpadl 0x%x, ret %d",
228 __entry
->msgnumber
, __entry
->gpadl
, __entry
->ret
232 TRACE_EVENT(vmbus_teardown_gpadl
,
233 TP_PROTO(const struct vmbus_channel_gpadl_teardown
*msg
, int ret
),
236 __field(u32
, child_relid
)
241 __entry
->child_relid
= msg
->child_relid
;
242 __entry
->gpadl
= msg
->gpadl
;
245 TP_printk("sending child_relid 0x%x, gpadl 0x%x, ret %d",
246 __entry
->child_relid
, __entry
->gpadl
, __entry
->ret
250 TRACE_EVENT(vmbus_negotiate_version
,
251 TP_PROTO(const struct vmbus_channel_initiate_contact
*msg
, int ret
),
255 __field(u32
, target_vcpu
)
257 __field(u64
, int_page
)
258 __field(u64
, mon_page1
)
259 __field(u64
, mon_page2
)
262 __entry
->ver
= msg
->vmbus_version_requested
;
263 __entry
->target_vcpu
= msg
->target_vcpu
;
264 __entry
->int_page
= msg
->interrupt_page
;
265 __entry
->mon_page1
= msg
->monitor_page1
;
266 __entry
->mon_page2
= msg
->monitor_page2
;
269 TP_printk("sending vmbus_version_requested %d, target_vcpu 0x%x, "
270 "pages %llx:%llx:%llx, ret %d",
271 __entry
->ver
, __entry
->target_vcpu
, __entry
->int_page
,
272 __entry
->mon_page1
, __entry
->mon_page2
, __entry
->ret
276 TRACE_EVENT(vmbus_release_relid
,
277 TP_PROTO(const struct vmbus_channel_relid_released
*msg
, int ret
),
280 __field(u32
, child_relid
)
284 __entry
->child_relid
= msg
->child_relid
;
287 TP_printk("sending child_relid 0x%x, ret %d",
288 __entry
->child_relid
, __entry
->ret
292 TRACE_EVENT(vmbus_send_tl_connect_request
,
293 TP_PROTO(const struct vmbus_channel_tl_connect_request
*msg
,
297 __array(char, guest_id
, 16)
298 __array(char, host_id
, 16)
302 export_guid(__entry
->guest_id
, &msg
->guest_endpoint_id
);
303 export_guid(__entry
->host_id
, &msg
->host_service_id
);
306 TP_printk("sending guest_endpoint_id %pUl, host_service_id %pUl, "
308 __entry
->guest_id
, __entry
->host_id
, __entry
->ret
312 TRACE_EVENT(vmbus_send_modifychannel
,
313 TP_PROTO(const struct vmbus_channel_modifychannel
*msg
,
317 __field(u32
, child_relid
)
318 __field(u32
, target_vp
)
322 __entry
->child_relid
= msg
->child_relid
;
323 __entry
->target_vp
= msg
->target_vp
;
326 TP_printk("binding child_relid 0x%x to target_vp 0x%x, ret %d",
327 __entry
->child_relid
, __entry
->target_vp
, __entry
->ret
331 DECLARE_EVENT_CLASS(vmbus_channel
,
332 TP_PROTO(const struct vmbus_channel
*channel
),
334 TP_STRUCT__entry(__field(u32
, relid
)),
335 TP_fast_assign(__entry
->relid
= channel
->offermsg
.child_relid
),
336 TP_printk("relid 0x%x", __entry
->relid
)
339 DEFINE_EVENT(vmbus_channel
, vmbus_chan_sched
,
340 TP_PROTO(const struct vmbus_channel
*channel
),
344 DEFINE_EVENT(vmbus_channel
, vmbus_setevent
,
345 TP_PROTO(const struct vmbus_channel
*channel
),
349 DEFINE_EVENT(vmbus_channel
, vmbus_on_event
,
350 TP_PROTO(const struct vmbus_channel
*channel
),
354 #undef TRACE_INCLUDE_PATH
355 #define TRACE_INCLUDE_PATH .
356 #undef TRACE_INCLUDE_FILE
357 #define TRACE_INCLUDE_FILE hv_trace
358 #endif /* _HV_TRACE_H */
360 /* This part must be outside protection */
361 #include <trace/define_trace.h>