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