1 /* SPDX-License-Identifier: GPL-2.0 */ 2 3 #undef TRACE_SYSTEM 4 #define TRACE_SYSTEM hyperv 5 6 #if !defined(_HV_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) 7 #define _HV_TRACE_H 8 9 #include <linux/tracepoint.h> 10 11 DECLARE_EVENT_CLASS(vmbus_hdr_msg, 12 TP_PROTO(const struct vmbus_channel_message_header *hdr), 13 TP_ARGS(hdr), 14 TP_STRUCT__entry(__field(unsigned int, msgtype)), 15 TP_fast_assign(__entry->msgtype = hdr->msgtype;), 16 TP_printk("msgtype=%u", __entry->msgtype) 17 ); 18 19 DEFINE_EVENT(vmbus_hdr_msg, vmbus_on_msg_dpc, 20 TP_PROTO(const struct vmbus_channel_message_header *hdr), 21 TP_ARGS(hdr) 22 ); 23 24 DEFINE_EVENT(vmbus_hdr_msg, vmbus_on_message, 25 TP_PROTO(const struct vmbus_channel_message_header *hdr), 26 TP_ARGS(hdr) 27 ); 28 29 TRACE_EVENT(vmbus_onoffer, 30 TP_PROTO(const struct vmbus_channel_offer_channel *offer), 31 TP_ARGS(offer), 32 TP_STRUCT__entry( 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) 40 __field(u16, mmio_mb) 41 __field(u16, sub_idx) 42 ), 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; 52 ), 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, 60 __entry->sub_idx 61 ) 62 ); 63 64 TRACE_EVENT(vmbus_onoffer_rescind, 65 TP_PROTO(const struct vmbus_channel_rescind_offer *offer), 66 TP_ARGS(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) 70 ); 71 72 TRACE_EVENT(vmbus_onopen_result, 73 TP_PROTO(const struct vmbus_channel_open_result *result), 74 TP_ARGS(result), 75 TP_STRUCT__entry( 76 __field(u32, child_relid) 77 __field(u32, openid) 78 __field(u32, status) 79 ), 80 TP_fast_assign(__entry->child_relid = result->child_relid; 81 __entry->openid = result->openid; 82 __entry->status = result->status; 83 ), 84 TP_printk("child_relid 0x%x, openid %d, status %d", 85 __entry->child_relid, __entry->openid, __entry->status 86 ) 87 ); 88 89 TRACE_EVENT(vmbus_ongpadl_created, 90 TP_PROTO(const struct vmbus_channel_gpadl_created *gpadlcreated), 91 TP_ARGS(gpadlcreated), 92 TP_STRUCT__entry( 93 __field(u32, child_relid) 94 __field(u32, gpadl) 95 __field(u32, status) 96 ), 97 TP_fast_assign(__entry->child_relid = gpadlcreated->child_relid; 98 __entry->gpadl = gpadlcreated->gpadl; 99 __entry->status = gpadlcreated->creation_status; 100 ), 101 TP_printk("child_relid 0x%x, gpadl 0x%x, creation_status %d", 102 __entry->child_relid, __entry->gpadl, __entry->status 103 ) 104 ); 105 106 TRACE_EVENT(vmbus_onmodifychannel_response, 107 TP_PROTO(const struct vmbus_channel_modifychannel_response *response), 108 TP_ARGS(response), 109 TP_STRUCT__entry( 110 __field(u32, child_relid) 111 __field(u32, status) 112 ), 113 TP_fast_assign(__entry->child_relid = response->child_relid; 114 __entry->status = response->status; 115 ), 116 TP_printk("child_relid 0x%x, status %d", 117 __entry->child_relid, __entry->status 118 ) 119 ); 120 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) 127 ); 128 129 TRACE_EVENT(vmbus_onversion_response, 130 TP_PROTO(const struct vmbus_channel_version_response *response), 131 TP_ARGS(response), 132 TP_STRUCT__entry( 133 __field(u8, ver) 134 ), 135 TP_fast_assign(__entry->ver = response->version_supported; 136 ), 137 TP_printk("version_supported %d", __entry->ver) 138 ); 139 140 TRACE_EVENT(vmbus_request_offers, 141 TP_PROTO(int ret), 142 TP_ARGS(ret), 143 TP_STRUCT__entry(__field(int, ret)), 144 TP_fast_assign(__entry->ret = ret), 145 TP_printk("sending ret %d", __entry->ret) 146 ); 147 148 TRACE_EVENT(vmbus_open, 149 TP_PROTO(const struct vmbus_channel_open_channel *msg, int ret), 150 TP_ARGS(msg, ret), 151 TP_STRUCT__entry( 152 __field(u32, child_relid) 153 __field(u32, openid) 154 __field(u32, gpadlhandle) 155 __field(u32, target_vp) 156 __field(u32, offset) 157 __field(int, ret) 158 ), 159 TP_fast_assign( 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; 165 __entry->ret = ret; 166 ), 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 172 ) 173 ); 174 175 TRACE_EVENT(vmbus_close_internal, 176 TP_PROTO(const struct vmbus_channel_close_channel *msg, int ret), 177 TP_ARGS(msg, ret), 178 TP_STRUCT__entry( 179 __field(u32, child_relid) 180 __field(int, ret) 181 ), 182 TP_fast_assign( 183 __entry->child_relid = msg->child_relid; 184 __entry->ret = ret; 185 ), 186 TP_printk("sending child_relid 0x%x, ret %d", __entry->child_relid, 187 __entry->ret) 188 ); 189 190 TRACE_EVENT(vmbus_establish_gpadl_header, 191 TP_PROTO(const struct vmbus_channel_gpadl_header *msg, int ret), 192 TP_ARGS(msg, ret), 193 TP_STRUCT__entry( 194 __field(u32, child_relid) 195 __field(u32, gpadl) 196 __field(u16, range_buflen) 197 __field(u16, rangecount) 198 __field(int, ret) 199 ), 200 TP_fast_assign( 201 __entry->child_relid = msg->child_relid; 202 __entry->gpadl = msg->gpadl; 203 __entry->range_buflen = msg->range_buflen; 204 __entry->rangecount = msg->rangecount; 205 __entry->ret = ret; 206 ), 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 211 ) 212 ); 213 214 TRACE_EVENT(vmbus_establish_gpadl_body, 215 TP_PROTO(const struct vmbus_channel_gpadl_body *msg, int ret), 216 TP_ARGS(msg, ret), 217 TP_STRUCT__entry( 218 __field(u32, msgnumber) 219 __field(u32, gpadl) 220 __field(int, ret) 221 ), 222 TP_fast_assign( 223 __entry->msgnumber = msg->msgnumber; 224 __entry->gpadl = msg->gpadl; 225 __entry->ret = ret; 226 ), 227 TP_printk("sending msgnumber %d, gpadl 0x%x, ret %d", 228 __entry->msgnumber, __entry->gpadl, __entry->ret 229 ) 230 ); 231 232 TRACE_EVENT(vmbus_teardown_gpadl, 233 TP_PROTO(const struct vmbus_channel_gpadl_teardown *msg, int ret), 234 TP_ARGS(msg, ret), 235 TP_STRUCT__entry( 236 __field(u32, child_relid) 237 __field(u32, gpadl) 238 __field(int, ret) 239 ), 240 TP_fast_assign( 241 __entry->child_relid = msg->child_relid; 242 __entry->gpadl = msg->gpadl; 243 __entry->ret = ret; 244 ), 245 TP_printk("sending child_relid 0x%x, gpadl 0x%x, ret %d", 246 __entry->child_relid, __entry->gpadl, __entry->ret 247 ) 248 ); 249 250 TRACE_EVENT(vmbus_negotiate_version, 251 TP_PROTO(const struct vmbus_channel_initiate_contact *msg, int ret), 252 TP_ARGS(msg, ret), 253 TP_STRUCT__entry( 254 __field(u32, ver) 255 __field(u32, target_vcpu) 256 __field(int, ret) 257 __field(u64, int_page) 258 __field(u64, mon_page1) 259 __field(u64, mon_page2) 260 ), 261 TP_fast_assign( 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; 267 __entry->ret = ret; 268 ), 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 273 ) 274 ); 275 276 TRACE_EVENT(vmbus_release_relid, 277 TP_PROTO(const struct vmbus_channel_relid_released *msg, int ret), 278 TP_ARGS(msg, ret), 279 TP_STRUCT__entry( 280 __field(u32, child_relid) 281 __field(int, ret) 282 ), 283 TP_fast_assign( 284 __entry->child_relid = msg->child_relid; 285 __entry->ret = ret; 286 ), 287 TP_printk("sending child_relid 0x%x, ret %d", 288 __entry->child_relid, __entry->ret 289 ) 290 ); 291 292 TRACE_EVENT(vmbus_send_tl_connect_request, 293 TP_PROTO(const struct vmbus_channel_tl_connect_request *msg, 294 int ret), 295 TP_ARGS(msg, ret), 296 TP_STRUCT__entry( 297 __array(char, guest_id, 16) 298 __array(char, host_id, 16) 299 __field(int, ret) 300 ), 301 TP_fast_assign( 302 export_guid(__entry->guest_id, &msg->guest_endpoint_id); 303 export_guid(__entry->host_id, &msg->host_service_id); 304 __entry->ret = ret; 305 ), 306 TP_printk("sending guest_endpoint_id %pUl, host_service_id %pUl, " 307 "ret %d", 308 __entry->guest_id, __entry->host_id, __entry->ret 309 ) 310 ); 311 312 TRACE_EVENT(vmbus_send_modifychannel, 313 TP_PROTO(const struct vmbus_channel_modifychannel *msg, 314 int ret), 315 TP_ARGS(msg, ret), 316 TP_STRUCT__entry( 317 __field(u32, child_relid) 318 __field(u32, target_vp) 319 __field(int, ret) 320 ), 321 TP_fast_assign( 322 __entry->child_relid = msg->child_relid; 323 __entry->target_vp = msg->target_vp; 324 __entry->ret = ret; 325 ), 326 TP_printk("binding child_relid 0x%x to target_vp 0x%x, ret %d", 327 __entry->child_relid, __entry->target_vp, __entry->ret 328 ) 329 ); 330 331 DECLARE_EVENT_CLASS(vmbus_channel, 332 TP_PROTO(const struct vmbus_channel *channel), 333 TP_ARGS(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) 337 ); 338 339 DEFINE_EVENT(vmbus_channel, vmbus_chan_sched, 340 TP_PROTO(const struct vmbus_channel *channel), 341 TP_ARGS(channel) 342 ); 343 344 DEFINE_EVENT(vmbus_channel, vmbus_setevent, 345 TP_PROTO(const struct vmbus_channel *channel), 346 TP_ARGS(channel) 347 ); 348 349 DEFINE_EVENT(vmbus_channel, vmbus_on_event, 350 TP_PROTO(const struct vmbus_channel *channel), 351 TP_ARGS(channel) 352 ); 353 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 */ 359 360 /* This part must be outside protection */ 361 #include <trace/define_trace.h> 362