0001
0002
0003 #undef TRACE_SYSTEM
0004 #define TRACE_SYSTEM hyperv
0005
0006 #if !defined(_HV_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
0007 #define _HV_TRACE_H
0008
0009 #include <linux/tracepoint.h>
0010
0011 DECLARE_EVENT_CLASS(vmbus_hdr_msg,
0012 TP_PROTO(const struct vmbus_channel_message_header *hdr),
0013 TP_ARGS(hdr),
0014 TP_STRUCT__entry(__field(unsigned int, msgtype)),
0015 TP_fast_assign(__entry->msgtype = hdr->msgtype;),
0016 TP_printk("msgtype=%u", __entry->msgtype)
0017 );
0018
0019 DEFINE_EVENT(vmbus_hdr_msg, vmbus_on_msg_dpc,
0020 TP_PROTO(const struct vmbus_channel_message_header *hdr),
0021 TP_ARGS(hdr)
0022 );
0023
0024 DEFINE_EVENT(vmbus_hdr_msg, vmbus_on_message,
0025 TP_PROTO(const struct vmbus_channel_message_header *hdr),
0026 TP_ARGS(hdr)
0027 );
0028
0029 TRACE_EVENT(vmbus_onoffer,
0030 TP_PROTO(const struct vmbus_channel_offer_channel *offer),
0031 TP_ARGS(offer),
0032 TP_STRUCT__entry(
0033 __field(u32, child_relid)
0034 __field(u8, monitorid)
0035 __field(u16, is_ddc_int)
0036 __field(u32, connection_id)
0037 __array(char, if_type, 16)
0038 __array(char, if_instance, 16)
0039 __field(u16, chn_flags)
0040 __field(u16, mmio_mb)
0041 __field(u16, sub_idx)
0042 ),
0043 TP_fast_assign(__entry->child_relid = offer->child_relid;
0044 __entry->monitorid = offer->monitorid;
0045 __entry->is_ddc_int = offer->is_dedicated_interrupt;
0046 __entry->connection_id = offer->connection_id;
0047 export_guid(__entry->if_type, &offer->offer.if_type);
0048 export_guid(__entry->if_instance, &offer->offer.if_instance);
0049 __entry->chn_flags = offer->offer.chn_flags;
0050 __entry->mmio_mb = offer->offer.mmio_megabytes;
0051 __entry->sub_idx = offer->offer.sub_channel_index;
0052 ),
0053 TP_printk("child_relid 0x%x, monitorid 0x%x, is_dedicated %d, "
0054 "connection_id 0x%x, if_type %pUl, if_instance %pUl, "
0055 "chn_flags 0x%x, mmio_megabytes %d, sub_channel_index %d",
0056 __entry->child_relid, __entry->monitorid,
0057 __entry->is_ddc_int, __entry->connection_id,
0058 __entry->if_type, __entry->if_instance,
0059 __entry->chn_flags, __entry->mmio_mb,
0060 __entry->sub_idx
0061 )
0062 );
0063
0064 TRACE_EVENT(vmbus_onoffer_rescind,
0065 TP_PROTO(const struct vmbus_channel_rescind_offer *offer),
0066 TP_ARGS(offer),
0067 TP_STRUCT__entry(__field(u32, child_relid)),
0068 TP_fast_assign(__entry->child_relid = offer->child_relid),
0069 TP_printk("child_relid 0x%x", __entry->child_relid)
0070 );
0071
0072 TRACE_EVENT(vmbus_onopen_result,
0073 TP_PROTO(const struct vmbus_channel_open_result *result),
0074 TP_ARGS(result),
0075 TP_STRUCT__entry(
0076 __field(u32, child_relid)
0077 __field(u32, openid)
0078 __field(u32, status)
0079 ),
0080 TP_fast_assign(__entry->child_relid = result->child_relid;
0081 __entry->openid = result->openid;
0082 __entry->status = result->status;
0083 ),
0084 TP_printk("child_relid 0x%x, openid %d, status %d",
0085 __entry->child_relid, __entry->openid, __entry->status
0086 )
0087 );
0088
0089 TRACE_EVENT(vmbus_ongpadl_created,
0090 TP_PROTO(const struct vmbus_channel_gpadl_created *gpadlcreated),
0091 TP_ARGS(gpadlcreated),
0092 TP_STRUCT__entry(
0093 __field(u32, child_relid)
0094 __field(u32, gpadl)
0095 __field(u32, status)
0096 ),
0097 TP_fast_assign(__entry->child_relid = gpadlcreated->child_relid;
0098 __entry->gpadl = gpadlcreated->gpadl;
0099 __entry->status = gpadlcreated->creation_status;
0100 ),
0101 TP_printk("child_relid 0x%x, gpadl 0x%x, creation_status %d",
0102 __entry->child_relid, __entry->gpadl, __entry->status
0103 )
0104 );
0105
0106 TRACE_EVENT(vmbus_onmodifychannel_response,
0107 TP_PROTO(const struct vmbus_channel_modifychannel_response *response),
0108 TP_ARGS(response),
0109 TP_STRUCT__entry(
0110 __field(u32, child_relid)
0111 __field(u32, status)
0112 ),
0113 TP_fast_assign(__entry->child_relid = response->child_relid;
0114 __entry->status = response->status;
0115 ),
0116 TP_printk("child_relid 0x%x, status %d",
0117 __entry->child_relid, __entry->status
0118 )
0119 );
0120
0121 TRACE_EVENT(vmbus_ongpadl_torndown,
0122 TP_PROTO(const struct vmbus_channel_gpadl_torndown *gpadltorndown),
0123 TP_ARGS(gpadltorndown),
0124 TP_STRUCT__entry(__field(u32, gpadl)),
0125 TP_fast_assign(__entry->gpadl = gpadltorndown->gpadl),
0126 TP_printk("gpadl 0x%x", __entry->gpadl)
0127 );
0128
0129 TRACE_EVENT(vmbus_onversion_response,
0130 TP_PROTO(const struct vmbus_channel_version_response *response),
0131 TP_ARGS(response),
0132 TP_STRUCT__entry(
0133 __field(u8, ver)
0134 ),
0135 TP_fast_assign(__entry->ver = response->version_supported;
0136 ),
0137 TP_printk("version_supported %d", __entry->ver)
0138 );
0139
0140 TRACE_EVENT(vmbus_request_offers,
0141 TP_PROTO(int ret),
0142 TP_ARGS(ret),
0143 TP_STRUCT__entry(__field(int, ret)),
0144 TP_fast_assign(__entry->ret = ret),
0145 TP_printk("sending ret %d", __entry->ret)
0146 );
0147
0148 TRACE_EVENT(vmbus_open,
0149 TP_PROTO(const struct vmbus_channel_open_channel *msg, int ret),
0150 TP_ARGS(msg, ret),
0151 TP_STRUCT__entry(
0152 __field(u32, child_relid)
0153 __field(u32, openid)
0154 __field(u32, gpadlhandle)
0155 __field(u32, target_vp)
0156 __field(u32, offset)
0157 __field(int, ret)
0158 ),
0159 TP_fast_assign(
0160 __entry->child_relid = msg->child_relid;
0161 __entry->openid = msg->openid;
0162 __entry->gpadlhandle = msg->ringbuffer_gpadlhandle;
0163 __entry->target_vp = msg->target_vp;
0164 __entry->offset = msg->downstream_ringbuffer_pageoffset;
0165 __entry->ret = ret;
0166 ),
0167 TP_printk("sending child_relid 0x%x, openid %d, "
0168 "gpadlhandle 0x%x, target_vp 0x%x, offset 0x%x, ret %d",
0169 __entry->child_relid, __entry->openid,
0170 __entry->gpadlhandle, __entry->target_vp,
0171 __entry->offset, __entry->ret
0172 )
0173 );
0174
0175 TRACE_EVENT(vmbus_close_internal,
0176 TP_PROTO(const struct vmbus_channel_close_channel *msg, int ret),
0177 TP_ARGS(msg, ret),
0178 TP_STRUCT__entry(
0179 __field(u32, child_relid)
0180 __field(int, ret)
0181 ),
0182 TP_fast_assign(
0183 __entry->child_relid = msg->child_relid;
0184 __entry->ret = ret;
0185 ),
0186 TP_printk("sending child_relid 0x%x, ret %d", __entry->child_relid,
0187 __entry->ret)
0188 );
0189
0190 TRACE_EVENT(vmbus_establish_gpadl_header,
0191 TP_PROTO(const struct vmbus_channel_gpadl_header *msg, int ret),
0192 TP_ARGS(msg, ret),
0193 TP_STRUCT__entry(
0194 __field(u32, child_relid)
0195 __field(u32, gpadl)
0196 __field(u16, range_buflen)
0197 __field(u16, rangecount)
0198 __field(int, ret)
0199 ),
0200 TP_fast_assign(
0201 __entry->child_relid = msg->child_relid;
0202 __entry->gpadl = msg->gpadl;
0203 __entry->range_buflen = msg->range_buflen;
0204 __entry->rangecount = msg->rangecount;
0205 __entry->ret = ret;
0206 ),
0207 TP_printk("sending child_relid 0x%x, gpadl 0x%x, range_buflen %d "
0208 "rangecount %d, ret %d",
0209 __entry->child_relid, __entry->gpadl,
0210 __entry->range_buflen, __entry->rangecount, __entry->ret
0211 )
0212 );
0213
0214 TRACE_EVENT(vmbus_establish_gpadl_body,
0215 TP_PROTO(const struct vmbus_channel_gpadl_body *msg, int ret),
0216 TP_ARGS(msg, ret),
0217 TP_STRUCT__entry(
0218 __field(u32, msgnumber)
0219 __field(u32, gpadl)
0220 __field(int, ret)
0221 ),
0222 TP_fast_assign(
0223 __entry->msgnumber = msg->msgnumber;
0224 __entry->gpadl = msg->gpadl;
0225 __entry->ret = ret;
0226 ),
0227 TP_printk("sending msgnumber %d, gpadl 0x%x, ret %d",
0228 __entry->msgnumber, __entry->gpadl, __entry->ret
0229 )
0230 );
0231
0232 TRACE_EVENT(vmbus_teardown_gpadl,
0233 TP_PROTO(const struct vmbus_channel_gpadl_teardown *msg, int ret),
0234 TP_ARGS(msg, ret),
0235 TP_STRUCT__entry(
0236 __field(u32, child_relid)
0237 __field(u32, gpadl)
0238 __field(int, ret)
0239 ),
0240 TP_fast_assign(
0241 __entry->child_relid = msg->child_relid;
0242 __entry->gpadl = msg->gpadl;
0243 __entry->ret = ret;
0244 ),
0245 TP_printk("sending child_relid 0x%x, gpadl 0x%x, ret %d",
0246 __entry->child_relid, __entry->gpadl, __entry->ret
0247 )
0248 );
0249
0250 TRACE_EVENT(vmbus_negotiate_version,
0251 TP_PROTO(const struct vmbus_channel_initiate_contact *msg, int ret),
0252 TP_ARGS(msg, ret),
0253 TP_STRUCT__entry(
0254 __field(u32, ver)
0255 __field(u32, target_vcpu)
0256 __field(int, ret)
0257 __field(u64, int_page)
0258 __field(u64, mon_page1)
0259 __field(u64, mon_page2)
0260 ),
0261 TP_fast_assign(
0262 __entry->ver = msg->vmbus_version_requested;
0263 __entry->target_vcpu = msg->target_vcpu;
0264 __entry->int_page = msg->interrupt_page;
0265 __entry->mon_page1 = msg->monitor_page1;
0266 __entry->mon_page2 = msg->monitor_page2;
0267 __entry->ret = ret;
0268 ),
0269 TP_printk("sending vmbus_version_requested %d, target_vcpu 0x%x, "
0270 "pages %llx:%llx:%llx, ret %d",
0271 __entry->ver, __entry->target_vcpu, __entry->int_page,
0272 __entry->mon_page1, __entry->mon_page2, __entry->ret
0273 )
0274 );
0275
0276 TRACE_EVENT(vmbus_release_relid,
0277 TP_PROTO(const struct vmbus_channel_relid_released *msg, int ret),
0278 TP_ARGS(msg, ret),
0279 TP_STRUCT__entry(
0280 __field(u32, child_relid)
0281 __field(int, ret)
0282 ),
0283 TP_fast_assign(
0284 __entry->child_relid = msg->child_relid;
0285 __entry->ret = ret;
0286 ),
0287 TP_printk("sending child_relid 0x%x, ret %d",
0288 __entry->child_relid, __entry->ret
0289 )
0290 );
0291
0292 TRACE_EVENT(vmbus_send_tl_connect_request,
0293 TP_PROTO(const struct vmbus_channel_tl_connect_request *msg,
0294 int ret),
0295 TP_ARGS(msg, ret),
0296 TP_STRUCT__entry(
0297 __array(char, guest_id, 16)
0298 __array(char, host_id, 16)
0299 __field(int, ret)
0300 ),
0301 TP_fast_assign(
0302 export_guid(__entry->guest_id, &msg->guest_endpoint_id);
0303 export_guid(__entry->host_id, &msg->host_service_id);
0304 __entry->ret = ret;
0305 ),
0306 TP_printk("sending guest_endpoint_id %pUl, host_service_id %pUl, "
0307 "ret %d",
0308 __entry->guest_id, __entry->host_id, __entry->ret
0309 )
0310 );
0311
0312 TRACE_EVENT(vmbus_send_modifychannel,
0313 TP_PROTO(const struct vmbus_channel_modifychannel *msg,
0314 int ret),
0315 TP_ARGS(msg, ret),
0316 TP_STRUCT__entry(
0317 __field(u32, child_relid)
0318 __field(u32, target_vp)
0319 __field(int, ret)
0320 ),
0321 TP_fast_assign(
0322 __entry->child_relid = msg->child_relid;
0323 __entry->target_vp = msg->target_vp;
0324 __entry->ret = ret;
0325 ),
0326 TP_printk("binding child_relid 0x%x to target_vp 0x%x, ret %d",
0327 __entry->child_relid, __entry->target_vp, __entry->ret
0328 )
0329 );
0330
0331 DECLARE_EVENT_CLASS(vmbus_channel,
0332 TP_PROTO(const struct vmbus_channel *channel),
0333 TP_ARGS(channel),
0334 TP_STRUCT__entry(__field(u32, relid)),
0335 TP_fast_assign(__entry->relid = channel->offermsg.child_relid),
0336 TP_printk("relid 0x%x", __entry->relid)
0337 );
0338
0339 DEFINE_EVENT(vmbus_channel, vmbus_chan_sched,
0340 TP_PROTO(const struct vmbus_channel *channel),
0341 TP_ARGS(channel)
0342 );
0343
0344 DEFINE_EVENT(vmbus_channel, vmbus_setevent,
0345 TP_PROTO(const struct vmbus_channel *channel),
0346 TP_ARGS(channel)
0347 );
0348
0349 DEFINE_EVENT(vmbus_channel, vmbus_on_event,
0350 TP_PROTO(const struct vmbus_channel *channel),
0351 TP_ARGS(channel)
0352 );
0353
0354 #undef TRACE_INCLUDE_PATH
0355 #define TRACE_INCLUDE_PATH .
0356 #undef TRACE_INCLUDE_FILE
0357 #define TRACE_INCLUDE_FILE hv_trace
0358 #endif
0359
0360
0361 #include <trace/define_trace.h>