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