162306a36Sopenharmony_ci#undef TRACE_SYSTEM
262306a36Sopenharmony_ci#define TRACE_SYSTEM hyperv
362306a36Sopenharmony_ci
462306a36Sopenharmony_ci#if !defined(_TRACE_HYPERV_H) || defined(TRACE_HEADER_MULTI_READ)
562306a36Sopenharmony_ci#define _TRACE_HYPERV_H
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#include <linux/tracepoint.h>
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#if IS_ENABLED(CONFIG_HYPERV)
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ciTRACE_EVENT(hyperv_mmu_flush_tlb_multi,
1262306a36Sopenharmony_ci	    TP_PROTO(const struct cpumask *cpus,
1362306a36Sopenharmony_ci		     const struct flush_tlb_info *info),
1462306a36Sopenharmony_ci	    TP_ARGS(cpus, info),
1562306a36Sopenharmony_ci	    TP_STRUCT__entry(
1662306a36Sopenharmony_ci		    __field(unsigned int, ncpus)
1762306a36Sopenharmony_ci		    __field(struct mm_struct *, mm)
1862306a36Sopenharmony_ci		    __field(unsigned long, addr)
1962306a36Sopenharmony_ci		    __field(unsigned long, end)
2062306a36Sopenharmony_ci		    ),
2162306a36Sopenharmony_ci	    TP_fast_assign(__entry->ncpus = cpumask_weight(cpus);
2262306a36Sopenharmony_ci			   __entry->mm = info->mm;
2362306a36Sopenharmony_ci			   __entry->addr = info->start;
2462306a36Sopenharmony_ci			   __entry->end = info->end;
2562306a36Sopenharmony_ci		    ),
2662306a36Sopenharmony_ci	    TP_printk("ncpus %d mm %p addr %lx, end %lx",
2762306a36Sopenharmony_ci		      __entry->ncpus, __entry->mm,
2862306a36Sopenharmony_ci		      __entry->addr, __entry->end)
2962306a36Sopenharmony_ci	);
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ciTRACE_EVENT(hyperv_nested_flush_guest_mapping,
3262306a36Sopenharmony_ci	    TP_PROTO(u64 as, int ret),
3362306a36Sopenharmony_ci	    TP_ARGS(as, ret),
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci	    TP_STRUCT__entry(
3662306a36Sopenharmony_ci		    __field(u64, as)
3762306a36Sopenharmony_ci		    __field(int, ret)
3862306a36Sopenharmony_ci		    ),
3962306a36Sopenharmony_ci	    TP_fast_assign(__entry->as = as;
4062306a36Sopenharmony_ci			   __entry->ret = ret;
4162306a36Sopenharmony_ci		    ),
4262306a36Sopenharmony_ci	    TP_printk("address space %llx ret %d", __entry->as, __entry->ret)
4362306a36Sopenharmony_ci	);
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ciTRACE_EVENT(hyperv_nested_flush_guest_mapping_range,
4662306a36Sopenharmony_ci	    TP_PROTO(u64 as, int ret),
4762306a36Sopenharmony_ci	    TP_ARGS(as, ret),
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci	    TP_STRUCT__entry(
5062306a36Sopenharmony_ci		    __field(u64, as)
5162306a36Sopenharmony_ci		    __field(int, ret)
5262306a36Sopenharmony_ci		    ),
5362306a36Sopenharmony_ci	    TP_fast_assign(__entry->as = as;
5462306a36Sopenharmony_ci			   __entry->ret = ret;
5562306a36Sopenharmony_ci		    ),
5662306a36Sopenharmony_ci	    TP_printk("address space %llx ret %d", __entry->as, __entry->ret)
5762306a36Sopenharmony_ci	);
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ciTRACE_EVENT(hyperv_send_ipi_mask,
6062306a36Sopenharmony_ci	    TP_PROTO(const struct cpumask *cpus,
6162306a36Sopenharmony_ci		     int vector),
6262306a36Sopenharmony_ci	    TP_ARGS(cpus, vector),
6362306a36Sopenharmony_ci	    TP_STRUCT__entry(
6462306a36Sopenharmony_ci		    __field(unsigned int, ncpus)
6562306a36Sopenharmony_ci		    __field(int, vector)
6662306a36Sopenharmony_ci		    ),
6762306a36Sopenharmony_ci	    TP_fast_assign(__entry->ncpus = cpumask_weight(cpus);
6862306a36Sopenharmony_ci			   __entry->vector = vector;
6962306a36Sopenharmony_ci		    ),
7062306a36Sopenharmony_ci	    TP_printk("ncpus %d vector %x",
7162306a36Sopenharmony_ci		      __entry->ncpus, __entry->vector)
7262306a36Sopenharmony_ci	);
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ciTRACE_EVENT(hyperv_send_ipi_one,
7562306a36Sopenharmony_ci	    TP_PROTO(int cpu,
7662306a36Sopenharmony_ci		     int vector),
7762306a36Sopenharmony_ci	    TP_ARGS(cpu, vector),
7862306a36Sopenharmony_ci	    TP_STRUCT__entry(
7962306a36Sopenharmony_ci		    __field(int, cpu)
8062306a36Sopenharmony_ci		    __field(int, vector)
8162306a36Sopenharmony_ci		    ),
8262306a36Sopenharmony_ci	    TP_fast_assign(__entry->cpu = cpu;
8362306a36Sopenharmony_ci			   __entry->vector = vector;
8462306a36Sopenharmony_ci		    ),
8562306a36Sopenharmony_ci	    TP_printk("cpu %d vector %x",
8662306a36Sopenharmony_ci		      __entry->cpu, __entry->vector)
8762306a36Sopenharmony_ci	);
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci#endif /* CONFIG_HYPERV */
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ci#undef TRACE_INCLUDE_PATH
9262306a36Sopenharmony_ci#define TRACE_INCLUDE_PATH asm/trace/
9362306a36Sopenharmony_ci#undef TRACE_INCLUDE_FILE
9462306a36Sopenharmony_ci#define TRACE_INCLUDE_FILE hyperv
9562306a36Sopenharmony_ci#endif /* _TRACE_HYPERV_H */
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ci/* This part must be outside protection */
9862306a36Sopenharmony_ci#include <trace/define_trace.h>
99