cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

hv_trace.h (11178B)


      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
     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_idx
     61		    )
     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->status
     86		    )
     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->status
    103		    )
    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->status
    118		    )
    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->ret
    172		    )
    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->ret
    211		    )
    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->ret
    229		    )
    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->ret
    247		    )
    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->ret
    273		    )
    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->ret
    289		    )
    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->ret
    309		    )
    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->ret
    328		    )
    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_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>