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_ARM_ARM64_KVM_H) || defined(TRACE_HEADER_MULTI_READ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3) #define _TRACE_ARM_ARM64_KVM_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) #include <kvm/arm_arch_timer.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) #include <linux/tracepoint.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) #undef TRACE_SYSTEM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) #define TRACE_SYSTEM kvm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12)  * Tracepoints for entry/exit to guest
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) TRACE_EVENT(kvm_entry,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) 	TP_PROTO(unsigned long vcpu_pc),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) 	TP_ARGS(vcpu_pc),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) 		__field(	unsigned long,	vcpu_pc		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) 		__entry->vcpu_pc		= vcpu_pc;
^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_printk("PC: 0x%016lx", __entry->vcpu_pc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) TRACE_EVENT(kvm_exit,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) 	TP_PROTO(int ret, unsigned int esr_ec, unsigned long vcpu_pc),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 	TP_ARGS(ret, esr_ec, vcpu_pc),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 		__field(	int,		ret		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) 		__field(	unsigned int,	esr_ec		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 		__field(	unsigned long,	vcpu_pc		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 		__entry->ret			= ARM_EXCEPTION_CODE(ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 		__entry->esr_ec = ARM_EXCEPTION_IS_TRAP(ret) ? esr_ec : 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 		__entry->vcpu_pc		= vcpu_pc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 	TP_printk("%s: HSR_EC: 0x%04x (%s), PC: 0x%016lx",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 		  __print_symbolic(__entry->ret, kvm_arm_exception_type),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 		  __entry->esr_ec,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 		  __print_symbolic(__entry->esr_ec, kvm_arm_exception_class),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 		  __entry->vcpu_pc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) TRACE_EVENT(kvm_guest_fault,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 	TP_PROTO(unsigned long vcpu_pc, unsigned long hsr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 		 unsigned long hxfar,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 		 unsigned long long ipa),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 	TP_ARGS(vcpu_pc, hsr, hxfar, ipa),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 		__field(	unsigned long,	vcpu_pc		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 		__field(	unsigned long,	hsr		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 		__field(	unsigned long,	hxfar		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 		__field(   unsigned long long,	ipa		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 		__entry->vcpu_pc		= vcpu_pc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 		__entry->hsr			= hsr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 		__entry->hxfar			= hxfar;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 		__entry->ipa			= ipa;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 	TP_printk("ipa %#llx, hsr %#08lx, hxfar %#08lx, pc %#016lx",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 		  __entry->ipa, __entry->hsr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 		  __entry->hxfar, __entry->vcpu_pc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) TRACE_EVENT(kvm_access_fault,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 	TP_PROTO(unsigned long ipa),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 	TP_ARGS(ipa),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 		__field(	unsigned long,	ipa		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 		__entry->ipa		= ipa;
^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("IPA: %lx", __entry->ipa)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) TRACE_EVENT(kvm_irq_line,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 	TP_PROTO(unsigned int type, int vcpu_idx, int irq_num, int level),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 	TP_ARGS(type, vcpu_idx, irq_num, level),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 		__field(	unsigned int,	type		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 		__field(	int,		vcpu_idx	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 		__field(	int,		irq_num		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) 		__field(	int,		level		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 		__entry->type		= type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 		__entry->vcpu_idx	= vcpu_idx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 		__entry->irq_num	= irq_num;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 		__entry->level		= level;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 	TP_printk("Inject %s interrupt (%d), vcpu->idx: %d, num: %d, level: %d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 		  (__entry->type == KVM_ARM_IRQ_TYPE_CPU) ? "CPU" :
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 		  (__entry->type == KVM_ARM_IRQ_TYPE_PPI) ? "VGIC PPI" :
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) 		  (__entry->type == KVM_ARM_IRQ_TYPE_SPI) ? "VGIC SPI" : "UNKNOWN",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 		  __entry->type, __entry->vcpu_idx, __entry->irq_num, __entry->level)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) TRACE_EVENT(kvm_mmio_emulate,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) 	TP_PROTO(unsigned long vcpu_pc, unsigned long instr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) 		 unsigned long cpsr),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 	TP_ARGS(vcpu_pc, instr, cpsr),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) 		__field(	unsigned long,	vcpu_pc		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 		__field(	unsigned long,	instr		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) 		__field(	unsigned long,	cpsr		)
^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_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) 		__entry->vcpu_pc		= vcpu_pc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) 		__entry->instr			= instr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 		__entry->cpsr			= cpsr;
^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) 	TP_printk("Emulate MMIO at: 0x%016lx (instr: %08lx, cpsr: %08lx)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) 		  __entry->vcpu_pc, __entry->instr, __entry->cpsr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) TRACE_EVENT(kvm_unmap_hva_range,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) 	TP_PROTO(unsigned long start, unsigned long end),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) 	TP_ARGS(start, end),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) 		__field(	unsigned long,	start		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) 		__field(	unsigned long,	end		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) 		__entry->start		= start;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) 		__entry->end		= end;
^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) 	TP_printk("mmu notifier unmap range: %#016lx -- %#016lx",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) 		  __entry->start, __entry->end)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) TRACE_EVENT(kvm_set_spte_hva,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) 	TP_PROTO(unsigned long hva),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) 	TP_ARGS(hva),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) 		__field(	unsigned long,	hva		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) 		__entry->hva		= hva;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) 	TP_printk("mmu notifier set pte hva: %#016lx", __entry->hva)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) TRACE_EVENT(kvm_age_hva,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) 	TP_PROTO(unsigned long start, unsigned long end),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) 	TP_ARGS(start, end),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) 		__field(	unsigned long,	start		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) 		__field(	unsigned long,	end		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) 		__entry->start		= start;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) 		__entry->end		= end;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) 	TP_printk("mmu notifier age hva: %#016lx -- %#016lx",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) 		  __entry->start, __entry->end)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) TRACE_EVENT(kvm_test_age_hva,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) 	TP_PROTO(unsigned long hva),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) 	TP_ARGS(hva),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) 		__field(	unsigned long,	hva		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) 		__entry->hva		= hva;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) 	TP_printk("mmu notifier test age hva: %#016lx", __entry->hva)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) TRACE_EVENT(kvm_set_way_flush,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) 	    TP_PROTO(unsigned long vcpu_pc, bool cache),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) 	    TP_ARGS(vcpu_pc, cache),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) 	    TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) 		    __field(	unsigned long,	vcpu_pc		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) 		    __field(	bool,		cache		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) 	    ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) 	    TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) 		    __entry->vcpu_pc		= vcpu_pc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) 		    __entry->cache		= cache;
^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("S/W flush at 0x%016lx (cache %s)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) 		      __entry->vcpu_pc, __entry->cache ? "on" : "off")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) TRACE_EVENT(kvm_toggle_cache,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) 	    TP_PROTO(unsigned long vcpu_pc, bool was, bool now),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) 	    TP_ARGS(vcpu_pc, was, now),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) 	    TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) 		    __field(	unsigned long,	vcpu_pc		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) 		    __field(	bool,		was		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) 		    __field(	bool,		now		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) 	    ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) 	    TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) 		    __entry->vcpu_pc		= vcpu_pc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) 		    __entry->was		= was;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) 		    __entry->now		= now;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) 	    ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) 	    TP_printk("VM op at 0x%016lx (cache was %s, now %s)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) 		      __entry->vcpu_pc, __entry->was ? "on" : "off",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) 		      __entry->now ? "on" : "off")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244)  * Tracepoints for arch_timer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) TRACE_EVENT(kvm_timer_update_irq,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) 	TP_PROTO(unsigned long vcpu_id, __u32 irq, int level),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) 	TP_ARGS(vcpu_id, irq, level),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) 		__field(	unsigned long,	vcpu_id	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) 		__field(	__u32,		irq	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) 		__field(	int,		level	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) 		__entry->vcpu_id	= vcpu_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) 		__entry->irq		= irq;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) 		__entry->level		= level;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) 	TP_printk("VCPU: %ld, IRQ %d, level %d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) 		  __entry->vcpu_id, __entry->irq, __entry->level)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) TRACE_EVENT(kvm_get_timer_map,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) 	TP_PROTO(unsigned long vcpu_id, struct timer_map *map),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) 	TP_ARGS(vcpu_id, map),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) 		__field(	unsigned long,		vcpu_id	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) 		__field(	int,			direct_vtimer	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) 		__field(	int,			direct_ptimer	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) 		__field(	int,			emul_ptimer	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) 		__entry->vcpu_id		= vcpu_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) 		__entry->direct_vtimer		= arch_timer_ctx_index(map->direct_vtimer);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) 		__entry->direct_ptimer =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) 			(map->direct_ptimer) ? arch_timer_ctx_index(map->direct_ptimer) : -1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) 		__entry->emul_ptimer =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) 			(map->emul_ptimer) ? arch_timer_ctx_index(map->emul_ptimer) : -1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) 	TP_printk("VCPU: %ld, dv: %d, dp: %d, ep: %d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) 		  __entry->vcpu_id,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) 		  __entry->direct_vtimer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) 		  __entry->direct_ptimer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) 		  __entry->emul_ptimer)
^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) TRACE_EVENT(kvm_timer_save_state,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) 	TP_PROTO(struct arch_timer_context *ctx),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) 	TP_ARGS(ctx),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) 		__field(	unsigned long,		ctl		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) 		__field(	unsigned long long,	cval		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) 		__field(	int,			timer_idx	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) 		__entry->ctl			= timer_get_ctl(ctx);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) 		__entry->cval			= timer_get_cval(ctx);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) 		__entry->timer_idx		= arch_timer_ctx_index(ctx);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) 	TP_printk("   CTL: %#08lx CVAL: %#16llx arch_timer_ctx_index: %d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) 		  __entry->ctl,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) 		  __entry->cval,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) 		  __entry->timer_idx)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) TRACE_EVENT(kvm_timer_restore_state,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) 	TP_PROTO(struct arch_timer_context *ctx),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) 	TP_ARGS(ctx),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) 		__field(	unsigned long,		ctl		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) 		__field(	unsigned long long,	cval		)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) 		__field(	int,			timer_idx	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) 		__entry->ctl			= timer_get_ctl(ctx);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) 		__entry->cval			= timer_get_cval(ctx);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) 		__entry->timer_idx		= arch_timer_ctx_index(ctx);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) 	TP_printk("CTL: %#08lx CVAL: %#16llx arch_timer_ctx_index: %d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) 		  __entry->ctl,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) 		  __entry->cval,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) 		  __entry->timer_idx)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) TRACE_EVENT(kvm_timer_hrtimer_expire,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) 	TP_PROTO(struct arch_timer_context *ctx),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) 	TP_ARGS(ctx),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) 	TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) 		__field(	int,			timer_idx	)
^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_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) 		__entry->timer_idx		= arch_timer_ctx_index(ctx);
^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) 	TP_printk("arch_timer_ctx_index: %d", __entry->timer_idx)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) TRACE_EVENT(kvm_timer_emulate,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) 	TP_PROTO(struct arch_timer_context *ctx, bool should_fire),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) 	TP_ARGS(ctx, should_fire),
^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(	int,			timer_idx	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) 		__field(	bool,			should_fire	)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) 	TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) 		__entry->timer_idx		= arch_timer_ctx_index(ctx);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) 		__entry->should_fire		= should_fire;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) 	),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) 	TP_printk("arch_timer_ctx_index: %d (should_fire: %d)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) 		  __entry->timer_idx, __entry->should_fire)
^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) #endif /* _TRACE_ARM_ARM64_KVM_H */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) #undef TRACE_INCLUDE_PATH
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) #define TRACE_INCLUDE_PATH .
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) #undef TRACE_INCLUDE_FILE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) #define TRACE_INCLUDE_FILE trace_arm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) /* This part must be outside protection */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) #include <trace/define_trace.h>