362 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2 3#undef TRACE_SYSTEM4#define TRACE_SYSTEM hyperv5 6#if !defined(_HV_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)7#define _HV_TRACE_H8 9#include <linux/tracepoint.h>10 11DECLARE_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 19DEFINE_EVENT(vmbus_hdr_msg, vmbus_on_msg_dpc,20 TP_PROTO(const struct vmbus_channel_message_header *hdr),21 TP_ARGS(hdr)22);23 24DEFINE_EVENT(vmbus_hdr_msg, vmbus_on_message,25 TP_PROTO(const struct vmbus_channel_message_header *hdr),26 TP_ARGS(hdr)27);28 29TRACE_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_idx61 )62 );63 64TRACE_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 72TRACE_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->status86 )87 );88 89TRACE_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->status103 )104 );105 106TRACE_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->status118 )119 );120 121TRACE_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 129TRACE_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 140TRACE_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 148TRACE_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->ret172 )173 );174 175TRACE_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 190TRACE_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->ret211 )212 );213 214TRACE_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->ret229 )230 );231 232TRACE_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->ret247 )248 );249 250TRACE_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->ret273 )274 );275 276TRACE_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->ret289 )290 );291 292TRACE_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->ret309 )310 );311 312TRACE_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->ret328 )329 );330 331DECLARE_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 339DEFINE_EVENT(vmbus_channel, vmbus_chan_sched,340 TP_PROTO(const struct vmbus_channel *channel),341 TP_ARGS(channel)342);343 344DEFINE_EVENT(vmbus_channel, vmbus_setevent,345 TP_PROTO(const struct vmbus_channel *channel),346 TP_ARGS(channel)347);348 349DEFINE_EVENT(vmbus_channel, vmbus_on_event,350 TP_PROTO(const struct vmbus_channel *channel),351 TP_ARGS(channel)352);353 354#undef TRACE_INCLUDE_PATH355#define TRACE_INCLUDE_PATH .356#undef TRACE_INCLUDE_FILE357#define TRACE_INCLUDE_FILE hv_trace358#endif /* _HV_TRACE_H */359 360/* This part must be outside protection */361#include <trace/define_trace.h>362