1 /* SPDX-License-Identifier: GPL-2.0 */ 2 3 #if !defined(__ARM64_KVM_HYPEVENTS_H_) || defined(HYP_EVENT_MULTI_READ) 4 #define __ARM64_KVM_HYPEVENTS_H_ 5 6 #ifdef __KVM_NVHE_HYPERVISOR__ 7 #include <nvhe/trace.h> 8 #endif 9 10 #ifndef __HYP_ENTER_EXIT_REASON 11 #define __HYP_ENTER_EXIT_REASON 12 enum hyp_enter_exit_reason { 13 HYP_REASON_SMC, 14 HYP_REASON_HVC, 15 HYP_REASON_SYS, 16 HYP_REASON_PSCI, 17 HYP_REASON_HOST_ABORT, 18 HYP_REASON_GUEST_EXIT, 19 HYP_REASON_ERET_HOST, 20 HYP_REASON_ERET_GUEST, 21 HYP_REASON_UNKNOWN /* Must be last */ 22 }; 23 #endif 24 25 HYP_EVENT(hyp_enter, 26 HE_PROTO(struct kvm_cpu_context *host_ctxt, u8 reason), 27 HE_STRUCT( 28 he_field(u8, reason) 29 he_field(pid_t, vcpu) 30 ), 31 HE_ASSIGN( 32 __entry->reason = reason; 33 __entry->vcpu = __tracing_get_vcpu_pid(host_ctxt); 34 ), 35 HE_PRINTK("reason=%s vcpu=%d", __hyp_enter_exit_reason_str(__entry->reason), __entry->vcpu) 36 ); 37 38 HYP_EVENT(hyp_exit, 39 HE_PROTO(struct kvm_cpu_context *host_ctxt, u8 reason), 40 HE_STRUCT( 41 he_field(u8, reason) 42 he_field(pid_t, vcpu) 43 ), 44 HE_ASSIGN( 45 __entry->reason = reason; 46 __entry->vcpu = __tracing_get_vcpu_pid(host_ctxt); 47 ), 48 HE_PRINTK("reason=%s vcpu=%d", __hyp_enter_exit_reason_str(__entry->reason), __entry->vcpu) 49 ); 50 51 HYP_EVENT(selftest, 52 HE_PROTO(u64 id), 53 HE_STRUCT( 54 he_field(u64, id) 55 ), 56 HE_ASSIGN( 57 __entry->id = id; 58 ), 59 RE_PRINTK("id=%llu", __entry->id) 60 ); 61 #endif 62