^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>