1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 2dba291f2SAneesh Kumar K.V #if !defined(_TRACE_KVM_BOOKE_H) || defined(TRACE_HEADER_MULTI_READ) 3dba291f2SAneesh Kumar K.V #define _TRACE_KVM_BOOKE_H 4dba291f2SAneesh Kumar K.V 5dba291f2SAneesh Kumar K.V #include <linux/tracepoint.h> 6dba291f2SAneesh Kumar K.V 7dba291f2SAneesh Kumar K.V #undef TRACE_SYSTEM 8dba291f2SAneesh Kumar K.V #define TRACE_SYSTEM kvm_booke 9dba291f2SAneesh Kumar K.V 10dba291f2SAneesh Kumar K.V #define kvm_trace_symbol_exit \ 11dba291f2SAneesh Kumar K.V {0, "CRITICAL"}, \ 12dba291f2SAneesh Kumar K.V {1, "MACHINE_CHECK"}, \ 13dba291f2SAneesh Kumar K.V {2, "DATA_STORAGE"}, \ 14dba291f2SAneesh Kumar K.V {3, "INST_STORAGE"}, \ 15dba291f2SAneesh Kumar K.V {4, "EXTERNAL"}, \ 16dba291f2SAneesh Kumar K.V {5, "ALIGNMENT"}, \ 17dba291f2SAneesh Kumar K.V {6, "PROGRAM"}, \ 18dba291f2SAneesh Kumar K.V {7, "FP_UNAVAIL"}, \ 19dba291f2SAneesh Kumar K.V {8, "SYSCALL"}, \ 20dba291f2SAneesh Kumar K.V {9, "AP_UNAVAIL"}, \ 21dba291f2SAneesh Kumar K.V {10, "DECREMENTER"}, \ 22dba291f2SAneesh Kumar K.V {11, "FIT"}, \ 23dba291f2SAneesh Kumar K.V {12, "WATCHDOG"}, \ 24dba291f2SAneesh Kumar K.V {13, "DTLB_MISS"}, \ 25dba291f2SAneesh Kumar K.V {14, "ITLB_MISS"}, \ 26dba291f2SAneesh Kumar K.V {15, "DEBUG"}, \ 27dba291f2SAneesh Kumar K.V {32, "SPE_UNAVAIL"}, \ 28dba291f2SAneesh Kumar K.V {33, "SPE_FP_DATA"}, \ 29dba291f2SAneesh Kumar K.V {34, "SPE_FP_ROUND"}, \ 30dba291f2SAneesh Kumar K.V {35, "PERFORMANCE_MONITOR"}, \ 31dba291f2SAneesh Kumar K.V {36, "DOORBELL"}, \ 32dba291f2SAneesh Kumar K.V {37, "DOORBELL_CRITICAL"}, \ 33dba291f2SAneesh Kumar K.V {38, "GUEST_DBELL"}, \ 34dba291f2SAneesh Kumar K.V {39, "GUEST_DBELL_CRIT"}, \ 35dba291f2SAneesh Kumar K.V {40, "HV_SYSCALL"}, \ 36dba291f2SAneesh Kumar K.V {41, "HV_PRIV"} 37dba291f2SAneesh Kumar K.V 38dba291f2SAneesh Kumar K.V TRACE_EVENT(kvm_exit, 39dba291f2SAneesh Kumar K.V TP_PROTO(unsigned int exit_nr, struct kvm_vcpu *vcpu), 40dba291f2SAneesh Kumar K.V TP_ARGS(exit_nr, vcpu), 41dba291f2SAneesh Kumar K.V 42dba291f2SAneesh Kumar K.V TP_STRUCT__entry( 43dba291f2SAneesh Kumar K.V __field( unsigned int, exit_nr ) 44dba291f2SAneesh Kumar K.V __field( unsigned long, pc ) 45dba291f2SAneesh Kumar K.V __field( unsigned long, msr ) 46dba291f2SAneesh Kumar K.V __field( unsigned long, dar ) 47dba291f2SAneesh Kumar K.V __field( unsigned long, last_inst ) 48dba291f2SAneesh Kumar K.V ), 49dba291f2SAneesh Kumar K.V 50dba291f2SAneesh Kumar K.V TP_fast_assign( 51dba291f2SAneesh Kumar K.V __entry->exit_nr = exit_nr; 52dba291f2SAneesh Kumar K.V __entry->pc = kvmppc_get_pc(vcpu); 53dba291f2SAneesh Kumar K.V __entry->dar = kvmppc_get_fault_dar(vcpu); 54dba291f2SAneesh Kumar K.V __entry->msr = vcpu->arch.shared->msr; 55dba291f2SAneesh Kumar K.V __entry->last_inst = vcpu->arch.last_inst; 56dba291f2SAneesh Kumar K.V ), 57dba291f2SAneesh Kumar K.V 58dba291f2SAneesh Kumar K.V TP_printk("exit=%s" 59dba291f2SAneesh Kumar K.V " | pc=0x%lx" 60dba291f2SAneesh Kumar K.V " | msr=0x%lx" 61dba291f2SAneesh Kumar K.V " | dar=0x%lx" 62dba291f2SAneesh Kumar K.V " | last_inst=0x%lx" 63dba291f2SAneesh Kumar K.V , 64dba291f2SAneesh Kumar K.V __print_symbolic(__entry->exit_nr, kvm_trace_symbol_exit), 65dba291f2SAneesh Kumar K.V __entry->pc, 66dba291f2SAneesh Kumar K.V __entry->msr, 67dba291f2SAneesh Kumar K.V __entry->dar, 68dba291f2SAneesh Kumar K.V __entry->last_inst 69dba291f2SAneesh Kumar K.V ) 70dba291f2SAneesh Kumar K.V ); 71dba291f2SAneesh Kumar K.V 72dba291f2SAneesh Kumar K.V TRACE_EVENT(kvm_booke206_stlb_write, 73dba291f2SAneesh Kumar K.V TP_PROTO(__u32 mas0, __u32 mas8, __u32 mas1, __u64 mas2, __u64 mas7_3), 74dba291f2SAneesh Kumar K.V TP_ARGS(mas0, mas8, mas1, mas2, mas7_3), 75dba291f2SAneesh Kumar K.V 76dba291f2SAneesh Kumar K.V TP_STRUCT__entry( 77dba291f2SAneesh Kumar K.V __field( __u32, mas0 ) 78dba291f2SAneesh Kumar K.V __field( __u32, mas8 ) 79dba291f2SAneesh Kumar K.V __field( __u32, mas1 ) 80dba291f2SAneesh Kumar K.V __field( __u64, mas2 ) 81dba291f2SAneesh Kumar K.V __field( __u64, mas7_3 ) 82dba291f2SAneesh Kumar K.V ), 83dba291f2SAneesh Kumar K.V 84dba291f2SAneesh Kumar K.V TP_fast_assign( 85dba291f2SAneesh Kumar K.V __entry->mas0 = mas0; 86dba291f2SAneesh Kumar K.V __entry->mas8 = mas8; 87dba291f2SAneesh Kumar K.V __entry->mas1 = mas1; 88dba291f2SAneesh Kumar K.V __entry->mas2 = mas2; 89dba291f2SAneesh Kumar K.V __entry->mas7_3 = mas7_3; 90dba291f2SAneesh Kumar K.V ), 91dba291f2SAneesh Kumar K.V 92dba291f2SAneesh Kumar K.V TP_printk("mas0=%x mas8=%x mas1=%x mas2=%llx mas7_3=%llx", 93dba291f2SAneesh Kumar K.V __entry->mas0, __entry->mas8, __entry->mas1, 94dba291f2SAneesh Kumar K.V __entry->mas2, __entry->mas7_3) 95dba291f2SAneesh Kumar K.V ); 96dba291f2SAneesh Kumar K.V 97dba291f2SAneesh Kumar K.V TRACE_EVENT(kvm_booke206_gtlb_write, 98dba291f2SAneesh Kumar K.V TP_PROTO(__u32 mas0, __u32 mas1, __u64 mas2, __u64 mas7_3), 99dba291f2SAneesh Kumar K.V TP_ARGS(mas0, mas1, mas2, mas7_3), 100dba291f2SAneesh Kumar K.V 101dba291f2SAneesh Kumar K.V TP_STRUCT__entry( 102dba291f2SAneesh Kumar K.V __field( __u32, mas0 ) 103dba291f2SAneesh Kumar K.V __field( __u32, mas1 ) 104dba291f2SAneesh Kumar K.V __field( __u64, mas2 ) 105dba291f2SAneesh Kumar K.V __field( __u64, mas7_3 ) 106dba291f2SAneesh Kumar K.V ), 107dba291f2SAneesh Kumar K.V 108dba291f2SAneesh Kumar K.V TP_fast_assign( 109dba291f2SAneesh Kumar K.V __entry->mas0 = mas0; 110dba291f2SAneesh Kumar K.V __entry->mas1 = mas1; 111dba291f2SAneesh Kumar K.V __entry->mas2 = mas2; 112dba291f2SAneesh Kumar K.V __entry->mas7_3 = mas7_3; 113dba291f2SAneesh Kumar K.V ), 114dba291f2SAneesh Kumar K.V 115dba291f2SAneesh Kumar K.V TP_printk("mas0=%x mas1=%x mas2=%llx mas7_3=%llx", 116dba291f2SAneesh Kumar K.V __entry->mas0, __entry->mas1, 117dba291f2SAneesh Kumar K.V __entry->mas2, __entry->mas7_3) 118dba291f2SAneesh Kumar K.V ); 119dba291f2SAneesh Kumar K.V 120dba291f2SAneesh Kumar K.V TRACE_EVENT(kvm_booke206_ref_release, 121dba291f2SAneesh Kumar K.V TP_PROTO(__u64 pfn, __u32 flags), 122dba291f2SAneesh Kumar K.V TP_ARGS(pfn, flags), 123dba291f2SAneesh Kumar K.V 124dba291f2SAneesh Kumar K.V TP_STRUCT__entry( 125dba291f2SAneesh Kumar K.V __field( __u64, pfn ) 126dba291f2SAneesh Kumar K.V __field( __u32, flags ) 127dba291f2SAneesh Kumar K.V ), 128dba291f2SAneesh Kumar K.V 129dba291f2SAneesh Kumar K.V TP_fast_assign( 130dba291f2SAneesh Kumar K.V __entry->pfn = pfn; 131dba291f2SAneesh Kumar K.V __entry->flags = flags; 132dba291f2SAneesh Kumar K.V ), 133dba291f2SAneesh Kumar K.V 134dba291f2SAneesh Kumar K.V TP_printk("pfn=%llx flags=%x", 135dba291f2SAneesh Kumar K.V __entry->pfn, __entry->flags) 136dba291f2SAneesh Kumar K.V ); 137dba291f2SAneesh Kumar K.V 138b6b61257SAlexander Graf #ifdef CONFIG_SPE_POSSIBLE 139b6b61257SAlexander Graf #define kvm_trace_symbol_irqprio_spe \ 140b6b61257SAlexander Graf {BOOKE_IRQPRIO_SPE_UNAVAIL, "SPE_UNAVAIL"}, \ 141b6b61257SAlexander Graf {BOOKE_IRQPRIO_SPE_FP_DATA, "SPE_FP_DATA"}, \ 142b6b61257SAlexander Graf {BOOKE_IRQPRIO_SPE_FP_ROUND, "SPE_FP_ROUND"}, 143b6b61257SAlexander Graf #else 144b6b61257SAlexander Graf #define kvm_trace_symbol_irqprio_spe 145b6b61257SAlexander Graf #endif 146b6b61257SAlexander Graf 147b6b61257SAlexander Graf #ifdef CONFIG_PPC_E500MC 148b6b61257SAlexander Graf #define kvm_trace_symbol_irqprio_e500mc \ 149b6b61257SAlexander Graf {BOOKE_IRQPRIO_ALTIVEC_UNAVAIL, "ALTIVEC_UNAVAIL"}, \ 150b6b61257SAlexander Graf {BOOKE_IRQPRIO_ALTIVEC_ASSIST, "ALTIVEC_ASSIST"}, 151b6b61257SAlexander Graf #else 152b6b61257SAlexander Graf #define kvm_trace_symbol_irqprio_e500mc 153b6b61257SAlexander Graf #endif 154b6b61257SAlexander Graf 155b6b61257SAlexander Graf #define kvm_trace_symbol_irqprio \ 156b6b61257SAlexander Graf kvm_trace_symbol_irqprio_spe \ 157b6b61257SAlexander Graf kvm_trace_symbol_irqprio_e500mc \ 158b6b61257SAlexander Graf {BOOKE_IRQPRIO_DATA_STORAGE, "DATA_STORAGE"}, \ 159b6b61257SAlexander Graf {BOOKE_IRQPRIO_INST_STORAGE, "INST_STORAGE"}, \ 160b6b61257SAlexander Graf {BOOKE_IRQPRIO_ALIGNMENT, "ALIGNMENT"}, \ 161b6b61257SAlexander Graf {BOOKE_IRQPRIO_PROGRAM, "PROGRAM"}, \ 162b6b61257SAlexander Graf {BOOKE_IRQPRIO_FP_UNAVAIL, "FP_UNAVAIL"}, \ 163b6b61257SAlexander Graf {BOOKE_IRQPRIO_SYSCALL, "SYSCALL"}, \ 164b6b61257SAlexander Graf {BOOKE_IRQPRIO_AP_UNAVAIL, "AP_UNAVAIL"}, \ 165b6b61257SAlexander Graf {BOOKE_IRQPRIO_DTLB_MISS, "DTLB_MISS"}, \ 166b6b61257SAlexander Graf {BOOKE_IRQPRIO_ITLB_MISS, "ITLB_MISS"}, \ 167b6b61257SAlexander Graf {BOOKE_IRQPRIO_MACHINE_CHECK, "MACHINE_CHECK"}, \ 168b6b61257SAlexander Graf {BOOKE_IRQPRIO_DEBUG, "DEBUG"}, \ 169b6b61257SAlexander Graf {BOOKE_IRQPRIO_CRITICAL, "CRITICAL"}, \ 170b6b61257SAlexander Graf {BOOKE_IRQPRIO_WATCHDOG, "WATCHDOG"}, \ 171b6b61257SAlexander Graf {BOOKE_IRQPRIO_EXTERNAL, "EXTERNAL"}, \ 172b6b61257SAlexander Graf {BOOKE_IRQPRIO_FIT, "FIT"}, \ 173b6b61257SAlexander Graf {BOOKE_IRQPRIO_DECREMENTER, "DECREMENTER"}, \ 174b6b61257SAlexander Graf {BOOKE_IRQPRIO_PERFORMANCE_MONITOR, "PERFORMANCE_MONITOR"}, \ 175b6b61257SAlexander Graf {BOOKE_IRQPRIO_EXTERNAL_LEVEL, "EXTERNAL_LEVEL"}, \ 176b6b61257SAlexander Graf {BOOKE_IRQPRIO_DBELL, "DBELL"}, \ 177b6b61257SAlexander Graf {BOOKE_IRQPRIO_DBELL_CRIT, "DBELL_CRIT"} \ 178b6b61257SAlexander Graf 179dba291f2SAneesh Kumar K.V TRACE_EVENT(kvm_booke_queue_irqprio, 180dba291f2SAneesh Kumar K.V TP_PROTO(struct kvm_vcpu *vcpu, unsigned int priority), 181dba291f2SAneesh Kumar K.V TP_ARGS(vcpu, priority), 182dba291f2SAneesh Kumar K.V 183dba291f2SAneesh Kumar K.V TP_STRUCT__entry( 184dba291f2SAneesh Kumar K.V __field( __u32, cpu_nr ) 185dba291f2SAneesh Kumar K.V __field( __u32, priority ) 186dba291f2SAneesh Kumar K.V __field( unsigned long, pending ) 187dba291f2SAneesh Kumar K.V ), 188dba291f2SAneesh Kumar K.V 189dba291f2SAneesh Kumar K.V TP_fast_assign( 190dba291f2SAneesh Kumar K.V __entry->cpu_nr = vcpu->vcpu_id; 191dba291f2SAneesh Kumar K.V __entry->priority = priority; 192dba291f2SAneesh Kumar K.V __entry->pending = vcpu->arch.pending_exceptions; 193dba291f2SAneesh Kumar K.V ), 194dba291f2SAneesh Kumar K.V 195b6b61257SAlexander Graf TP_printk("vcpu=%x prio=%s pending=%lx", 196b6b61257SAlexander Graf __entry->cpu_nr, 197b6b61257SAlexander Graf __print_symbolic(__entry->priority, kvm_trace_symbol_irqprio), 198b6b61257SAlexander Graf __entry->pending) 199dba291f2SAneesh Kumar K.V ); 200dba291f2SAneesh Kumar K.V 201dba291f2SAneesh Kumar K.V #endif 202dba291f2SAneesh Kumar K.V 203dba291f2SAneesh Kumar K.V /* This part must be outside protection */ 204*28c5bcf7SScott Wood 205*28c5bcf7SScott Wood #undef TRACE_INCLUDE_PATH 206*28c5bcf7SScott Wood #undef TRACE_INCLUDE_FILE 207*28c5bcf7SScott Wood 208*28c5bcf7SScott Wood #define TRACE_INCLUDE_PATH . 209*28c5bcf7SScott Wood #define TRACE_INCLUDE_FILE trace_booke 210*28c5bcf7SScott Wood 211dba291f2SAneesh Kumar K.V #include <trace/define_trace.h> 212