Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    2) #if !defined(_TRACE_KVM_H) || defined(TRACE_HEADER_MULTI_READ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    3) #define _TRACE_KVM_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    4) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    5) #include <linux/tracepoint.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    6) #include <asm/vmx.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    7) #include <asm/svm.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    8) #include <asm/clocksource.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    9) #include <asm/pvclock-abi.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   10) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   11) #undef TRACE_SYSTEM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   12) #define TRACE_SYSTEM kvm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   13) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   14) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   15)  * Tracepoint for guest mode entry.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   16)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   17) TRACE_EVENT(kvm_entry,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   18) 	TP_PROTO(struct kvm_vcpu *vcpu),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   19) 	TP_ARGS(vcpu),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   20) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   21) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   22) 		__field(	unsigned int,	vcpu_id		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   23) 		__field(	unsigned long,	rip		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   24) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   25) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   26) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   27) 		__entry->vcpu_id        = vcpu->vcpu_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   28) 		__entry->rip		= kvm_rip_read(vcpu);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   29) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   30) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   31) 	TP_printk("vcpu %u, rip 0x%lx", __entry->vcpu_id, __entry->rip)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   32) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   33) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   34) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   35)  * Tracepoint for hypercall.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   36)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   37) TRACE_EVENT(kvm_hypercall,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   38) 	TP_PROTO(unsigned long nr, unsigned long a0, unsigned long a1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   39) 		 unsigned long a2, unsigned long a3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   40) 	TP_ARGS(nr, a0, a1, a2, a3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   41) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   42) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   43) 		__field(	unsigned long, 	nr		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   44) 		__field(	unsigned long,	a0		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   45) 		__field(	unsigned long,	a1		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   46) 		__field(	unsigned long,	a2		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   47) 		__field(	unsigned long,	a3		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   48) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   49) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   50) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   51) 		__entry->nr		= nr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   52) 		__entry->a0		= a0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   53) 		__entry->a1		= a1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   54) 		__entry->a2		= a2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   55) 		__entry->a3		= a3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   56) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   57) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   58) 	TP_printk("nr 0x%lx a0 0x%lx a1 0x%lx a2 0x%lx a3 0x%lx",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   59) 		 __entry->nr, __entry->a0, __entry->a1,  __entry->a2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   60) 		 __entry->a3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   61) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   62) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   63) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   64)  * Tracepoint for hypercall.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   65)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   66) TRACE_EVENT(kvm_hv_hypercall,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   67) 	TP_PROTO(__u16 code, bool fast, __u16 rep_cnt, __u16 rep_idx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   68) 		 __u64 ingpa, __u64 outgpa),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   69) 	TP_ARGS(code, fast, rep_cnt, rep_idx, ingpa, outgpa),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   70) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   71) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   72) 		__field(	__u16,		rep_cnt		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   73) 		__field(	__u16,		rep_idx		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   74) 		__field(	__u64,		ingpa		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   75) 		__field(	__u64,		outgpa		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   76) 		__field(	__u16, 		code		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   77) 		__field(	bool,		fast		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   78) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   79) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   80) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   81) 		__entry->rep_cnt	= rep_cnt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   82) 		__entry->rep_idx	= rep_idx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   83) 		__entry->ingpa		= ingpa;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   84) 		__entry->outgpa		= outgpa;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   85) 		__entry->code		= code;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   86) 		__entry->fast		= fast;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   87) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   88) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   89) 	TP_printk("code 0x%x %s cnt 0x%x idx 0x%x in 0x%llx out 0x%llx",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   90) 		  __entry->code, __entry->fast ? "fast" : "slow",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   91) 		  __entry->rep_cnt, __entry->rep_idx,  __entry->ingpa,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   92) 		  __entry->outgpa)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   93) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   94) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   95) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   96)  * Tracepoint for PIO.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   97)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   98) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   99) #define KVM_PIO_IN   0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  100) #define KVM_PIO_OUT  1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  101) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  102) TRACE_EVENT(kvm_pio,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  103) 	TP_PROTO(unsigned int rw, unsigned int port, unsigned int size,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  104) 		 unsigned int count, void *data),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  105) 	TP_ARGS(rw, port, size, count, data),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  106) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  107) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  108) 		__field(	unsigned int, 	rw		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  109) 		__field(	unsigned int, 	port		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  110) 		__field(	unsigned int, 	size		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  111) 		__field(	unsigned int,	count		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  112) 		__field(	unsigned int,	val		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  113) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  114) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  115) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  116) 		__entry->rw		= rw;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  117) 		__entry->port		= port;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  118) 		__entry->size		= size;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  119) 		__entry->count		= count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  120) 		if (size == 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  121) 			__entry->val	= *(unsigned char *)data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  122) 		else if (size == 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  123) 			__entry->val	= *(unsigned short *)data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  124) 		else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  125) 			__entry->val	= *(unsigned int *)data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  126) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  127) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  128) 	TP_printk("pio_%s at 0x%x size %d count %d val 0x%x %s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  129) 		  __entry->rw ? "write" : "read",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  130) 		  __entry->port, __entry->size, __entry->count, __entry->val,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  131) 		  __entry->count > 1 ? "(...)" : "")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  132) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  133) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  134) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  135)  * Tracepoint for fast mmio.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  136)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  137) TRACE_EVENT(kvm_fast_mmio,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  138) 	TP_PROTO(u64 gpa),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  139) 	TP_ARGS(gpa),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  140) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  141) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  142) 		__field(u64,	gpa)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  143) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  144) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  145) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  146) 		__entry->gpa		= gpa;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  147) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  148) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  149) 	TP_printk("fast mmio at gpa 0x%llx", __entry->gpa)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  150) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  151) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  152) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  153)  * Tracepoint for cpuid.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  154)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  155) TRACE_EVENT(kvm_cpuid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  156) 	TP_PROTO(unsigned int function, unsigned int index, unsigned long rax,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  157) 		 unsigned long rbx, unsigned long rcx, unsigned long rdx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  158) 		 bool found, bool used_max_basic),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  159) 	TP_ARGS(function, index, rax, rbx, rcx, rdx, found, used_max_basic),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  160) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  161) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  162) 		__field(	unsigned int,	function	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  163) 		__field(	unsigned int,	index		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  164) 		__field(	unsigned long,	rax		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  165) 		__field(	unsigned long,	rbx		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  166) 		__field(	unsigned long,	rcx		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  167) 		__field(	unsigned long,	rdx		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  168) 		__field(	bool,		found		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  169) 		__field(	bool,		used_max_basic	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  170) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  171) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  172) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  173) 		__entry->function	= function;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  174) 		__entry->index		= index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  175) 		__entry->rax		= rax;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  176) 		__entry->rbx		= rbx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  177) 		__entry->rcx		= rcx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  178) 		__entry->rdx		= rdx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  179) 		__entry->found		= found;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  180) 		__entry->used_max_basic	= used_max_basic;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  181) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  182) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  183) 	TP_printk("func %x idx %x rax %lx rbx %lx rcx %lx rdx %lx, cpuid entry %s%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  184) 		  __entry->function, __entry->index, __entry->rax,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  185) 		  __entry->rbx, __entry->rcx, __entry->rdx,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  186) 		  __entry->found ? "found" : "not found",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  187) 		  __entry->used_max_basic ? ", used max basic" : "")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  188) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  189) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  190) #define AREG(x) { APIC_##x, "APIC_" #x }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  191) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  192) #define kvm_trace_symbol_apic						    \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  193) 	AREG(ID), AREG(LVR), AREG(TASKPRI), AREG(ARBPRI), AREG(PROCPRI),    \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  194) 	AREG(EOI), AREG(RRR), AREG(LDR), AREG(DFR), AREG(SPIV), AREG(ISR),  \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  195) 	AREG(TMR), AREG(IRR), AREG(ESR), AREG(ICR), AREG(ICR2), AREG(LVTT), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  196) 	AREG(LVTTHMR), AREG(LVTPC), AREG(LVT0), AREG(LVT1), AREG(LVTERR),   \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  197) 	AREG(TMICT), AREG(TMCCT), AREG(TDCR), AREG(SELF_IPI), AREG(EFEAT),  \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  198) 	AREG(ECTRL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  199) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  200)  * Tracepoint for apic access.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  201)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  202) TRACE_EVENT(kvm_apic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  203) 	TP_PROTO(unsigned int rw, unsigned int reg, unsigned int val),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  204) 	TP_ARGS(rw, reg, val),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  205) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  206) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  207) 		__field(	unsigned int,	rw		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  208) 		__field(	unsigned int,	reg		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  209) 		__field(	unsigned int,	val		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  210) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  211) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  212) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  213) 		__entry->rw		= rw;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  214) 		__entry->reg		= reg;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  215) 		__entry->val		= val;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  216) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  217) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  218) 	TP_printk("apic_%s %s = 0x%x",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  219) 		  __entry->rw ? "write" : "read",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  220) 		  __print_symbolic(__entry->reg, kvm_trace_symbol_apic),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  221) 		  __entry->val)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  222) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  223) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  224) #define trace_kvm_apic_read(reg, val)		trace_kvm_apic(0, reg, val)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  225) #define trace_kvm_apic_write(reg, val)		trace_kvm_apic(1, reg, val)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  226) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  227) #define KVM_ISA_VMX   1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  228) #define KVM_ISA_SVM   2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  229) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  230) #define kvm_print_exit_reason(exit_reason, isa)				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  231) 	(isa == KVM_ISA_VMX) ?						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  232) 	__print_symbolic(exit_reason & 0xffff, VMX_EXIT_REASONS) :	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  233) 	__print_symbolic(exit_reason, SVM_EXIT_REASONS),		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  234) 	(isa == KVM_ISA_VMX && exit_reason & ~0xffff) ? " " : "",	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  235) 	(isa == KVM_ISA_VMX) ?						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  236) 	__print_flags(exit_reason & ~0xffff, " ", VMX_EXIT_REASON_FLAGS) : ""
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  237) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  238) #define TRACE_EVENT_KVM_EXIT(name)					     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  239) TRACE_EVENT(name,							     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  240) 	TP_PROTO(unsigned int exit_reason, struct kvm_vcpu *vcpu, u32 isa),  \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  241) 	TP_ARGS(exit_reason, vcpu, isa),				     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  242) 									     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  243) 	TP_STRUCT__entry(						     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  244) 		__field(	unsigned int,	exit_reason	)	     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  245) 		__field(	unsigned long,	guest_rip	)	     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  246) 		__field(	u32,	        isa             )	     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  247) 		__field(	u64,	        info1           )	     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  248) 		__field(	u64,	        info2           )	     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  249) 		__field(	u32,	        intr_info	)	     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  250) 		__field(	u32,	        error_code	)	     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  251) 		__field(	unsigned int,	vcpu_id         )	     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  252) 	),								     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  253) 									     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  254) 	TP_fast_assign(							     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  255) 		__entry->exit_reason	= exit_reason;			     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  256) 		__entry->guest_rip	= kvm_rip_read(vcpu);		     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  257) 		__entry->isa            = isa;				     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  258) 		__entry->vcpu_id        = vcpu->vcpu_id;		     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  259) 		kvm_x86_ops.get_exit_info(vcpu, &__entry->info1,	     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  260) 					  &__entry->info2,		     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  261) 					  &__entry->intr_info,		     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  262) 					  &__entry->error_code);	     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  263) 	),								     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  264) 									     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  265) 	TP_printk("vcpu %u reason %s%s%s rip 0x%lx info1 0x%016llx "	     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  266) 		  "info2 0x%016llx intr_info 0x%08x error_code 0x%08x",	     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  267) 		  __entry->vcpu_id,					     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  268) 		  kvm_print_exit_reason(__entry->exit_reason, __entry->isa), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  269) 		  __entry->guest_rip, __entry->info1, __entry->info2,	     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  270) 		  __entry->intr_info, __entry->error_code)		     \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  271) )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  272) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  273) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  274)  * Tracepoint for kvm guest exit:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  275)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  276) TRACE_EVENT_KVM_EXIT(kvm_exit);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  277) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  278) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  279)  * Tracepoint for kvm interrupt injection:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  280)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  281) TRACE_EVENT(kvm_inj_virq,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  282) 	TP_PROTO(unsigned int irq),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  283) 	TP_ARGS(irq),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  284) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  285) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  286) 		__field(	unsigned int,	irq		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  287) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  288) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  289) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  290) 		__entry->irq		= irq;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  291) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  292) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  293) 	TP_printk("irq %u", __entry->irq)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  294) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  295) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  296) #define EXS(x) { x##_VECTOR, "#" #x }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  297) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  298) #define kvm_trace_sym_exc						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  299) 	EXS(DE), EXS(DB), EXS(BP), EXS(OF), EXS(BR), EXS(UD), EXS(NM),	\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  300) 	EXS(DF), EXS(TS), EXS(NP), EXS(SS), EXS(GP), EXS(PF),		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  301) 	EXS(MF), EXS(AC), EXS(MC)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  302) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  303) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  304)  * Tracepoint for kvm interrupt injection:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  305)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  306) TRACE_EVENT(kvm_inj_exception,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  307) 	TP_PROTO(unsigned exception, bool has_error, unsigned error_code),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  308) 	TP_ARGS(exception, has_error, error_code),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  309) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  310) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  311) 		__field(	u8,	exception	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  312) 		__field(	u8,	has_error	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  313) 		__field(	u32,	error_code	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  314) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  315) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  316) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  317) 		__entry->exception	= exception;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  318) 		__entry->has_error	= has_error;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  319) 		__entry->error_code	= error_code;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  320) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  321) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  322) 	TP_printk("%s (0x%x)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  323) 		  __print_symbolic(__entry->exception, kvm_trace_sym_exc),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  324) 		  /* FIXME: don't print error_code if not present */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  325) 		  __entry->has_error ? __entry->error_code : 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  326) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  327) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  328) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  329)  * Tracepoint for page fault.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  330)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  331) TRACE_EVENT(kvm_page_fault,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  332) 	TP_PROTO(unsigned long fault_address, unsigned int error_code),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  333) 	TP_ARGS(fault_address, error_code),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  334) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  335) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  336) 		__field(	unsigned long,	fault_address	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  337) 		__field(	unsigned int,	error_code	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  338) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  339) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  340) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  341) 		__entry->fault_address	= fault_address;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  342) 		__entry->error_code	= error_code;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  343) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  344) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  345) 	TP_printk("address %lx error_code %x",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  346) 		  __entry->fault_address, __entry->error_code)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  347) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  348) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  349) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  350)  * Tracepoint for guest MSR access.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  351)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  352) TRACE_EVENT(kvm_msr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  353) 	TP_PROTO(unsigned write, u32 ecx, u64 data, bool exception),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  354) 	TP_ARGS(write, ecx, data, exception),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  355) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  356) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  357) 		__field(	unsigned,	write		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  358) 		__field(	u32,		ecx		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  359) 		__field(	u64,		data		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  360) 		__field(	u8,		exception	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  361) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  362) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  363) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  364) 		__entry->write		= write;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  365) 		__entry->ecx		= ecx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  366) 		__entry->data		= data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  367) 		__entry->exception	= exception;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  368) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  369) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  370) 	TP_printk("msr_%s %x = 0x%llx%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  371) 		  __entry->write ? "write" : "read",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  372) 		  __entry->ecx, __entry->data,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  373) 		  __entry->exception ? " (#GP)" : "")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  374) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  375) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  376) #define trace_kvm_msr_read(ecx, data)      trace_kvm_msr(0, ecx, data, false)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  377) #define trace_kvm_msr_write(ecx, data)     trace_kvm_msr(1, ecx, data, false)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  378) #define trace_kvm_msr_read_ex(ecx)         trace_kvm_msr(0, ecx, 0, true)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  379) #define trace_kvm_msr_write_ex(ecx, data)  trace_kvm_msr(1, ecx, data, true)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  380) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  381) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  382)  * Tracepoint for guest CR access.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  383)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  384) TRACE_EVENT(kvm_cr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  385) 	TP_PROTO(unsigned int rw, unsigned int cr, unsigned long val),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  386) 	TP_ARGS(rw, cr, val),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  387) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  388) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  389) 		__field(	unsigned int,	rw		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  390) 		__field(	unsigned int,	cr		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  391) 		__field(	unsigned long,	val		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  392) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  393) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  394) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  395) 		__entry->rw		= rw;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  396) 		__entry->cr		= cr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  397) 		__entry->val		= val;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  398) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  399) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  400) 	TP_printk("cr_%s %x = 0x%lx",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  401) 		  __entry->rw ? "write" : "read",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  402) 		  __entry->cr, __entry->val)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  403) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  404) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  405) #define trace_kvm_cr_read(cr, val)		trace_kvm_cr(0, cr, val)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  406) #define trace_kvm_cr_write(cr, val)		trace_kvm_cr(1, cr, val)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  407) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  408) TRACE_EVENT(kvm_pic_set_irq,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  409) 	    TP_PROTO(__u8 chip, __u8 pin, __u8 elcr, __u8 imr, bool coalesced),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  410) 	    TP_ARGS(chip, pin, elcr, imr, coalesced),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  411) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  412) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  413) 		__field(	__u8,		chip		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  414) 		__field(	__u8,		pin		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  415) 		__field(	__u8,		elcr		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  416) 		__field(	__u8,		imr		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  417) 		__field(	bool,		coalesced	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  418) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  419) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  420) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  421) 		__entry->chip		= chip;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  422) 		__entry->pin		= pin;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  423) 		__entry->elcr		= elcr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  424) 		__entry->imr		= imr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  425) 		__entry->coalesced	= coalesced;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  426) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  427) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  428) 	TP_printk("chip %u pin %u (%s%s)%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  429) 		  __entry->chip, __entry->pin,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  430) 		  (__entry->elcr & (1 << __entry->pin)) ? "level":"edge",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  431) 		  (__entry->imr & (1 << __entry->pin)) ? "|masked":"",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  432) 		  __entry->coalesced ? " (coalesced)" : "")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  433) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  434) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  435) #define kvm_apic_dst_shorthand		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  436) 	{0x0, "dst"},			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  437) 	{0x1, "self"},			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  438) 	{0x2, "all"},			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  439) 	{0x3, "all-but-self"}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  440) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  441) TRACE_EVENT(kvm_apic_ipi,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  442) 	    TP_PROTO(__u32 icr_low, __u32 dest_id),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  443) 	    TP_ARGS(icr_low, dest_id),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  444) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  445) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  446) 		__field(	__u32,		icr_low		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  447) 		__field(	__u32,		dest_id		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  448) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  449) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  450) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  451) 		__entry->icr_low	= icr_low;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  452) 		__entry->dest_id	= dest_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  453) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  454) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  455) 	TP_printk("dst %x vec %u (%s|%s|%s|%s|%s)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  456) 		  __entry->dest_id, (u8)__entry->icr_low,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  457) 		  __print_symbolic((__entry->icr_low >> 8 & 0x7),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  458) 				   kvm_deliver_mode),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  459) 		  (__entry->icr_low & (1<<11)) ? "logical" : "physical",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  460) 		  (__entry->icr_low & (1<<14)) ? "assert" : "de-assert",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  461) 		  (__entry->icr_low & (1<<15)) ? "level" : "edge",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  462) 		  __print_symbolic((__entry->icr_low >> 18 & 0x3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  463) 				   kvm_apic_dst_shorthand))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  464) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  465) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  466) TRACE_EVENT(kvm_apic_accept_irq,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  467) 	    TP_PROTO(__u32 apicid, __u16 dm, __u16 tm, __u8 vec),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  468) 	    TP_ARGS(apicid, dm, tm, vec),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  469) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  470) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  471) 		__field(	__u32,		apicid		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  472) 		__field(	__u16,		dm		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  473) 		__field(	__u16,		tm		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  474) 		__field(	__u8,		vec		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  475) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  476) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  477) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  478) 		__entry->apicid		= apicid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  479) 		__entry->dm		= dm;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  480) 		__entry->tm		= tm;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  481) 		__entry->vec		= vec;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  482) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  483) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  484) 	TP_printk("apicid %x vec %u (%s|%s)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  485) 		  __entry->apicid, __entry->vec,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  486) 		  __print_symbolic((__entry->dm >> 8 & 0x7), kvm_deliver_mode),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  487) 		  __entry->tm ? "level" : "edge")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  488) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  489) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  490) TRACE_EVENT(kvm_eoi,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  491) 	    TP_PROTO(struct kvm_lapic *apic, int vector),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  492) 	    TP_ARGS(apic, vector),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  493) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  494) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  495) 		__field(	__u32,		apicid		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  496) 		__field(	int,		vector		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  497) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  498) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  499) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  500) 		__entry->apicid		= apic->vcpu->vcpu_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  501) 		__entry->vector		= vector;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  502) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  503) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  504) 	TP_printk("apicid %x vector %d", __entry->apicid, __entry->vector)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  505) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  506) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  507) TRACE_EVENT(kvm_pv_eoi,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  508) 	    TP_PROTO(struct kvm_lapic *apic, int vector),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  509) 	    TP_ARGS(apic, vector),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  510) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  511) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  512) 		__field(	__u32,		apicid		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  513) 		__field(	int,		vector		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  514) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  515) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  516) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  517) 		__entry->apicid		= apic->vcpu->vcpu_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  518) 		__entry->vector		= vector;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  519) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  520) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  521) 	TP_printk("apicid %x vector %d", __entry->apicid, __entry->vector)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  522) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  523) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  524) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  525)  * Tracepoint for nested VMRUN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  526)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  527) TRACE_EVENT(kvm_nested_vmrun,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  528) 	    TP_PROTO(__u64 rip, __u64 vmcb, __u64 nested_rip, __u32 int_ctl,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  529) 		     __u32 event_inj, bool npt),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  530) 	    TP_ARGS(rip, vmcb, nested_rip, int_ctl, event_inj, npt),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  531) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  532) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  533) 		__field(	__u64,		rip		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  534) 		__field(	__u64,		vmcb		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  535) 		__field(	__u64,		nested_rip	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  536) 		__field(	__u32,		int_ctl		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  537) 		__field(	__u32,		event_inj	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  538) 		__field(	bool,		npt		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  539) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  540) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  541) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  542) 		__entry->rip		= rip;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  543) 		__entry->vmcb		= vmcb;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  544) 		__entry->nested_rip	= nested_rip;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  545) 		__entry->int_ctl	= int_ctl;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  546) 		__entry->event_inj	= event_inj;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  547) 		__entry->npt		= npt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  548) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  549) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  550) 	TP_printk("rip: 0x%016llx vmcb: 0x%016llx nrip: 0x%016llx int_ctl: 0x%08x "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  551) 		  "event_inj: 0x%08x npt: %s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  552) 		__entry->rip, __entry->vmcb, __entry->nested_rip,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  553) 		__entry->int_ctl, __entry->event_inj,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  554) 		__entry->npt ? "on" : "off")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  555) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  556) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  557) TRACE_EVENT(kvm_nested_intercepts,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  558) 	    TP_PROTO(__u16 cr_read, __u16 cr_write, __u32 exceptions,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  559) 		     __u32 intercept1, __u32 intercept2, __u32 intercept3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  560) 	    TP_ARGS(cr_read, cr_write, exceptions, intercept1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  561) 		    intercept2, intercept3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  562) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  563) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  564) 		__field(	__u16,		cr_read		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  565) 		__field(	__u16,		cr_write	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  566) 		__field(	__u32,		exceptions	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  567) 		__field(	__u32,		intercept1	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  568) 		__field(	__u32,		intercept2	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  569) 		__field(	__u32,		intercept3	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  570) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  571) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  572) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  573) 		__entry->cr_read	= cr_read;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  574) 		__entry->cr_write	= cr_write;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  575) 		__entry->exceptions	= exceptions;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  576) 		__entry->intercept1	= intercept1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  577) 		__entry->intercept2	= intercept2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  578) 		__entry->intercept3	= intercept3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  579) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  580) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  581) 	TP_printk("cr_read: %04x cr_write: %04x excp: %08x "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  582) 		  "intercepts: %08x %08x %08x",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  583) 		  __entry->cr_read, __entry->cr_write, __entry->exceptions,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  584) 		  __entry->intercept1, __entry->intercept2, __entry->intercept3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  585) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  586) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  587)  * Tracepoint for #VMEXIT while nested
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  588)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  589) TRACE_EVENT_KVM_EXIT(kvm_nested_vmexit);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  590) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  591) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  592)  * Tracepoint for #VMEXIT reinjected to the guest
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  593)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  594) TRACE_EVENT(kvm_nested_vmexit_inject,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  595) 	    TP_PROTO(__u32 exit_code,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  596) 		     __u64 exit_info1, __u64 exit_info2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  597) 		     __u32 exit_int_info, __u32 exit_int_info_err, __u32 isa),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  598) 	    TP_ARGS(exit_code, exit_info1, exit_info2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  599) 		    exit_int_info, exit_int_info_err, isa),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  600) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  601) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  602) 		__field(	__u32,		exit_code		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  603) 		__field(	__u64,		exit_info1		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  604) 		__field(	__u64,		exit_info2		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  605) 		__field(	__u32,		exit_int_info		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  606) 		__field(	__u32,		exit_int_info_err	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  607) 		__field(	__u32,		isa			)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  608) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  609) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  610) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  611) 		__entry->exit_code		= exit_code;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  612) 		__entry->exit_info1		= exit_info1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  613) 		__entry->exit_info2		= exit_info2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  614) 		__entry->exit_int_info		= exit_int_info;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  615) 		__entry->exit_int_info_err	= exit_int_info_err;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  616) 		__entry->isa			= isa;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  617) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  618) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  619) 	TP_printk("reason: %s%s%s ext_inf1: 0x%016llx "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  620) 		  "ext_inf2: 0x%016llx ext_int: 0x%08x ext_int_err: 0x%08x",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  621) 		  kvm_print_exit_reason(__entry->exit_code, __entry->isa),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  622) 		  __entry->exit_info1, __entry->exit_info2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  623) 		  __entry->exit_int_info, __entry->exit_int_info_err)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  624) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  625) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  626) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  627)  * Tracepoint for nested #vmexit because of interrupt pending
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  628)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  629) TRACE_EVENT(kvm_nested_intr_vmexit,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  630) 	    TP_PROTO(__u64 rip),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  631) 	    TP_ARGS(rip),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  632) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  633) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  634) 		__field(	__u64,	rip	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  635) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  636) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  637) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  638) 		__entry->rip	=	rip
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  639) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  640) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  641) 	TP_printk("rip: 0x%016llx", __entry->rip)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  642) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  643) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  644) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  645)  * Tracepoint for nested #vmexit because of interrupt pending
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  646)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  647) TRACE_EVENT(kvm_invlpga,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  648) 	    TP_PROTO(__u64 rip, int asid, u64 address),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  649) 	    TP_ARGS(rip, asid, address),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  650) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  651) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  652) 		__field(	__u64,	rip	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  653) 		__field(	int,	asid	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  654) 		__field(	__u64,	address	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  655) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  656) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  657) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  658) 		__entry->rip		=	rip;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  659) 		__entry->asid		=	asid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  660) 		__entry->address	=	address;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  661) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  662) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  663) 	TP_printk("rip: 0x%016llx asid: %d address: 0x%016llx",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  664) 		  __entry->rip, __entry->asid, __entry->address)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  665) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  666) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  667) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  668)  * Tracepoint for nested #vmexit because of interrupt pending
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  669)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  670) TRACE_EVENT(kvm_skinit,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  671) 	    TP_PROTO(__u64 rip, __u32 slb),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  672) 	    TP_ARGS(rip, slb),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  673) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  674) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  675) 		__field(	__u64,	rip	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  676) 		__field(	__u32,	slb	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  677) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  678) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  679) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  680) 		__entry->rip		=	rip;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  681) 		__entry->slb		=	slb;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  682) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  683) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  684) 	TP_printk("rip: 0x%016llx slb: 0x%08x",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  685) 		  __entry->rip, __entry->slb)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  686) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  687) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  688) #define KVM_EMUL_INSN_F_CR0_PE (1 << 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  689) #define KVM_EMUL_INSN_F_EFL_VM (1 << 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  690) #define KVM_EMUL_INSN_F_CS_D   (1 << 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  691) #define KVM_EMUL_INSN_F_CS_L   (1 << 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  692) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  693) #define kvm_trace_symbol_emul_flags	                  \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  694) 	{ 0,   			    "real" },		  \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  695) 	{ KVM_EMUL_INSN_F_CR0_PE			  \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  696) 	  | KVM_EMUL_INSN_F_EFL_VM, "vm16" },		  \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  697) 	{ KVM_EMUL_INSN_F_CR0_PE,   "prot16" },		  \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  698) 	{ KVM_EMUL_INSN_F_CR0_PE			  \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  699) 	  | KVM_EMUL_INSN_F_CS_D,   "prot32" },		  \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  700) 	{ KVM_EMUL_INSN_F_CR0_PE			  \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  701) 	  | KVM_EMUL_INSN_F_CS_L,   "prot64" }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  702) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  703) #define kei_decode_mode(mode) ({			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  704) 	u8 flags = 0xff;				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  705) 	switch (mode) {					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  706) 	case X86EMUL_MODE_REAL:				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  707) 		flags = 0;				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  708) 		break;					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  709) 	case X86EMUL_MODE_VM86:				\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  710) 		flags = KVM_EMUL_INSN_F_EFL_VM;		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  711) 		break;					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  712) 	case X86EMUL_MODE_PROT16:			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  713) 		flags = KVM_EMUL_INSN_F_CR0_PE;		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  714) 		break;					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  715) 	case X86EMUL_MODE_PROT32:			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  716) 		flags = KVM_EMUL_INSN_F_CR0_PE		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  717) 			| KVM_EMUL_INSN_F_CS_D;		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  718) 		break;					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  719) 	case X86EMUL_MODE_PROT64:			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  720) 		flags = KVM_EMUL_INSN_F_CR0_PE		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  721) 			| KVM_EMUL_INSN_F_CS_L;		\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  722) 		break;					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  723) 	}						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  724) 	flags;						\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  725) 	})
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  726) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  727) TRACE_EVENT(kvm_emulate_insn,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  728) 	TP_PROTO(struct kvm_vcpu *vcpu, __u8 failed),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  729) 	TP_ARGS(vcpu, failed),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  730) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  731) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  732) 		__field(    __u64, rip                       )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  733) 		__field(    __u32, csbase                    )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  734) 		__field(    __u8,  len                       )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  735) 		__array(    __u8,  insn,    15	             )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  736) 		__field(    __u8,  flags       	   	     )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  737) 		__field(    __u8,  failed                    )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  738) 		),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  739) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  740) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  741) 		__entry->csbase = kvm_x86_ops.get_segment_base(vcpu, VCPU_SREG_CS);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  742) 		__entry->len = vcpu->arch.emulate_ctxt->fetch.ptr
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  743) 			       - vcpu->arch.emulate_ctxt->fetch.data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  744) 		__entry->rip = vcpu->arch.emulate_ctxt->_eip - __entry->len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  745) 		memcpy(__entry->insn,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  746) 		       vcpu->arch.emulate_ctxt->fetch.data,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  747) 		       15);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  748) 		__entry->flags = kei_decode_mode(vcpu->arch.emulate_ctxt->mode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  749) 		__entry->failed = failed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  750) 		),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  751) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  752) 	TP_printk("%x:%llx:%s (%s)%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  753) 		  __entry->csbase, __entry->rip,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  754) 		  __print_hex(__entry->insn, __entry->len),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  755) 		  __print_symbolic(__entry->flags,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  756) 				   kvm_trace_symbol_emul_flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  757) 		  __entry->failed ? " failed" : ""
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  758) 		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  759) 	);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  760) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  761) #define trace_kvm_emulate_insn_start(vcpu) trace_kvm_emulate_insn(vcpu, 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  762) #define trace_kvm_emulate_insn_failed(vcpu) trace_kvm_emulate_insn(vcpu, 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  763) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  764) TRACE_EVENT(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  765) 	vcpu_match_mmio,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  766) 	TP_PROTO(gva_t gva, gpa_t gpa, bool write, bool gpa_match),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  767) 	TP_ARGS(gva, gpa, write, gpa_match),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  768) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  769) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  770) 		__field(gva_t, gva)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  771) 		__field(gpa_t, gpa)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  772) 		__field(bool, write)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  773) 		__field(bool, gpa_match)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  774) 		),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  775) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  776) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  777) 		__entry->gva = gva;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  778) 		__entry->gpa = gpa;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  779) 		__entry->write = write;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  780) 		__entry->gpa_match = gpa_match
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  781) 		),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  782) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  783) 	TP_printk("gva %#lx gpa %#llx %s %s", __entry->gva, __entry->gpa,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  784) 		  __entry->write ? "Write" : "Read",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  785) 		  __entry->gpa_match ? "GPA" : "GVA")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  786) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  787) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  788) TRACE_EVENT(kvm_write_tsc_offset,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  789) 	TP_PROTO(unsigned int vcpu_id, __u64 previous_tsc_offset,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  790) 		 __u64 next_tsc_offset),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  791) 	TP_ARGS(vcpu_id, previous_tsc_offset, next_tsc_offset),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  792) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  793) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  794) 		__field( unsigned int,	vcpu_id				)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  795) 		__field(	__u64,	previous_tsc_offset		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  796) 		__field(	__u64,	next_tsc_offset			)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  797) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  798) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  799) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  800) 		__entry->vcpu_id		= vcpu_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  801) 		__entry->previous_tsc_offset	= previous_tsc_offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  802) 		__entry->next_tsc_offset	= next_tsc_offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  803) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  804) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  805) 	TP_printk("vcpu=%u prev=%llu next=%llu", __entry->vcpu_id,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  806) 		  __entry->previous_tsc_offset, __entry->next_tsc_offset)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  807) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  808) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  809) #ifdef CONFIG_X86_64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  810) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  811) #define host_clocks					\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  812) 	{VDSO_CLOCKMODE_NONE, "none"},			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  813) 	{VDSO_CLOCKMODE_TSC,  "tsc"}			\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  814) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  815) TRACE_EVENT(kvm_update_master_clock,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  816) 	TP_PROTO(bool use_master_clock, unsigned int host_clock, bool offset_matched),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  817) 	TP_ARGS(use_master_clock, host_clock, offset_matched),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  818) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  819) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  820) 		__field(		bool,	use_master_clock	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  821) 		__field(	unsigned int,	host_clock		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  822) 		__field(		bool,	offset_matched		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  823) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  824) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  825) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  826) 		__entry->use_master_clock	= use_master_clock;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  827) 		__entry->host_clock		= host_clock;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  828) 		__entry->offset_matched		= offset_matched;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  829) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  830) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  831) 	TP_printk("masterclock %d hostclock %s offsetmatched %u",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  832) 		  __entry->use_master_clock,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  833) 		  __print_symbolic(__entry->host_clock, host_clocks),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  834) 		  __entry->offset_matched)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  835) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  836) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  837) TRACE_EVENT(kvm_track_tsc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  838) 	TP_PROTO(unsigned int vcpu_id, unsigned int nr_matched,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  839) 		 unsigned int online_vcpus, bool use_master_clock,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  840) 		 unsigned int host_clock),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  841) 	TP_ARGS(vcpu_id, nr_matched, online_vcpus, use_master_clock,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  842) 		host_clock),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  843) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  844) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  845) 		__field(	unsigned int,	vcpu_id			)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  846) 		__field(	unsigned int,	nr_vcpus_matched_tsc	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  847) 		__field(	unsigned int,	online_vcpus		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  848) 		__field(	bool,		use_master_clock	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  849) 		__field(	unsigned int,	host_clock		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  850) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  851) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  852) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  853) 		__entry->vcpu_id		= vcpu_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  854) 		__entry->nr_vcpus_matched_tsc	= nr_matched;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  855) 		__entry->online_vcpus		= online_vcpus;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  856) 		__entry->use_master_clock	= use_master_clock;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  857) 		__entry->host_clock		= host_clock;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  858) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  859) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  860) 	TP_printk("vcpu_id %u masterclock %u offsetmatched %u nr_online %u"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  861) 		  " hostclock %s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  862) 		  __entry->vcpu_id, __entry->use_master_clock,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  863) 		  __entry->nr_vcpus_matched_tsc, __entry->online_vcpus,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  864) 		  __print_symbolic(__entry->host_clock, host_clocks))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  865) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  866) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  867) #endif /* CONFIG_X86_64 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  868) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  869) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  870)  * Tracepoint for PML full VMEXIT.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  871)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  872) TRACE_EVENT(kvm_pml_full,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  873) 	TP_PROTO(unsigned int vcpu_id),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  874) 	TP_ARGS(vcpu_id),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  875) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  876) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  877) 		__field(	unsigned int,	vcpu_id			)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  878) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  879) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  880) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  881) 		__entry->vcpu_id		= vcpu_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  882) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  883) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  884) 	TP_printk("vcpu %d: PML full", __entry->vcpu_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  885) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  886) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  887) TRACE_EVENT(kvm_ple_window_update,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  888) 	TP_PROTO(unsigned int vcpu_id, unsigned int new, unsigned int old),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  889) 	TP_ARGS(vcpu_id, new, old),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  890) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  891) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  892) 		__field(        unsigned int,   vcpu_id         )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  893) 		__field(        unsigned int,       new         )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  894) 		__field(        unsigned int,       old         )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  895) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  896) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  897) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  898) 		__entry->vcpu_id        = vcpu_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  899) 		__entry->new            = new;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  900) 		__entry->old            = old;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  901) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  902) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  903) 	TP_printk("vcpu %u old %u new %u (%s)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  904) 	          __entry->vcpu_id, __entry->old, __entry->new,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  905) 		  __entry->old < __entry->new ? "growed" : "shrinked")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  906) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  907) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  908) TRACE_EVENT(kvm_pvclock_update,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  909) 	TP_PROTO(unsigned int vcpu_id, struct pvclock_vcpu_time_info *pvclock),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  910) 	TP_ARGS(vcpu_id, pvclock),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  911) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  912) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  913) 		__field(	unsigned int,	vcpu_id			)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  914) 		__field(	__u32,		version			)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  915) 		__field(	__u64,		tsc_timestamp		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  916) 		__field(	__u64,		system_time		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  917) 		__field(	__u32,		tsc_to_system_mul	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  918) 		__field(	__s8,		tsc_shift		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  919) 		__field(	__u8,		flags			)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  920) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  921) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  922) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  923) 		__entry->vcpu_id	   = vcpu_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  924) 		__entry->version	   = pvclock->version;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  925) 		__entry->tsc_timestamp	   = pvclock->tsc_timestamp;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  926) 		__entry->system_time	   = pvclock->system_time;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  927) 		__entry->tsc_to_system_mul = pvclock->tsc_to_system_mul;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  928) 		__entry->tsc_shift	   = pvclock->tsc_shift;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  929) 		__entry->flags		   = pvclock->flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  930) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  931) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  932) 	TP_printk("vcpu_id %u, pvclock { version %u, tsc_timestamp 0x%llx, "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  933) 		  "system_time 0x%llx, tsc_to_system_mul 0x%x, tsc_shift %d, "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  934) 		  "flags 0x%x }",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  935) 		  __entry->vcpu_id,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  936) 		  __entry->version,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  937) 		  __entry->tsc_timestamp,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  938) 		  __entry->system_time,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  939) 		  __entry->tsc_to_system_mul,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  940) 		  __entry->tsc_shift,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  941) 		  __entry->flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  942) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  943) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  944) TRACE_EVENT(kvm_wait_lapic_expire,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  945) 	TP_PROTO(unsigned int vcpu_id, s64 delta),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  946) 	TP_ARGS(vcpu_id, delta),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  947) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  948) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  949) 		__field(	unsigned int,	vcpu_id		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  950) 		__field(	s64,		delta		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  951) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  952) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  953) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  954) 		__entry->vcpu_id	   = vcpu_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  955) 		__entry->delta             = delta;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  956) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  957) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  958) 	TP_printk("vcpu %u: delta %lld (%s)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  959) 		  __entry->vcpu_id,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  960) 		  __entry->delta,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  961) 		  __entry->delta < 0 ? "early" : "late")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  962) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  963) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  964) TRACE_EVENT(kvm_enter_smm,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  965) 	TP_PROTO(unsigned int vcpu_id, u64 smbase, bool entering),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  966) 	TP_ARGS(vcpu_id, smbase, entering),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  967) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  968) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  969) 		__field(	unsigned int,	vcpu_id		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  970) 		__field(	u64,		smbase		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  971) 		__field(	bool,		entering	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  972) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  973) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  974) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  975) 		__entry->vcpu_id	= vcpu_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  976) 		__entry->smbase		= smbase;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  977) 		__entry->entering	= entering;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  978) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  979) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  980) 	TP_printk("vcpu %u: %s SMM, smbase 0x%llx",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  981) 		  __entry->vcpu_id,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  982) 		  __entry->entering ? "entering" : "leaving",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  983) 		  __entry->smbase)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  984) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  985) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  986) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  987)  * Tracepoint for VT-d posted-interrupts.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  988)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  989) TRACE_EVENT(kvm_pi_irte_update,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  990) 	TP_PROTO(unsigned int host_irq, unsigned int vcpu_id,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  991) 		 unsigned int gsi, unsigned int gvec,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  992) 		 u64 pi_desc_addr, bool set),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  993) 	TP_ARGS(host_irq, vcpu_id, gsi, gvec, pi_desc_addr, set),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  994) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  995) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  996) 		__field(	unsigned int,	host_irq	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  997) 		__field(	unsigned int,	vcpu_id		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  998) 		__field(	unsigned int,	gsi		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  999) 		__field(	unsigned int,	gvec		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1000) 		__field(	u64,		pi_desc_addr	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1001) 		__field(	bool,		set		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1002) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1003) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1004) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1005) 		__entry->host_irq	= host_irq;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1006) 		__entry->vcpu_id	= vcpu_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1007) 		__entry->gsi		= gsi;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1008) 		__entry->gvec		= gvec;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1009) 		__entry->pi_desc_addr	= pi_desc_addr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1010) 		__entry->set		= set;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1011) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1012) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1013) 	TP_printk("VT-d PI is %s for irq %u, vcpu %u, gsi: 0x%x, "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1014) 		  "gvec: 0x%x, pi_desc_addr: 0x%llx",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1015) 		  __entry->set ? "enabled and being updated" : "disabled",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1016) 		  __entry->host_irq,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1017) 		  __entry->vcpu_id,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1018) 		  __entry->gsi,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1019) 		  __entry->gvec,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1020) 		  __entry->pi_desc_addr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1021) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1022) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1023) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1024)  * Tracepoint for kvm_hv_notify_acked_sint.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1025)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1026) TRACE_EVENT(kvm_hv_notify_acked_sint,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1027) 	TP_PROTO(int vcpu_id, u32 sint),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1028) 	TP_ARGS(vcpu_id, sint),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1029) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1030) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1031) 		__field(int, vcpu_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1032) 		__field(u32, sint)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1033) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1034) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1035) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1036) 		__entry->vcpu_id = vcpu_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1037) 		__entry->sint = sint;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1038) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1039) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1040) 	TP_printk("vcpu_id %d sint %u", __entry->vcpu_id, __entry->sint)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1041) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1042) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1043) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1044)  * Tracepoint for synic_set_irq.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1045)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1046) TRACE_EVENT(kvm_hv_synic_set_irq,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1047) 	TP_PROTO(int vcpu_id, u32 sint, int vector, int ret),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1048) 	TP_ARGS(vcpu_id, sint, vector, ret),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1049) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1050) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1051) 		__field(int, vcpu_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1052) 		__field(u32, sint)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1053) 		__field(int, vector)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1054) 		__field(int, ret)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1055) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1056) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1057) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1058) 		__entry->vcpu_id = vcpu_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1059) 		__entry->sint = sint;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1060) 		__entry->vector = vector;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1061) 		__entry->ret = ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1062) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1063) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1064) 	TP_printk("vcpu_id %d sint %u vector %d ret %d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1065) 		  __entry->vcpu_id, __entry->sint, __entry->vector,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1066) 		  __entry->ret)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1067) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1068) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1069) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1070)  * Tracepoint for kvm_hv_synic_send_eoi.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1071)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1072) TRACE_EVENT(kvm_hv_synic_send_eoi,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1073) 	TP_PROTO(int vcpu_id, int vector),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1074) 	TP_ARGS(vcpu_id, vector),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1075) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1076) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1077) 		__field(int, vcpu_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1078) 		__field(u32, sint)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1079) 		__field(int, vector)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1080) 		__field(int, ret)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1081) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1082) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1083) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1084) 		__entry->vcpu_id = vcpu_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1085) 		__entry->vector	= vector;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1086) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1087) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1088) 	TP_printk("vcpu_id %d vector %d", __entry->vcpu_id, __entry->vector)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1089) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1090) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1091) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1092)  * Tracepoint for synic_set_msr.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1093)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1094) TRACE_EVENT(kvm_hv_synic_set_msr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1095) 	TP_PROTO(int vcpu_id, u32 msr, u64 data, bool host),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1096) 	TP_ARGS(vcpu_id, msr, data, host),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1097) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1098) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1099) 		__field(int, vcpu_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1100) 		__field(u32, msr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1101) 		__field(u64, data)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1102) 		__field(bool, host)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1103) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1104) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1105) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1106) 		__entry->vcpu_id = vcpu_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1107) 		__entry->msr = msr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1108) 		__entry->data = data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1109) 		__entry->host = host
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1110) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1111) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1112) 	TP_printk("vcpu_id %d msr 0x%x data 0x%llx host %d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1113) 		  __entry->vcpu_id, __entry->msr, __entry->data, __entry->host)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1114) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1115) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1116) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1117)  * Tracepoint for stimer_set_config.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1118)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1119) TRACE_EVENT(kvm_hv_stimer_set_config,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1120) 	TP_PROTO(int vcpu_id, int timer_index, u64 config, bool host),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1121) 	TP_ARGS(vcpu_id, timer_index, config, host),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1122) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1123) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1124) 		__field(int, vcpu_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1125) 		__field(int, timer_index)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1126) 		__field(u64, config)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1127) 		__field(bool, host)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1128) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1129) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1130) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1131) 		__entry->vcpu_id = vcpu_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1132) 		__entry->timer_index = timer_index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1133) 		__entry->config = config;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1134) 		__entry->host = host;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1135) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1136) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1137) 	TP_printk("vcpu_id %d timer %d config 0x%llx host %d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1138) 		  __entry->vcpu_id, __entry->timer_index, __entry->config,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1139) 		  __entry->host)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1140) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1141) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1142) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1143)  * Tracepoint for stimer_set_count.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1144)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1145) TRACE_EVENT(kvm_hv_stimer_set_count,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1146) 	TP_PROTO(int vcpu_id, int timer_index, u64 count, bool host),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1147) 	TP_ARGS(vcpu_id, timer_index, count, host),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1148) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1149) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1150) 		__field(int, vcpu_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1151) 		__field(int, timer_index)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1152) 		__field(u64, count)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1153) 		__field(bool, host)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1154) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1155) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1156) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1157) 		__entry->vcpu_id = vcpu_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1158) 		__entry->timer_index = timer_index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1159) 		__entry->count = count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1160) 		__entry->host = host;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1161) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1162) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1163) 	TP_printk("vcpu_id %d timer %d count %llu host %d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1164) 		  __entry->vcpu_id, __entry->timer_index, __entry->count,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1165) 		  __entry->host)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1166) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1167) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1168) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1169)  * Tracepoint for stimer_start(periodic timer case).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1170)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1171) TRACE_EVENT(kvm_hv_stimer_start_periodic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1172) 	TP_PROTO(int vcpu_id, int timer_index, u64 time_now, u64 exp_time),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1173) 	TP_ARGS(vcpu_id, timer_index, time_now, exp_time),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1174) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1175) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1176) 		__field(int, vcpu_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1177) 		__field(int, timer_index)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1178) 		__field(u64, time_now)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1179) 		__field(u64, exp_time)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1180) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1181) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1182) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1183) 		__entry->vcpu_id = vcpu_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1184) 		__entry->timer_index = timer_index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1185) 		__entry->time_now = time_now;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1186) 		__entry->exp_time = exp_time;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1187) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1188) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1189) 	TP_printk("vcpu_id %d timer %d time_now %llu exp_time %llu",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1190) 		  __entry->vcpu_id, __entry->timer_index, __entry->time_now,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1191) 		  __entry->exp_time)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1192) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1193) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1194) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1195)  * Tracepoint for stimer_start(one-shot timer case).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1196)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1197) TRACE_EVENT(kvm_hv_stimer_start_one_shot,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1198) 	TP_PROTO(int vcpu_id, int timer_index, u64 time_now, u64 count),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1199) 	TP_ARGS(vcpu_id, timer_index, time_now, count),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1200) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1201) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1202) 		__field(int, vcpu_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1203) 		__field(int, timer_index)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1204) 		__field(u64, time_now)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1205) 		__field(u64, count)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1206) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1207) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1208) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1209) 		__entry->vcpu_id = vcpu_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1210) 		__entry->timer_index = timer_index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1211) 		__entry->time_now = time_now;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1212) 		__entry->count = count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1213) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1214) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1215) 	TP_printk("vcpu_id %d timer %d time_now %llu count %llu",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1216) 		  __entry->vcpu_id, __entry->timer_index, __entry->time_now,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1217) 		  __entry->count)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1218) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1219) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1220) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1221)  * Tracepoint for stimer_timer_callback.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1222)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1223) TRACE_EVENT(kvm_hv_stimer_callback,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1224) 	TP_PROTO(int vcpu_id, int timer_index),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1225) 	TP_ARGS(vcpu_id, timer_index),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1226) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1227) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1228) 		__field(int, vcpu_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1229) 		__field(int, timer_index)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1230) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1231) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1232) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1233) 		__entry->vcpu_id = vcpu_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1234) 		__entry->timer_index = timer_index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1235) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1236) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1237) 	TP_printk("vcpu_id %d timer %d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1238) 		  __entry->vcpu_id, __entry->timer_index)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1239) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1240) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1241) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1242)  * Tracepoint for stimer_expiration.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1243)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1244) TRACE_EVENT(kvm_hv_stimer_expiration,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1245) 	TP_PROTO(int vcpu_id, int timer_index, int direct, int msg_send_result),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1246) 	TP_ARGS(vcpu_id, timer_index, direct, msg_send_result),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1247) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1248) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1249) 		__field(int, vcpu_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1250) 		__field(int, timer_index)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1251) 		__field(int, direct)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1252) 		__field(int, msg_send_result)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1253) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1254) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1255) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1256) 		__entry->vcpu_id = vcpu_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1257) 		__entry->timer_index = timer_index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1258) 		__entry->direct = direct;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1259) 		__entry->msg_send_result = msg_send_result;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1260) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1261) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1262) 	TP_printk("vcpu_id %d timer %d direct %d send result %d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1263) 		  __entry->vcpu_id, __entry->timer_index,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1264) 		  __entry->direct, __entry->msg_send_result)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1265) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1266) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1267) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1268)  * Tracepoint for stimer_cleanup.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1269)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1270) TRACE_EVENT(kvm_hv_stimer_cleanup,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1271) 	TP_PROTO(int vcpu_id, int timer_index),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1272) 	TP_ARGS(vcpu_id, timer_index),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1273) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1274) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1275) 		__field(int, vcpu_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1276) 		__field(int, timer_index)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1277) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1278) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1279) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1280) 		__entry->vcpu_id = vcpu_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1281) 		__entry->timer_index = timer_index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1282) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1283) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1284) 	TP_printk("vcpu_id %d timer %d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1285) 		  __entry->vcpu_id, __entry->timer_index)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1286) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1287) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1288) TRACE_EVENT(kvm_apicv_update_request,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1289) 	    TP_PROTO(bool activate, unsigned long bit),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1290) 	    TP_ARGS(activate, bit),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1291) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1292) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1293) 		__field(bool, activate)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1294) 		__field(unsigned long, bit)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1295) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1296) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1297) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1298) 		__entry->activate = activate;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1299) 		__entry->bit = bit;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1300) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1301) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1302) 	TP_printk("%s bit=%lu",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1303) 		  __entry->activate ? "activate" : "deactivate",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1304) 		  __entry->bit)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1305) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1306) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1307) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1308)  * Tracepoint for AMD AVIC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1309)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1310) TRACE_EVENT(kvm_avic_incomplete_ipi,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1311) 	    TP_PROTO(u32 vcpu, u32 icrh, u32 icrl, u32 id, u32 index),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1312) 	    TP_ARGS(vcpu, icrh, icrl, id, index),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1313) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1314) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1315) 		__field(u32, vcpu)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1316) 		__field(u32, icrh)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1317) 		__field(u32, icrl)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1318) 		__field(u32, id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1319) 		__field(u32, index)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1320) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1321) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1322) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1323) 		__entry->vcpu = vcpu;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1324) 		__entry->icrh = icrh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1325) 		__entry->icrl = icrl;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1326) 		__entry->id = id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1327) 		__entry->index = index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1328) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1329) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1330) 	TP_printk("vcpu=%u, icrh:icrl=%#010x:%08x, id=%u, index=%u",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1331) 		  __entry->vcpu, __entry->icrh, __entry->icrl,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1332) 		  __entry->id, __entry->index)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1333) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1334) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1335) TRACE_EVENT(kvm_avic_unaccelerated_access,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1336) 	    TP_PROTO(u32 vcpu, u32 offset, bool ft, bool rw, u32 vec),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1337) 	    TP_ARGS(vcpu, offset, ft, rw, vec),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1338) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1339) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1340) 		__field(u32, vcpu)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1341) 		__field(u32, offset)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1342) 		__field(bool, ft)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1343) 		__field(bool, rw)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1344) 		__field(u32, vec)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1345) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1346) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1347) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1348) 		__entry->vcpu = vcpu;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1349) 		__entry->offset = offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1350) 		__entry->ft = ft;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1351) 		__entry->rw = rw;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1352) 		__entry->vec = vec;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1353) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1354) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1355) 	TP_printk("vcpu=%u, offset=%#x(%s), %s, %s, vec=%#x",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1356) 		  __entry->vcpu,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1357) 		  __entry->offset,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1358) 		  __print_symbolic(__entry->offset, kvm_trace_symbol_apic),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1359) 		  __entry->ft ? "trap" : "fault",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1360) 		  __entry->rw ? "write" : "read",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1361) 		  __entry->vec)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1362) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1363) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1364) TRACE_EVENT(kvm_avic_ga_log,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1365) 	    TP_PROTO(u32 vmid, u32 vcpuid),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1366) 	    TP_ARGS(vmid, vcpuid),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1367) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1368) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1369) 		__field(u32, vmid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1370) 		__field(u32, vcpuid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1371) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1372) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1373) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1374) 		__entry->vmid = vmid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1375) 		__entry->vcpuid = vcpuid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1376) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1377) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1378) 	TP_printk("vmid=%u, vcpuid=%u",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1379) 		  __entry->vmid, __entry->vcpuid)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1380) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1381) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1382) TRACE_EVENT(kvm_hv_timer_state,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1383) 		TP_PROTO(unsigned int vcpu_id, unsigned int hv_timer_in_use),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1384) 		TP_ARGS(vcpu_id, hv_timer_in_use),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1385) 		TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1386) 			__field(unsigned int, vcpu_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1387) 			__field(unsigned int, hv_timer_in_use)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1388) 			),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1389) 		TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1390) 			__entry->vcpu_id = vcpu_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1391) 			__entry->hv_timer_in_use = hv_timer_in_use;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1392) 			),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1393) 		TP_printk("vcpu_id %x hv_timer %x",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1394) 			__entry->vcpu_id,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1395) 			__entry->hv_timer_in_use)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1396) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1397) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1398) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1399)  * Tracepoint for kvm_hv_flush_tlb.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1400)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1401) TRACE_EVENT(kvm_hv_flush_tlb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1402) 	TP_PROTO(u64 processor_mask, u64 address_space, u64 flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1403) 	TP_ARGS(processor_mask, address_space, flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1404) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1405) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1406) 		__field(u64, processor_mask)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1407) 		__field(u64, address_space)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1408) 		__field(u64, flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1409) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1410) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1411) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1412) 		__entry->processor_mask = processor_mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1413) 		__entry->address_space = address_space;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1414) 		__entry->flags = flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1415) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1416) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1417) 	TP_printk("processor_mask 0x%llx address_space 0x%llx flags 0x%llx",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1418) 		  __entry->processor_mask, __entry->address_space,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1419) 		  __entry->flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1420) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1421) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1422) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1423)  * Tracepoint for kvm_hv_flush_tlb_ex.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1424)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1425) TRACE_EVENT(kvm_hv_flush_tlb_ex,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1426) 	TP_PROTO(u64 valid_bank_mask, u64 format, u64 address_space, u64 flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1427) 	TP_ARGS(valid_bank_mask, format, address_space, flags),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1428) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1429) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1430) 		__field(u64, valid_bank_mask)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1431) 		__field(u64, format)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1432) 		__field(u64, address_space)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1433) 		__field(u64, flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1434) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1435) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1436) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1437) 		__entry->valid_bank_mask = valid_bank_mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1438) 		__entry->format = format;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1439) 		__entry->address_space = address_space;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1440) 		__entry->flags = flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1441) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1442) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1443) 	TP_printk("valid_bank_mask 0x%llx format 0x%llx "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1444) 		  "address_space 0x%llx flags 0x%llx",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1445) 		  __entry->valid_bank_mask, __entry->format,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1446) 		  __entry->address_space, __entry->flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1447) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1448) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1449) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1450)  * Tracepoints for kvm_hv_send_ipi.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1451)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1452) TRACE_EVENT(kvm_hv_send_ipi,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1453) 	TP_PROTO(u32 vector, u64 processor_mask),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1454) 	TP_ARGS(vector, processor_mask),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1455) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1456) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1457) 		__field(u32, vector)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1458) 		__field(u64, processor_mask)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1459) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1460) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1461) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1462) 		__entry->vector = vector;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1463) 		__entry->processor_mask = processor_mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1464) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1465) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1466) 	TP_printk("vector %x processor_mask 0x%llx",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1467) 		  __entry->vector, __entry->processor_mask)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1468) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1469) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1470) TRACE_EVENT(kvm_hv_send_ipi_ex,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1471) 	TP_PROTO(u32 vector, u64 format, u64 valid_bank_mask),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1472) 	TP_ARGS(vector, format, valid_bank_mask),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1473) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1474) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1475) 		__field(u32, vector)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1476) 		__field(u64, format)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1477) 		__field(u64, valid_bank_mask)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1478) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1479) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1480) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1481) 		__entry->vector = vector;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1482) 		__entry->format = format;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1483) 		__entry->valid_bank_mask = valid_bank_mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1484) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1485) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1486) 	TP_printk("vector %x format %llx valid_bank_mask 0x%llx",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1487) 		  __entry->vector, __entry->format,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1488) 		  __entry->valid_bank_mask)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1489) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1490) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1491) TRACE_EVENT(kvm_pv_tlb_flush,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1492) 	TP_PROTO(unsigned int vcpu_id, bool need_flush_tlb),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1493) 	TP_ARGS(vcpu_id, need_flush_tlb),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1494) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1495) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1496) 		__field(	unsigned int,	vcpu_id		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1497) 		__field(	bool,	need_flush_tlb		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1498) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1499) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1500) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1501) 		__entry->vcpu_id	= vcpu_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1502) 		__entry->need_flush_tlb = need_flush_tlb;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1503) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1504) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1505) 	TP_printk("vcpu %u need_flush_tlb %s", __entry->vcpu_id,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1506) 		__entry->need_flush_tlb ? "true" : "false")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1507) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1508) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1509) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1510)  * Tracepoint for failed nested VMX VM-Enter.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1511)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1512) TRACE_EVENT(kvm_nested_vmenter_failed,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1513) 	TP_PROTO(const char *msg, u32 err),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1514) 	TP_ARGS(msg, err),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1515) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1516) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1517) 		__string(msg, msg)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1518) 		__field(u32, err)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1519) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1520) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1521) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1522) 		__assign_str(msg, msg);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1523) 		__entry->err = err;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1524) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1525) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1526) 	TP_printk("%s%s", __get_str(msg), !__entry->err ? "" :
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1527) 		__print_symbolic(__entry->err, VMX_VMENTER_INSTRUCTION_ERRORS))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1528) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1529) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1530) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1531)  * Tracepoint for syndbg_set_msr.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1532)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1533) TRACE_EVENT(kvm_hv_syndbg_set_msr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1534) 	TP_PROTO(int vcpu_id, u32 vp_index, u32 msr, u64 data),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1535) 	TP_ARGS(vcpu_id, vp_index, msr, data),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1536) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1537) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1538) 		__field(int, vcpu_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1539) 		__field(u32, vp_index)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1540) 		__field(u32, msr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1541) 		__field(u64, data)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1542) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1543) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1544) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1545) 		__entry->vcpu_id = vcpu_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1546) 		__entry->vp_index = vp_index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1547) 		__entry->msr = msr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1548) 		__entry->data = data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1549) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1550) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1551) 	TP_printk("vcpu_id %d vp_index %u msr 0x%x data 0x%llx",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1552) 		  __entry->vcpu_id, __entry->vp_index, __entry->msr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1553) 		  __entry->data)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1554) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1555) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1556) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1557)  * Tracepoint for syndbg_get_msr.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1558)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1559) TRACE_EVENT(kvm_hv_syndbg_get_msr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1560) 	TP_PROTO(int vcpu_id, u32 vp_index, u32 msr, u64 data),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1561) 	TP_ARGS(vcpu_id, vp_index, msr, data),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1562) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1563) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1564) 		__field(int, vcpu_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1565) 		__field(u32, vp_index)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1566) 		__field(u32, msr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1567) 		__field(u64, data)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1568) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1569) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1570) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1571) 		__entry->vcpu_id = vcpu_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1572) 		__entry->vp_index = vp_index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1573) 		__entry->msr = msr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1574) 		__entry->data = data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1575) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1576) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1577) 	TP_printk("vcpu_id %d vp_index %u msr 0x%x data 0x%llx",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1578) 		  __entry->vcpu_id, __entry->vp_index, __entry->msr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1579) 		  __entry->data)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1580) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1581) #endif /* _TRACE_KVM_H */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1582) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1583) #undef TRACE_INCLUDE_PATH
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1584) #define TRACE_INCLUDE_PATH ../../arch/x86/kvm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1585) #undef TRACE_INCLUDE_FILE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1586) #define TRACE_INCLUDE_FILE trace
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1587) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1588) /* This part must be outside protection */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1589) #include <trace/define_trace.h>