~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/loongarch/kvm/trace.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0 */
  2 /*
  3  * Copyright (C) 2020-2023 Loongson Technology Corporation Limited
  4  */
  5 
  6 #if !defined(_TRACE_KVM_H) || defined(TRACE_HEADER_MULTI_READ)
  7 #define _TRACE_KVM_H
  8 
  9 #include <linux/tracepoint.h>
 10 #include <asm/kvm_csr.h>
 11 
 12 #undef  TRACE_SYSTEM
 13 #define TRACE_SYSTEM    kvm
 14 
 15 /*
 16  * Tracepoints for VM enters
 17  */
 18 DECLARE_EVENT_CLASS(kvm_transition,
 19         TP_PROTO(struct kvm_vcpu *vcpu),
 20         TP_ARGS(vcpu),
 21         TP_STRUCT__entry(
 22                 __field(unsigned int, vcpu_id)
 23                 __field(unsigned long, pc)
 24         ),
 25 
 26         TP_fast_assign(
 27                 __entry->vcpu_id = vcpu->vcpu_id;
 28                 __entry->pc = vcpu->arch.pc;
 29         ),
 30 
 31         TP_printk("vcpu %u PC: 0x%08lx", __entry->vcpu_id, __entry->pc)
 32 );
 33 
 34 DEFINE_EVENT(kvm_transition, kvm_enter,
 35              TP_PROTO(struct kvm_vcpu *vcpu),
 36              TP_ARGS(vcpu));
 37 
 38 DEFINE_EVENT(kvm_transition, kvm_reenter,
 39              TP_PROTO(struct kvm_vcpu *vcpu),
 40              TP_ARGS(vcpu));
 41 
 42 DEFINE_EVENT(kvm_transition, kvm_out,
 43              TP_PROTO(struct kvm_vcpu *vcpu),
 44              TP_ARGS(vcpu));
 45 
 46 /* Further exit reasons */
 47 #define KVM_TRACE_EXIT_IDLE             64
 48 #define KVM_TRACE_EXIT_CACHE            65
 49 
 50 /* Tracepoints for VM exits */
 51 #define kvm_trace_symbol_exit_types                     \
 52         { KVM_TRACE_EXIT_IDLE,          "IDLE" },       \
 53         { KVM_TRACE_EXIT_CACHE,         "CACHE" }
 54 
 55 DECLARE_EVENT_CLASS(kvm_exit,
 56             TP_PROTO(struct kvm_vcpu *vcpu, unsigned int reason),
 57             TP_ARGS(vcpu, reason),
 58             TP_STRUCT__entry(
 59                         __field(unsigned int, vcpu_id)
 60                         __field(unsigned long, pc)
 61                         __field(unsigned int, reason)
 62             ),
 63 
 64             TP_fast_assign(
 65                         __entry->vcpu_id = vcpu->vcpu_id;
 66                         __entry->pc = vcpu->arch.pc;
 67                         __entry->reason = reason;
 68             ),
 69 
 70             TP_printk("vcpu %u [%s] PC: 0x%08lx",
 71                         __entry->vcpu_id,
 72                         __print_symbolic(__entry->reason,
 73                                 kvm_trace_symbol_exit_types),
 74                         __entry->pc)
 75 );
 76 
 77 DEFINE_EVENT(kvm_exit, kvm_exit_idle,
 78              TP_PROTO(struct kvm_vcpu *vcpu, unsigned int reason),
 79              TP_ARGS(vcpu, reason));
 80 
 81 DEFINE_EVENT(kvm_exit, kvm_exit_cache,
 82              TP_PROTO(struct kvm_vcpu *vcpu, unsigned int reason),
 83              TP_ARGS(vcpu, reason));
 84 
 85 DEFINE_EVENT(kvm_exit, kvm_exit,
 86              TP_PROTO(struct kvm_vcpu *vcpu, unsigned int reason),
 87              TP_ARGS(vcpu, reason));
 88 
 89 TRACE_EVENT(kvm_exit_gspr,
 90             TP_PROTO(struct kvm_vcpu *vcpu, unsigned int inst_word),
 91             TP_ARGS(vcpu, inst_word),
 92             TP_STRUCT__entry(
 93                         __field(unsigned int, vcpu_id)
 94                         __field(unsigned int, inst_word)
 95             ),
 96 
 97             TP_fast_assign(
 98                         __entry->vcpu_id = vcpu->vcpu_id;
 99                         __entry->inst_word = inst_word;
100             ),
101 
102             TP_printk("vcpu %u Inst word: 0x%08x", __entry->vcpu_id,
103                         __entry->inst_word)
104 );
105 
106 #define KVM_TRACE_AUX_SAVE              0
107 #define KVM_TRACE_AUX_RESTORE           1
108 #define KVM_TRACE_AUX_ENABLE            2
109 #define KVM_TRACE_AUX_DISABLE           3
110 #define KVM_TRACE_AUX_DISCARD           4
111 
112 #define KVM_TRACE_AUX_FPU               1
113 #define KVM_TRACE_AUX_LSX               2
114 #define KVM_TRACE_AUX_LASX              3
115 
116 #define kvm_trace_symbol_aux_op                         \
117         { KVM_TRACE_AUX_SAVE,           "save" },       \
118         { KVM_TRACE_AUX_RESTORE,        "restore" },    \
119         { KVM_TRACE_AUX_ENABLE,         "enable" },     \
120         { KVM_TRACE_AUX_DISABLE,        "disable" },    \
121         { KVM_TRACE_AUX_DISCARD,        "discard" }
122 
123 #define kvm_trace_symbol_aux_state                      \
124         { KVM_TRACE_AUX_FPU,     "FPU" },               \
125         { KVM_TRACE_AUX_LSX,     "LSX" },               \
126         { KVM_TRACE_AUX_LASX,    "LASX" }
127 
128 TRACE_EVENT(kvm_aux,
129             TP_PROTO(struct kvm_vcpu *vcpu, unsigned int op,
130                      unsigned int state),
131             TP_ARGS(vcpu, op, state),
132             TP_STRUCT__entry(
133                         __field(unsigned long, pc)
134                         __field(u8, op)
135                         __field(u8, state)
136             ),
137 
138             TP_fast_assign(
139                         __entry->pc = vcpu->arch.pc;
140                         __entry->op = op;
141                         __entry->state = state;
142             ),
143 
144             TP_printk("%s %s PC: 0x%08lx",
145                       __print_symbolic(__entry->op,
146                                        kvm_trace_symbol_aux_op),
147                       __print_symbolic(__entry->state,
148                                        kvm_trace_symbol_aux_state),
149                       __entry->pc)
150 );
151 
152 TRACE_EVENT(kvm_vpid_change,
153             TP_PROTO(struct kvm_vcpu *vcpu, unsigned long vpid),
154             TP_ARGS(vcpu, vpid),
155             TP_STRUCT__entry(
156                         __field(unsigned long, vpid)
157             ),
158 
159             TP_fast_assign(
160                         __entry->vpid = vpid;
161             ),
162 
163             TP_printk("VPID: 0x%08lx", __entry->vpid)
164 );
165 
166 #endif /* _TRACE_KVM_H */
167 
168 #undef TRACE_INCLUDE_PATH
169 #define TRACE_INCLUDE_PATH ../../arch/loongarch/kvm
170 #undef TRACE_INCLUDE_FILE
171 #define TRACE_INCLUDE_FILE trace
172 
173 /* This part must be outside protection */
174 #include <trace/define_trace.h>
175 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php