xref: /linux/drivers/hv/mshv_trace.h (revision 8fd12b03c7c888303c3c45559d8c3e270a916f9f)
180acc80eSStanislav Kinsburskii /* SPDX-License-Identifier: GPL-2.0-only */
280acc80eSStanislav Kinsburskii /*
380acc80eSStanislav Kinsburskii  * Copyright (c) 2026, Microsoft Corporation.
480acc80eSStanislav Kinsburskii  *
580acc80eSStanislav Kinsburskii  * Tracepoint declarations for mshv driver.
680acc80eSStanislav Kinsburskii  */
780acc80eSStanislav Kinsburskii 
880acc80eSStanislav Kinsburskii #undef TRACE_SYSTEM
980acc80eSStanislav Kinsburskii #define TRACE_SYSTEM mshv
1080acc80eSStanislav Kinsburskii 
1180acc80eSStanislav Kinsburskii #if !defined(__MSHV_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
1280acc80eSStanislav Kinsburskii #define _MSHV_TRACE_H_
1380acc80eSStanislav Kinsburskii 
1480acc80eSStanislav Kinsburskii #include <linux/tracepoint.h>
15*cfc42685SStanislav Kinsburskii #include <hyperv/hvhdk.h>
1680acc80eSStanislav Kinsburskii 
1780acc80eSStanislav Kinsburskii #undef TRACE_INCLUDE_PATH
1880acc80eSStanislav Kinsburskii #define TRACE_INCLUDE_PATH ../../drivers/hv
1980acc80eSStanislav Kinsburskii 
2080acc80eSStanislav Kinsburskii #undef TRACE_INCLUDE_FILE
2180acc80eSStanislav Kinsburskii #define TRACE_INCLUDE_FILE mshv_trace
2280acc80eSStanislav Kinsburskii 
2380acc80eSStanislav Kinsburskii TRACE_EVENT(mshv_create_partition,
2480acc80eSStanislav Kinsburskii 	    TP_PROTO(u64 partition_id, int vm_fd),
2580acc80eSStanislav Kinsburskii 	    TP_ARGS(partition_id, vm_fd),
2680acc80eSStanislav Kinsburskii 	    TP_STRUCT__entry(
2780acc80eSStanislav Kinsburskii 		    __field(u64, partition_id)
2880acc80eSStanislav Kinsburskii 		    __field(int, vm_fd)
2980acc80eSStanislav Kinsburskii 	    ),
3080acc80eSStanislav Kinsburskii 	    TP_fast_assign(
3180acc80eSStanislav Kinsburskii 		    __entry->partition_id = partition_id;
3280acc80eSStanislav Kinsburskii 		    __entry->vm_fd = vm_fd;
3380acc80eSStanislav Kinsburskii 	    ),
3480acc80eSStanislav Kinsburskii 	    TP_printk("partition_id=%llu vm_fd=%d",
3580acc80eSStanislav Kinsburskii 		    __entry->partition_id,
3680acc80eSStanislav Kinsburskii 		    __entry->vm_fd
3780acc80eSStanislav Kinsburskii 	    )
3880acc80eSStanislav Kinsburskii );
3980acc80eSStanislav Kinsburskii 
4080acc80eSStanislav Kinsburskii TRACE_EVENT(mshv_hvcall_create_partition,
4180acc80eSStanislav Kinsburskii 	    TP_PROTO(u64 flags, s64 partition_id),
4280acc80eSStanislav Kinsburskii 	    TP_ARGS(flags, partition_id),
4380acc80eSStanislav Kinsburskii 	    TP_STRUCT__entry(
4480acc80eSStanislav Kinsburskii 		    __field(u64, flags)
4580acc80eSStanislav Kinsburskii 		    __field(s64, partition_id)
4680acc80eSStanislav Kinsburskii 	    ),
4780acc80eSStanislav Kinsburskii 	    TP_fast_assign(
4880acc80eSStanislav Kinsburskii 		    __entry->flags = flags;
4980acc80eSStanislav Kinsburskii 		    __entry->partition_id = partition_id;
5080acc80eSStanislav Kinsburskii 	    ),
5180acc80eSStanislav Kinsburskii 	    TP_printk("flags=%#llx partition_id=%lld",
5280acc80eSStanislav Kinsburskii 		    __entry->flags,
5380acc80eSStanislav Kinsburskii 		    __entry->partition_id
5480acc80eSStanislav Kinsburskii 	    )
5580acc80eSStanislav Kinsburskii );
5680acc80eSStanislav Kinsburskii 
5780acc80eSStanislav Kinsburskii TRACE_EVENT(mshv_hvcall_initialize_partition,
5880acc80eSStanislav Kinsburskii 	    TP_PROTO(u64 partition_id, u64 status),
5980acc80eSStanislav Kinsburskii 	    TP_ARGS(partition_id, status),
6080acc80eSStanislav Kinsburskii 	    TP_STRUCT__entry(
6180acc80eSStanislav Kinsburskii 		    __field(u64, partition_id)
6280acc80eSStanislav Kinsburskii 		    __field(u64, status)
6380acc80eSStanislav Kinsburskii 	    ),
6480acc80eSStanislav Kinsburskii 	    TP_fast_assign(
6580acc80eSStanislav Kinsburskii 		    __entry->partition_id = partition_id;
6680acc80eSStanislav Kinsburskii 		    __entry->status = status;
6780acc80eSStanislav Kinsburskii 	    ),
6880acc80eSStanislav Kinsburskii 	    TP_printk("partition_id=%llu status=%#llx",
6980acc80eSStanislav Kinsburskii 		    __entry->partition_id,
7080acc80eSStanislav Kinsburskii 		    __entry->status
7180acc80eSStanislav Kinsburskii 	    )
7280acc80eSStanislav Kinsburskii );
7380acc80eSStanislav Kinsburskii 
7480acc80eSStanislav Kinsburskii TRACE_EVENT(mshv_partition_release,
7580acc80eSStanislav Kinsburskii 	    TP_PROTO(u64 partition_id),
7680acc80eSStanislav Kinsburskii 	    TP_ARGS(partition_id),
7780acc80eSStanislav Kinsburskii 	    TP_STRUCT__entry(
7880acc80eSStanislav Kinsburskii 		    __field(u64, partition_id)
7980acc80eSStanislav Kinsburskii 	    ),
8080acc80eSStanislav Kinsburskii 	    TP_fast_assign(
8180acc80eSStanislav Kinsburskii 		    __entry->partition_id = partition_id;
8280acc80eSStanislav Kinsburskii 	    ),
8380acc80eSStanislav Kinsburskii 	    TP_printk("partition_id=%llu",
8480acc80eSStanislav Kinsburskii 		    __entry->partition_id
8580acc80eSStanislav Kinsburskii 	    )
8680acc80eSStanislav Kinsburskii );
8780acc80eSStanislav Kinsburskii 
8880acc80eSStanislav Kinsburskii TRACE_EVENT(mshv_destroy_partition,
8980acc80eSStanislav Kinsburskii 	    TP_PROTO(u64 partition_id),
9080acc80eSStanislav Kinsburskii 	    TP_ARGS(partition_id),
9180acc80eSStanislav Kinsburskii 	    TP_STRUCT__entry(
9280acc80eSStanislav Kinsburskii 		    __field(u64, partition_id)
9380acc80eSStanislav Kinsburskii 	    ),
9480acc80eSStanislav Kinsburskii 	    TP_fast_assign(
9580acc80eSStanislav Kinsburskii 		    __entry->partition_id = partition_id;
9680acc80eSStanislav Kinsburskii 	    ),
9780acc80eSStanislav Kinsburskii 	    TP_printk("partition_id=%llu",
9880acc80eSStanislav Kinsburskii 		    __entry->partition_id
9980acc80eSStanislav Kinsburskii 	    )
10080acc80eSStanislav Kinsburskii );
10180acc80eSStanislav Kinsburskii 
10280acc80eSStanislav Kinsburskii TRACE_EVENT(mshv_hvcall_finalize_partition,
10380acc80eSStanislav Kinsburskii 	    TP_PROTO(u64 partition_id, u64 status),
10480acc80eSStanislav Kinsburskii 	    TP_ARGS(partition_id, status),
10580acc80eSStanislav Kinsburskii 	    TP_STRUCT__entry(
10680acc80eSStanislav Kinsburskii 		    __field(u64, partition_id)
10780acc80eSStanislav Kinsburskii 		    __field(u64, status)
10880acc80eSStanislav Kinsburskii 	    ),
10980acc80eSStanislav Kinsburskii 	    TP_fast_assign(
11080acc80eSStanislav Kinsburskii 		    __entry->partition_id = partition_id;
11180acc80eSStanislav Kinsburskii 		    __entry->status = status;
11280acc80eSStanislav Kinsburskii 	    ),
11380acc80eSStanislav Kinsburskii 	    TP_printk("partition_id=%llu status=%#llx ",
11480acc80eSStanislav Kinsburskii 		    __entry->partition_id,
11580acc80eSStanislav Kinsburskii 		    __entry->status
11680acc80eSStanislav Kinsburskii 	    )
11780acc80eSStanislav Kinsburskii );
11880acc80eSStanislav Kinsburskii 
11980acc80eSStanislav Kinsburskii TRACE_EVENT(mshv_hvcall_withdraw_memory,
12080acc80eSStanislav Kinsburskii 	    TP_PROTO(u64 partition_id, u64 withdrawn, u64 status),
12180acc80eSStanislav Kinsburskii 	    TP_ARGS(partition_id, withdrawn, status),
12280acc80eSStanislav Kinsburskii 	    TP_STRUCT__entry(
12380acc80eSStanislav Kinsburskii 		    __field(u64, partition_id)
12480acc80eSStanislav Kinsburskii 		    __field(u64, withdrawn)
12580acc80eSStanislav Kinsburskii 		    __field(u64, status)
12680acc80eSStanislav Kinsburskii 	    ),
12780acc80eSStanislav Kinsburskii 	    TP_fast_assign(
12880acc80eSStanislav Kinsburskii 		    __entry->partition_id = partition_id;
12980acc80eSStanislav Kinsburskii 		    __entry->withdrawn = withdrawn;
13080acc80eSStanislav Kinsburskii 		    __entry->status = status;
13180acc80eSStanislav Kinsburskii 	    ),
13280acc80eSStanislav Kinsburskii 	    TP_printk("partition_id=%llu withdrawn=%llu status=%#llx",
13380acc80eSStanislav Kinsburskii 		    __entry->partition_id,
13480acc80eSStanislav Kinsburskii 		    __entry->withdrawn,
13580acc80eSStanislav Kinsburskii 		    __entry->status
13680acc80eSStanislav Kinsburskii 	    )
13780acc80eSStanislav Kinsburskii );
13880acc80eSStanislav Kinsburskii 
13980acc80eSStanislav Kinsburskii TRACE_EVENT(mshv_hvcall_delete_partition,
14080acc80eSStanislav Kinsburskii 	    TP_PROTO(u64 partition_id, u64 status),
14180acc80eSStanislav Kinsburskii 	    TP_ARGS(partition_id, status),
14280acc80eSStanislav Kinsburskii 	    TP_STRUCT__entry(
14380acc80eSStanislav Kinsburskii 		    __field(u64, partition_id)
14480acc80eSStanislav Kinsburskii 		    __field(u64, status)
14580acc80eSStanislav Kinsburskii 	    ),
14680acc80eSStanislav Kinsburskii 	    TP_fast_assign(
14780acc80eSStanislav Kinsburskii 		    __entry->partition_id = partition_id;
14880acc80eSStanislav Kinsburskii 		    __entry->status = status;
14980acc80eSStanislav Kinsburskii 	    ),
15080acc80eSStanislav Kinsburskii 	    TP_printk("partition_id=%llu status=%#llx",
15180acc80eSStanislav Kinsburskii 		    __entry->partition_id,
15280acc80eSStanislav Kinsburskii 		    __entry->status
15380acc80eSStanislav Kinsburskii 	    )
15480acc80eSStanislav Kinsburskii );
15580acc80eSStanislav Kinsburskii 
15680acc80eSStanislav Kinsburskii TRACE_EVENT(mshv_create_vp,
15780acc80eSStanislav Kinsburskii 	    TP_PROTO(u64 partition_id, u32 vp_index, long vp_fd),
15880acc80eSStanislav Kinsburskii 	    TP_ARGS(partition_id, vp_index, vp_fd),
15980acc80eSStanislav Kinsburskii 	    TP_STRUCT__entry(
16080acc80eSStanislav Kinsburskii 		    __field(u64, partition_id)
16180acc80eSStanislav Kinsburskii 		    __field(u32, vp_index)
16280acc80eSStanislav Kinsburskii 		    __field(long, vp_fd)
16380acc80eSStanislav Kinsburskii 	    ),
16480acc80eSStanislav Kinsburskii 	    TP_fast_assign(
16580acc80eSStanislav Kinsburskii 		    __entry->partition_id = partition_id;
16680acc80eSStanislav Kinsburskii 		    __entry->vp_index = vp_index;
16780acc80eSStanislav Kinsburskii 		    __entry->vp_fd = vp_fd;
16880acc80eSStanislav Kinsburskii 	    ),
16980acc80eSStanislav Kinsburskii 	    TP_printk("partition_id=%llu vp_index=%u vp_fd=%ld",
17080acc80eSStanislav Kinsburskii 		    __entry->partition_id,
17180acc80eSStanislav Kinsburskii 		    __entry->vp_index,
17280acc80eSStanislav Kinsburskii 		    __entry->vp_fd
17380acc80eSStanislav Kinsburskii 	    )
17480acc80eSStanislav Kinsburskii );
17580acc80eSStanislav Kinsburskii 
17680acc80eSStanislav Kinsburskii TRACE_EVENT(mshv_hvcall_map_vp_state_page,
17780acc80eSStanislav Kinsburskii 	    TP_PROTO(u64 partition_id, u32 vp_index, u32 page_type, u64 status),
17880acc80eSStanislav Kinsburskii 	    TP_ARGS(partition_id, vp_index, page_type, status),
17980acc80eSStanislav Kinsburskii 	    TP_STRUCT__entry(
18080acc80eSStanislav Kinsburskii 		    __field(u64, partition_id)
18180acc80eSStanislav Kinsburskii 		    __field(u32, vp_index)
18280acc80eSStanislav Kinsburskii 		    __field(u32, page_type)
18380acc80eSStanislav Kinsburskii 		    __field(u64, status)
18480acc80eSStanislav Kinsburskii 	    ),
18580acc80eSStanislav Kinsburskii 	    TP_fast_assign(
18680acc80eSStanislav Kinsburskii 		    __entry->partition_id = partition_id;
18780acc80eSStanislav Kinsburskii 		    __entry->vp_index = vp_index;
18880acc80eSStanislav Kinsburskii 		    __entry->page_type = page_type;
18980acc80eSStanislav Kinsburskii 		    __entry->status = status;
19080acc80eSStanislav Kinsburskii 	    ),
19180acc80eSStanislav Kinsburskii 	    TP_printk("partition_id=%llu vp_index=%u page_type=%u status=%#llx",
19280acc80eSStanislav Kinsburskii 		    __entry->partition_id,
19380acc80eSStanislav Kinsburskii 		    __entry->vp_index,
19480acc80eSStanislav Kinsburskii 		    __entry->page_type,
19580acc80eSStanislav Kinsburskii 		    __entry->status
19680acc80eSStanislav Kinsburskii 	    )
19780acc80eSStanislav Kinsburskii );
19880acc80eSStanislav Kinsburskii 
19980acc80eSStanislav Kinsburskii TRACE_EVENT(mshv_drain_vp_signals,
20080acc80eSStanislav Kinsburskii 	    TP_PROTO(u64 partition_id, u32 vp_index),
20180acc80eSStanislav Kinsburskii 	    TP_ARGS(partition_id, vp_index),
20280acc80eSStanislav Kinsburskii 	    TP_STRUCT__entry(
20380acc80eSStanislav Kinsburskii 		    __field(u64, partition_id)
20480acc80eSStanislav Kinsburskii 		    __field(u32, vp_index)
20580acc80eSStanislav Kinsburskii 	    ),
20680acc80eSStanislav Kinsburskii 	    TP_fast_assign(
20780acc80eSStanislav Kinsburskii 		    __entry->partition_id = partition_id;
20880acc80eSStanislav Kinsburskii 		    __entry->vp_index = vp_index;
20980acc80eSStanislav Kinsburskii 	    ),
21080acc80eSStanislav Kinsburskii 	    TP_printk("partition_id=%llu vp_index=%u",
21180acc80eSStanislav Kinsburskii 		    __entry->partition_id,
21280acc80eSStanislav Kinsburskii 		    __entry->vp_index
21380acc80eSStanislav Kinsburskii 	    )
21480acc80eSStanislav Kinsburskii );
21580acc80eSStanislav Kinsburskii 
21680acc80eSStanislav Kinsburskii TRACE_EVENT(mshv_disable_vp_dispatch,
21780acc80eSStanislav Kinsburskii 	    TP_PROTO(u64 partition_id, u32 vp_index, int ret),
21880acc80eSStanislav Kinsburskii 	    TP_ARGS(partition_id, vp_index, ret),
21980acc80eSStanislav Kinsburskii 	    TP_STRUCT__entry(
22080acc80eSStanislav Kinsburskii 		    __field(u64, partition_id)
22180acc80eSStanislav Kinsburskii 		    __field(u32, vp_index)
22280acc80eSStanislav Kinsburskii 		    __field(int, ret)
22380acc80eSStanislav Kinsburskii 	    ),
22480acc80eSStanislav Kinsburskii 	    TP_fast_assign(
22580acc80eSStanislav Kinsburskii 		    __entry->partition_id = partition_id;
22680acc80eSStanislav Kinsburskii 		    __entry->vp_index = vp_index;
22780acc80eSStanislav Kinsburskii 		    __entry->ret = ret;
22880acc80eSStanislav Kinsburskii 	    ),
22980acc80eSStanislav Kinsburskii 	    TP_printk("partition_id=%llu vp_index=%u ret=%d",
23080acc80eSStanislav Kinsburskii 		    __entry->partition_id,
23180acc80eSStanislav Kinsburskii 		    __entry->vp_index,
23280acc80eSStanislav Kinsburskii 		    __entry->ret
23380acc80eSStanislav Kinsburskii 	    )
23480acc80eSStanislav Kinsburskii );
23580acc80eSStanislav Kinsburskii 
23680acc80eSStanislav Kinsburskii TRACE_EVENT(mshv_vp_release,
23780acc80eSStanislav Kinsburskii 	    TP_PROTO(u64 partition_id, u32 vp_index),
23880acc80eSStanislav Kinsburskii 	    TP_ARGS(partition_id, vp_index),
23980acc80eSStanislav Kinsburskii 	    TP_STRUCT__entry(
24080acc80eSStanislav Kinsburskii 		    __field(u64, partition_id)
24180acc80eSStanislav Kinsburskii 		    __field(u32, vp_index)
24280acc80eSStanislav Kinsburskii 	    ),
24380acc80eSStanislav Kinsburskii 	    TP_fast_assign(
24480acc80eSStanislav Kinsburskii 		    __entry->partition_id = partition_id;
24580acc80eSStanislav Kinsburskii 		    __entry->vp_index = vp_index;
24680acc80eSStanislav Kinsburskii 	    ),
24780acc80eSStanislav Kinsburskii 	    TP_printk("partition_id=%llu vp_index=%u",
24880acc80eSStanislav Kinsburskii 		    __entry->partition_id,
24980acc80eSStanislav Kinsburskii 		    __entry->vp_index
25080acc80eSStanislav Kinsburskii 	    )
25180acc80eSStanislav Kinsburskii );
25280acc80eSStanislav Kinsburskii 
25380acc80eSStanislav Kinsburskii TRACE_EVENT(mshv_run_vp_entry,
25480acc80eSStanislav Kinsburskii 	    TP_PROTO(u64 partition_id, u32 vp_index),
25580acc80eSStanislav Kinsburskii 	    TP_ARGS(partition_id, vp_index),
25680acc80eSStanislav Kinsburskii 	    TP_STRUCT__entry(
25780acc80eSStanislav Kinsburskii 		    __field(u64, partition_id)
25880acc80eSStanislav Kinsburskii 		    __field(u32, vp_index)
25980acc80eSStanislav Kinsburskii 	    ),
26080acc80eSStanislav Kinsburskii 	    TP_fast_assign(
26180acc80eSStanislav Kinsburskii 		    __entry->partition_id = partition_id;
26280acc80eSStanislav Kinsburskii 		    __entry->vp_index = vp_index;
26380acc80eSStanislav Kinsburskii 	    ),
26480acc80eSStanislav Kinsburskii 	    TP_printk("partition_id=%llu vp_index=%u",
26580acc80eSStanislav Kinsburskii 		    __entry->partition_id,
26680acc80eSStanislav Kinsburskii 		    __entry->vp_index
26780acc80eSStanislav Kinsburskii 	    )
26880acc80eSStanislav Kinsburskii );
26980acc80eSStanislav Kinsburskii 
27080acc80eSStanislav Kinsburskii TRACE_EVENT(mshv_run_vp_exit,
27180acc80eSStanislav Kinsburskii 	    TP_PROTO(u64 partition_id, u32 vp_index, u64 hv_message_type, long ret),
27280acc80eSStanislav Kinsburskii 	    TP_ARGS(partition_id, vp_index, hv_message_type, ret),
27380acc80eSStanislav Kinsburskii 	    TP_STRUCT__entry(
27480acc80eSStanislav Kinsburskii 		    __field(u64, partition_id)
27580acc80eSStanislav Kinsburskii 		    __field(u32, vp_index)
27680acc80eSStanislav Kinsburskii 		    __field(u64, hv_message_type)
27780acc80eSStanislav Kinsburskii 		    __field(long, ret)
27880acc80eSStanislav Kinsburskii 	    ),
27980acc80eSStanislav Kinsburskii 	    TP_fast_assign(
28080acc80eSStanislav Kinsburskii 		    __entry->partition_id = partition_id;
28180acc80eSStanislav Kinsburskii 		    __entry->vp_index = vp_index;
28280acc80eSStanislav Kinsburskii 		    __entry->hv_message_type = hv_message_type;
28380acc80eSStanislav Kinsburskii 		    __entry->ret = ret;
28480acc80eSStanislav Kinsburskii 	    ),
28580acc80eSStanislav Kinsburskii 	    TP_printk("partition_id=%llu vp_index=%u hv_message_type=%#llx ret=%ld",
28680acc80eSStanislav Kinsburskii 		    __entry->partition_id,
28780acc80eSStanislav Kinsburskii 		    __entry->vp_index,
28880acc80eSStanislav Kinsburskii 		    __entry->hv_message_type,
28980acc80eSStanislav Kinsburskii 		    __entry->ret
29080acc80eSStanislav Kinsburskii 	    )
29180acc80eSStanislav Kinsburskii );
29280acc80eSStanislav Kinsburskii 
29380acc80eSStanislav Kinsburskii TRACE_EVENT(mshv_vp_clear_explicit_suspend,
29480acc80eSStanislav Kinsburskii 	    TP_PROTO(u64 partition_id, u32 vp_index, int ret),
29580acc80eSStanislav Kinsburskii 	    TP_ARGS(partition_id, vp_index, ret),
29680acc80eSStanislav Kinsburskii 	    TP_STRUCT__entry(
29780acc80eSStanislav Kinsburskii 		    __field(u64, partition_id)
29880acc80eSStanislav Kinsburskii 		    __field(u32, vp_index)
29980acc80eSStanislav Kinsburskii 		    __field(int, ret)
30080acc80eSStanislav Kinsburskii 	    ),
30180acc80eSStanislav Kinsburskii 	    TP_fast_assign(
30280acc80eSStanislav Kinsburskii 		    __entry->partition_id = partition_id;
30380acc80eSStanislav Kinsburskii 		    __entry->vp_index = vp_index;
30480acc80eSStanislav Kinsburskii 		    __entry->ret = ret;
30580acc80eSStanislav Kinsburskii 	    ),
30680acc80eSStanislav Kinsburskii 	    TP_printk("partition_id=%llu vp_index=%u ret=%d",
30780acc80eSStanislav Kinsburskii 		    __entry->partition_id,
30880acc80eSStanislav Kinsburskii 		    __entry->vp_index,
30980acc80eSStanislav Kinsburskii 		    __entry->ret
31080acc80eSStanislav Kinsburskii 	    )
31180acc80eSStanislav Kinsburskii );
31280acc80eSStanislav Kinsburskii 
31380acc80eSStanislav Kinsburskii TRACE_EVENT(mshv_xfer_to_guest_mode_work,
31480acc80eSStanislav Kinsburskii 	    TP_PROTO(u64 partition_id, u32 vp_index, unsigned long thread_info_flag, long ret),
31580acc80eSStanislav Kinsburskii 	    TP_ARGS(partition_id, vp_index, thread_info_flag, ret),
31680acc80eSStanislav Kinsburskii 	    TP_STRUCT__entry(
31780acc80eSStanislav Kinsburskii 		    __field(u64, partition_id)
31880acc80eSStanislav Kinsburskii 		    __field(u32, vp_index)
31980acc80eSStanislav Kinsburskii 		    __field(unsigned long, thread_info_flag)
32080acc80eSStanislav Kinsburskii 		    __field(long, ret)
32180acc80eSStanislav Kinsburskii 	    ),
32280acc80eSStanislav Kinsburskii 	    TP_fast_assign(
32380acc80eSStanislav Kinsburskii 		    __entry->partition_id = partition_id;
32480acc80eSStanislav Kinsburskii 		    __entry->vp_index = vp_index;
32580acc80eSStanislav Kinsburskii 		    __entry->thread_info_flag = thread_info_flag;
32680acc80eSStanislav Kinsburskii 		    __entry->ret = ret;
32780acc80eSStanislav Kinsburskii 	    ),
32880acc80eSStanislav Kinsburskii 	    TP_printk("partition_id=%llu vp_index=%u thread_info_flag=%#lx ret=%ld",
32980acc80eSStanislav Kinsburskii 		    __entry->partition_id,
33080acc80eSStanislav Kinsburskii 		    __entry->vp_index,
33180acc80eSStanislav Kinsburskii 		    __entry->thread_info_flag,
33280acc80eSStanislav Kinsburskii 		    __entry->ret
33380acc80eSStanislav Kinsburskii 	    )
33480acc80eSStanislav Kinsburskii );
33580acc80eSStanislav Kinsburskii 
33680acc80eSStanislav Kinsburskii TRACE_EVENT(mshv_hvcall_dispatch_vp,
33780acc80eSStanislav Kinsburskii 	    TP_PROTO(u64 partition_id, u32 vp_index, u32 flags,
33880acc80eSStanislav Kinsburskii 		     u32 dispatch_state, u32 dispatch_event, u64 irq_vectors, u64 status),
33980acc80eSStanislav Kinsburskii 	    TP_ARGS(partition_id, vp_index, flags, dispatch_state, dispatch_event, irq_vectors,
34080acc80eSStanislav Kinsburskii 		    status),
34180acc80eSStanislav Kinsburskii 	    TP_STRUCT__entry(
34280acc80eSStanislav Kinsburskii 		    __field(u64, partition_id)
34380acc80eSStanislav Kinsburskii 		    __field(u32, vp_index)
34480acc80eSStanislav Kinsburskii 		    __field(u32, flags)
34580acc80eSStanislav Kinsburskii 		    __field(u32, dispatch_state)
34680acc80eSStanislav Kinsburskii 		    __field(u32, dispatch_event)
34780acc80eSStanislav Kinsburskii 		    __field(u64, irq_vectors)
34880acc80eSStanislav Kinsburskii 		    __field(u64, status)
34980acc80eSStanislav Kinsburskii 	    ),
35080acc80eSStanislav Kinsburskii 	    TP_fast_assign(
35180acc80eSStanislav Kinsburskii 		    __entry->partition_id = partition_id;
35280acc80eSStanislav Kinsburskii 		    __entry->vp_index = vp_index;
35380acc80eSStanislav Kinsburskii 		    __entry->flags = flags;
35480acc80eSStanislav Kinsburskii 		    __entry->dispatch_state = dispatch_state;
35580acc80eSStanislav Kinsburskii 		    __entry->dispatch_event = dispatch_event;
35680acc80eSStanislav Kinsburskii 		    __entry->irq_vectors = irq_vectors;
35780acc80eSStanislav Kinsburskii 		    __entry->status = status;
35880acc80eSStanislav Kinsburskii 	    ),
35980acc80eSStanislav Kinsburskii 	    TP_printk("partition_id=%llu vp_index=%u flags=%#x dispatch_state=%#x dispatch_event=%#x irq_vectors=%#016llx status=%#llx",
36080acc80eSStanislav Kinsburskii 		    __entry->partition_id,
36180acc80eSStanislav Kinsburskii 		    __entry->vp_index,
36280acc80eSStanislav Kinsburskii 		    __entry->flags,
36380acc80eSStanislav Kinsburskii 		    __entry->dispatch_state,
36480acc80eSStanislav Kinsburskii 		    __entry->dispatch_event,
36580acc80eSStanislav Kinsburskii 		    __entry->irq_vectors,
36680acc80eSStanislav Kinsburskii 		    __entry->status
36780acc80eSStanislav Kinsburskii 	     )
36880acc80eSStanislav Kinsburskii );
36980acc80eSStanislav Kinsburskii 
37080acc80eSStanislav Kinsburskii TRACE_EVENT(mshv_update_routing_table,
37180acc80eSStanislav Kinsburskii 	    TP_PROTO(u64 partition_id, void *old, void *new, u32 numents),
37280acc80eSStanislav Kinsburskii 	    TP_ARGS(partition_id, old, new, numents),
37380acc80eSStanislav Kinsburskii 	    TP_STRUCT__entry(
37480acc80eSStanislav Kinsburskii 		    __field(u64, partition_id)
37580acc80eSStanislav Kinsburskii 		    __field(struct mshv_girq_routing_table *, old)
37680acc80eSStanislav Kinsburskii 		    __field(struct mshv_girq_routing_table *, new)
37780acc80eSStanislav Kinsburskii 		    __field(u32, numents)
37880acc80eSStanislav Kinsburskii 	    ),
37980acc80eSStanislav Kinsburskii 	    TP_fast_assign(
38080acc80eSStanislav Kinsburskii 		    __entry->partition_id = partition_id;
38180acc80eSStanislav Kinsburskii 		    __entry->old = old;
38280acc80eSStanislav Kinsburskii 		    __entry->new = new;
38380acc80eSStanislav Kinsburskii 		    __entry->numents = numents;
38480acc80eSStanislav Kinsburskii 	    ),
38580acc80eSStanislav Kinsburskii 	    TP_printk("partition_id=%llu old=%p new=%p numents=%u",
38680acc80eSStanislav Kinsburskii 		    __entry->partition_id,
38780acc80eSStanislav Kinsburskii 		    __entry->old,
38880acc80eSStanislav Kinsburskii 		    __entry->new,
38980acc80eSStanislav Kinsburskii 		    __entry->numents
39080acc80eSStanislav Kinsburskii 	    )
39180acc80eSStanislav Kinsburskii );
39280acc80eSStanislav Kinsburskii 
39380acc80eSStanislav Kinsburskii TRACE_EVENT(mshv_map_user_memory,
39480acc80eSStanislav Kinsburskii 	    TP_PROTO(u64 partition_id, u64 start_uaddr, u64 start_gfn, u64 nr_pages, u32 map_flags,
39580acc80eSStanislav Kinsburskii 		     long ret),
39680acc80eSStanislav Kinsburskii 	    TP_ARGS(partition_id, start_uaddr, start_gfn, nr_pages, map_flags, ret),
39780acc80eSStanislav Kinsburskii 	    TP_STRUCT__entry(
39880acc80eSStanislav Kinsburskii 		    __field(u64, partition_id)
39980acc80eSStanislav Kinsburskii 		    __field(u64, start_uaddr)
40080acc80eSStanislav Kinsburskii 		    __field(u64, start_gfn)
40180acc80eSStanislav Kinsburskii 		    __field(u64, nr_pages)
40280acc80eSStanislav Kinsburskii 		    __field(u32, map_flags)
40380acc80eSStanislav Kinsburskii 		    __field(long, ret)
40480acc80eSStanislav Kinsburskii 	    ),
40580acc80eSStanislav Kinsburskii 	    TP_fast_assign(
40680acc80eSStanislav Kinsburskii 		    __entry->partition_id = partition_id;
40780acc80eSStanislav Kinsburskii 		    __entry->start_uaddr = start_uaddr;
40880acc80eSStanislav Kinsburskii 		    __entry->start_gfn = start_gfn;
40980acc80eSStanislav Kinsburskii 		    __entry->nr_pages = nr_pages;
41080acc80eSStanislav Kinsburskii 		    __entry->map_flags = map_flags;
41180acc80eSStanislav Kinsburskii 		    __entry->ret = ret;
41280acc80eSStanislav Kinsburskii 	    ),
41380acc80eSStanislav Kinsburskii 	    TP_printk("partition_id=%llu start_uaddr=%#llx start_gfn=%#llx nr_pages=%llu map_flags=%#x ret=%ld",
41480acc80eSStanislav Kinsburskii 		    __entry->partition_id,
41580acc80eSStanislav Kinsburskii 		    __entry->start_uaddr,
41680acc80eSStanislav Kinsburskii 		    __entry->start_gfn,
41780acc80eSStanislav Kinsburskii 		    __entry->nr_pages,
41880acc80eSStanislav Kinsburskii 		    __entry->map_flags,
41980acc80eSStanislav Kinsburskii 		    __entry->ret
42080acc80eSStanislav Kinsburskii 	     )
42180acc80eSStanislav Kinsburskii );
42280acc80eSStanislav Kinsburskii 
42380acc80eSStanislav Kinsburskii TRACE_EVENT(mshv_assign_ioeventfd,
42480acc80eSStanislav Kinsburskii 	    TP_PROTO(u64 partition_id, u64 addr, u64 length, u64 datamatch, bool wildcard,
42580acc80eSStanislav Kinsburskii 		     void *eventfd, int ret),
42680acc80eSStanislav Kinsburskii 	    TP_ARGS(partition_id, addr, length, datamatch, wildcard, eventfd, ret),
42780acc80eSStanislav Kinsburskii 	    TP_STRUCT__entry(
42880acc80eSStanislav Kinsburskii 		    __field(u64, partition_id)
42980acc80eSStanislav Kinsburskii 		    __field(u64, addr)
43080acc80eSStanislav Kinsburskii 		    __field(u64, length)
43180acc80eSStanislav Kinsburskii 		    __field(u64, datamatch)
43280acc80eSStanislav Kinsburskii 		    __field(bool, wildcard)
43380acc80eSStanislav Kinsburskii 		    __field(struct eventfd_ctx *, eventfd)
43480acc80eSStanislav Kinsburskii 		    __field(int, ret)
43580acc80eSStanislav Kinsburskii 	    ),
43680acc80eSStanislav Kinsburskii 	    TP_fast_assign(
43780acc80eSStanislav Kinsburskii 		    __entry->partition_id = partition_id;
43880acc80eSStanislav Kinsburskii 		    __entry->addr = addr;
43980acc80eSStanislav Kinsburskii 		    __entry->length = length;
44080acc80eSStanislav Kinsburskii 		    __entry->datamatch = datamatch;
44180acc80eSStanislav Kinsburskii 		    __entry->wildcard = wildcard;
44280acc80eSStanislav Kinsburskii 		    __entry->eventfd = eventfd;
44380acc80eSStanislav Kinsburskii 		    __entry->ret = ret;
44480acc80eSStanislav Kinsburskii 	    ),
44580acc80eSStanislav Kinsburskii 	    TP_printk("partition_id=%llu addr=%#016llx length=%#llx datamatch=%#llx wildcard=%d eventfd=%p ret=%d",
44680acc80eSStanislav Kinsburskii 		    __entry->partition_id,
44780acc80eSStanislav Kinsburskii 		    __entry->addr,
44880acc80eSStanislav Kinsburskii 		    __entry->length,
44980acc80eSStanislav Kinsburskii 		    __entry->datamatch,
45080acc80eSStanislav Kinsburskii 		    __entry->wildcard,
45180acc80eSStanislav Kinsburskii 		    __entry->eventfd,
45280acc80eSStanislav Kinsburskii 		    __entry->ret
45380acc80eSStanislav Kinsburskii 	     )
45480acc80eSStanislav Kinsburskii );
45580acc80eSStanislav Kinsburskii 
45680acc80eSStanislav Kinsburskii TRACE_EVENT(mshv_deassign_ioeventfd,
45780acc80eSStanislav Kinsburskii 	    TP_PROTO(u64 partition_id, u64 addr, u64 length, u64 datamatch, bool wildcard,
45880acc80eSStanislav Kinsburskii 		     void *eventfd),
45980acc80eSStanislav Kinsburskii 	    TP_ARGS(partition_id, addr, length, datamatch, wildcard, eventfd),
46080acc80eSStanislav Kinsburskii 	    TP_STRUCT__entry(
46180acc80eSStanislav Kinsburskii 		    __field(u64, partition_id)
46280acc80eSStanislav Kinsburskii 		    __field(u64, addr)
46380acc80eSStanislav Kinsburskii 		    __field(u64, length)
46480acc80eSStanislav Kinsburskii 		    __field(u64, datamatch)
46580acc80eSStanislav Kinsburskii 		    __field(bool, wildcard)
46680acc80eSStanislav Kinsburskii 		    __field(struct eventfd_ctx *, eventfd)
46780acc80eSStanislav Kinsburskii 	    ),
46880acc80eSStanislav Kinsburskii 	    TP_fast_assign(
46980acc80eSStanislav Kinsburskii 		    __entry->partition_id = partition_id;
47080acc80eSStanislav Kinsburskii 		    __entry->addr = addr;
47180acc80eSStanislav Kinsburskii 		    __entry->length = length;
47280acc80eSStanislav Kinsburskii 		    __entry->datamatch = datamatch;
47380acc80eSStanislav Kinsburskii 		    __entry->wildcard = wildcard;
47480acc80eSStanislav Kinsburskii 		    __entry->eventfd = eventfd;
47580acc80eSStanislav Kinsburskii 	    ),
47680acc80eSStanislav Kinsburskii 	    TP_printk("partition_id=%llu addr=%#016llx length=%#llx datamatch=%#llx wildcard=%d eventfd=%p",
47780acc80eSStanislav Kinsburskii 		    __entry->partition_id,
47880acc80eSStanislav Kinsburskii 		    __entry->addr,
47980acc80eSStanislav Kinsburskii 		    __entry->length,
48080acc80eSStanislav Kinsburskii 		    __entry->datamatch,
48180acc80eSStanislav Kinsburskii 		    __entry->wildcard,
48280acc80eSStanislav Kinsburskii 		    __entry->eventfd
48380acc80eSStanislav Kinsburskii 	     )
48480acc80eSStanislav Kinsburskii );
48580acc80eSStanislav Kinsburskii 
48680acc80eSStanislav Kinsburskii TRACE_EVENT(mshv_vp_wait_for_hv_kick,
48780acc80eSStanislav Kinsburskii 	    TP_PROTO(u64 partition_id, u32 vp_index, bool kicked_by_hv, bool blocked,
48880acc80eSStanislav Kinsburskii 		     bool irq_pending),
48980acc80eSStanislav Kinsburskii 	    TP_ARGS(partition_id, vp_index, kicked_by_hv, blocked, irq_pending),
49080acc80eSStanislav Kinsburskii 	    TP_STRUCT__entry(
49180acc80eSStanislav Kinsburskii 		    __field(u64, partition_id)
49280acc80eSStanislav Kinsburskii 		    __field(u32, vp_index)
49380acc80eSStanislav Kinsburskii 		    __field(bool, kicked_by_hv)
49480acc80eSStanislav Kinsburskii 		    __field(bool, blocked)
49580acc80eSStanislav Kinsburskii 		    __field(bool, irq_pending)
49680acc80eSStanislav Kinsburskii 	    ),
49780acc80eSStanislav Kinsburskii 	    TP_fast_assign(
49880acc80eSStanislav Kinsburskii 		    __entry->partition_id = partition_id;
49980acc80eSStanislav Kinsburskii 		    __entry->vp_index = vp_index;
50080acc80eSStanislav Kinsburskii 		    __entry->kicked_by_hv = kicked_by_hv;
50180acc80eSStanislav Kinsburskii 		    __entry->blocked = blocked;
50280acc80eSStanislav Kinsburskii 		    __entry->irq_pending = irq_pending;
50380acc80eSStanislav Kinsburskii 	    ),
50480acc80eSStanislav Kinsburskii 	    TP_printk("partition_id=%llu vp_index=%u kicked_by_hv=%d blocked=%d irq_pending=%d",
50580acc80eSStanislav Kinsburskii 		    __entry->partition_id,
50680acc80eSStanislav Kinsburskii 		    __entry->vp_index,
50780acc80eSStanislav Kinsburskii 		    __entry->kicked_by_hv,
50880acc80eSStanislav Kinsburskii 		    __entry->blocked,
50980acc80eSStanislav Kinsburskii 		    __entry->irq_pending
51080acc80eSStanislav Kinsburskii 	    )
51180acc80eSStanislav Kinsburskii );
51280acc80eSStanislav Kinsburskii 
513*cfc42685SStanislav Kinsburskii TRACE_EVENT(mshv_handle_gpa_intercept,
514*cfc42685SStanislav Kinsburskii 	    TP_PROTO(u64 partition_id, u32 vp_index, u64 gfn, u8 access_type, bool handled),
515*cfc42685SStanislav Kinsburskii 	    TP_ARGS(partition_id, vp_index, gfn, access_type, handled),
516*cfc42685SStanislav Kinsburskii 	    TP_STRUCT__entry(
517*cfc42685SStanislav Kinsburskii 		    __field(u64, partition_id)
518*cfc42685SStanislav Kinsburskii 		    __field(u32, vp_index)
519*cfc42685SStanislav Kinsburskii 		    __field(u64, gfn)
520*cfc42685SStanislav Kinsburskii 		    __field(u8, access_type)
521*cfc42685SStanislav Kinsburskii 		    __field(bool, handled)
522*cfc42685SStanislav Kinsburskii 	    ),
523*cfc42685SStanislav Kinsburskii 	    TP_fast_assign(
524*cfc42685SStanislav Kinsburskii 		    __entry->partition_id = partition_id;
525*cfc42685SStanislav Kinsburskii 		    __entry->vp_index = vp_index;
526*cfc42685SStanislav Kinsburskii 		    __entry->gfn = gfn;
527*cfc42685SStanislav Kinsburskii 		    __entry->access_type = access_type == HV_INTERCEPT_ACCESS_READ ? 'R' :
528*cfc42685SStanislav Kinsburskii 					   (access_type == HV_INTERCEPT_ACCESS_WRITE ? 'W' :
529*cfc42685SStanislav Kinsburskii 					    (access_type == HV_INTERCEPT_ACCESS_EXECUTE ? 'X' : '?'));
530*cfc42685SStanislav Kinsburskii 		    __entry->handled = handled;
531*cfc42685SStanislav Kinsburskii 	    ),
532*cfc42685SStanislav Kinsburskii 	    TP_printk("partition_id=%llu vp_index=%u gfn=0x%llx access_type=%c handled=%d",
533*cfc42685SStanislav Kinsburskii 		    __entry->partition_id,
534*cfc42685SStanislav Kinsburskii 		    __entry->vp_index,
535*cfc42685SStanislav Kinsburskii 		    __entry->gfn,
536*cfc42685SStanislav Kinsburskii 		    __entry->access_type,
537*cfc42685SStanislav Kinsburskii 		    __entry->handled
538*cfc42685SStanislav Kinsburskii 	    )
539*cfc42685SStanislav Kinsburskii );
540*cfc42685SStanislav Kinsburskii 
54180acc80eSStanislav Kinsburskii #endif /* _MSHV_TRACE_H_ */
54280acc80eSStanislav Kinsburskii 
54380acc80eSStanislav Kinsburskii /* This part must be outside protection */
54480acc80eSStanislav Kinsburskii #include <trace/define_trace.h>
545