xref: /linux/arch/arm64/include/asm/kvm_hypevents.h (revision 53597deca0e38c30e6cd4ba2114fa42d2bcd85bb)
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