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_PSCI, 16 HYP_REASON_HOST_ABORT, 17 HYP_REASON_GUEST_EXIT, 18 HYP_REASON_ERET_HOST, 19 HYP_REASON_ERET_GUEST, 20 HYP_REASON_UNKNOWN /* Must be last */ 21 }; 22 #endif 23 24 HYP_EVENT(hyp_enter, 25 HE_PROTO(struct kvm_cpu_context *host_ctxt, u8 reason), 26 HE_STRUCT( 27 he_field(u8, reason) 28 he_field(pid_t, vcpu) 29 ), 30 HE_ASSIGN( 31 __entry->reason = reason; 32 __entry->vcpu = __tracing_get_vcpu_pid(host_ctxt); 33 ), 34 HE_PRINTK("reason=%s vcpu=%d", __hyp_enter_exit_reason_str(__entry->reason), __entry->vcpu) 35 ); 36 37 HYP_EVENT(hyp_exit, 38 HE_PROTO(struct kvm_cpu_context *host_ctxt, u8 reason), 39 HE_STRUCT( 40 he_field(u8, reason) 41 he_field(pid_t, vcpu) 42 ), 43 HE_ASSIGN( 44 __entry->reason = reason; 45 __entry->vcpu = __tracing_get_vcpu_pid(host_ctxt); 46 ), 47 HE_PRINTK("reason=%s vcpu=%d", __hyp_enter_exit_reason_str(__entry->reason), __entry->vcpu) 48 ); 49 50 HYP_EVENT(selftest, 51 HE_PROTO(u64 id), 52 HE_STRUCT( 53 he_field(u64, id) 54 ), 55 HE_ASSIGN( 56 __entry->id = id; 57 ), 58 RE_PRINTK("id=%llu", __entry->id) 59 ); 60 #endif 61