| xj | b04a402 | 2021-11-25 15:01:52 +0800 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0 */ | 
|  | 2 | #if !defined(_TRACE_KVM_H) || defined(TRACE_HEADER_MULTI_READ) | 
|  | 3 | #define _TRACE_KVM_H | 
|  | 4 |  | 
|  | 5 | #include <linux/tracepoint.h> | 
|  | 6 |  | 
|  | 7 | #undef TRACE_SYSTEM | 
|  | 8 | #define TRACE_SYSTEM kvm | 
|  | 9 |  | 
|  | 10 | /* | 
|  | 11 | * Tracepoint for guest mode entry. | 
|  | 12 | */ | 
|  | 13 | TRACE_EVENT(kvm_ppc_instr, | 
|  | 14 | TP_PROTO(unsigned int inst, unsigned long _pc, unsigned int emulate), | 
|  | 15 | TP_ARGS(inst, _pc, emulate), | 
|  | 16 |  | 
|  | 17 | TP_STRUCT__entry( | 
|  | 18 | __field(	unsigned int,	inst		) | 
|  | 19 | __field(	unsigned long,	pc		) | 
|  | 20 | __field(	unsigned int,	emulate		) | 
|  | 21 | ), | 
|  | 22 |  | 
|  | 23 | TP_fast_assign( | 
|  | 24 | __entry->inst		= inst; | 
|  | 25 | __entry->pc		= _pc; | 
|  | 26 | __entry->emulate	= emulate; | 
|  | 27 | ), | 
|  | 28 |  | 
|  | 29 | TP_printk("inst %u pc 0x%lx emulate %u\n", | 
|  | 30 | __entry->inst, __entry->pc, __entry->emulate) | 
|  | 31 | ); | 
|  | 32 |  | 
|  | 33 | TRACE_EVENT(kvm_stlb_inval, | 
|  | 34 | TP_PROTO(unsigned int stlb_index), | 
|  | 35 | TP_ARGS(stlb_index), | 
|  | 36 |  | 
|  | 37 | TP_STRUCT__entry( | 
|  | 38 | __field(	unsigned int,	stlb_index	) | 
|  | 39 | ), | 
|  | 40 |  | 
|  | 41 | TP_fast_assign( | 
|  | 42 | __entry->stlb_index	= stlb_index; | 
|  | 43 | ), | 
|  | 44 |  | 
|  | 45 | TP_printk("stlb_index %u", __entry->stlb_index) | 
|  | 46 | ); | 
|  | 47 |  | 
|  | 48 | TRACE_EVENT(kvm_stlb_write, | 
|  | 49 | TP_PROTO(unsigned int victim, unsigned int tid, unsigned int word0, | 
|  | 50 | unsigned int word1, unsigned int word2), | 
|  | 51 | TP_ARGS(victim, tid, word0, word1, word2), | 
|  | 52 |  | 
|  | 53 | TP_STRUCT__entry( | 
|  | 54 | __field(	unsigned int,	victim		) | 
|  | 55 | __field(	unsigned int,	tid		) | 
|  | 56 | __field(	unsigned int,	word0		) | 
|  | 57 | __field(	unsigned int,	word1		) | 
|  | 58 | __field(	unsigned int,	word2		) | 
|  | 59 | ), | 
|  | 60 |  | 
|  | 61 | TP_fast_assign( | 
|  | 62 | __entry->victim		= victim; | 
|  | 63 | __entry->tid		= tid; | 
|  | 64 | __entry->word0		= word0; | 
|  | 65 | __entry->word1		= word1; | 
|  | 66 | __entry->word2		= word2; | 
|  | 67 | ), | 
|  | 68 |  | 
|  | 69 | TP_printk("victim %u tid %u w0 %u w1 %u w2 %u", | 
|  | 70 | __entry->victim, __entry->tid, __entry->word0, | 
|  | 71 | __entry->word1, __entry->word2) | 
|  | 72 | ); | 
|  | 73 |  | 
|  | 74 | TRACE_EVENT(kvm_gtlb_write, | 
|  | 75 | TP_PROTO(unsigned int gtlb_index, unsigned int tid, unsigned int word0, | 
|  | 76 | unsigned int word1, unsigned int word2), | 
|  | 77 | TP_ARGS(gtlb_index, tid, word0, word1, word2), | 
|  | 78 |  | 
|  | 79 | TP_STRUCT__entry( | 
|  | 80 | __field(	unsigned int,	gtlb_index	) | 
|  | 81 | __field(	unsigned int,	tid		) | 
|  | 82 | __field(	unsigned int,	word0		) | 
|  | 83 | __field(	unsigned int,	word1		) | 
|  | 84 | __field(	unsigned int,	word2		) | 
|  | 85 | ), | 
|  | 86 |  | 
|  | 87 | TP_fast_assign( | 
|  | 88 | __entry->gtlb_index	= gtlb_index; | 
|  | 89 | __entry->tid		= tid; | 
|  | 90 | __entry->word0		= word0; | 
|  | 91 | __entry->word1		= word1; | 
|  | 92 | __entry->word2		= word2; | 
|  | 93 | ), | 
|  | 94 |  | 
|  | 95 | TP_printk("gtlb_index %u tid %u w0 %u w1 %u w2 %u", | 
|  | 96 | __entry->gtlb_index, __entry->tid, __entry->word0, | 
|  | 97 | __entry->word1, __entry->word2) | 
|  | 98 | ); | 
|  | 99 |  | 
|  | 100 | TRACE_EVENT(kvm_check_requests, | 
|  | 101 | TP_PROTO(struct kvm_vcpu *vcpu), | 
|  | 102 | TP_ARGS(vcpu), | 
|  | 103 |  | 
|  | 104 | TP_STRUCT__entry( | 
|  | 105 | __field(	__u32,	cpu_nr		) | 
|  | 106 | __field(	__u32,	requests	) | 
|  | 107 | ), | 
|  | 108 |  | 
|  | 109 | TP_fast_assign( | 
|  | 110 | __entry->cpu_nr		= vcpu->vcpu_id; | 
|  | 111 | __entry->requests	= vcpu->requests; | 
|  | 112 | ), | 
|  | 113 |  | 
|  | 114 | TP_printk("vcpu=%x requests=%x", | 
|  | 115 | __entry->cpu_nr, __entry->requests) | 
|  | 116 | ); | 
|  | 117 |  | 
|  | 118 | #endif /* _TRACE_KVM_H */ | 
|  | 119 |  | 
|  | 120 | /* This part must be outside protection */ | 
|  | 121 | #undef TRACE_INCLUDE_PATH | 
|  | 122 | #undef TRACE_INCLUDE_FILE | 
|  | 123 |  | 
|  | 124 | #define TRACE_INCLUDE_PATH . | 
|  | 125 | #define TRACE_INCLUDE_FILE trace | 
|  | 126 |  | 
|  | 127 | #include <trace/define_trace.h> |