File Index
Files and directories
Sign in
FILE

trace_handle_exit.h

File preview with syntax highlighting.

linux-6.19.14/arch/arm64/kvm/trace_handle_exit.h C
  1/* SPDX-License-Identifier: GPL-2.0 */
  2#if !defined(_TRACE_HANDLE_EXIT_ARM64_KVM_H) || defined(TRACE_HEADER_MULTI_READ)
  3#define _TRACE_HANDLE_EXIT_ARM64_KVM_H
  4
  5#include <linux/tracepoint.h>
  6#include "sys_regs.h"
  7
  8#undef TRACE_SYSTEM
  9#define TRACE_SYSTEM kvm
 10
 11TRACE_EVENT(kvm_wfx_arm64,
 12	TP_PROTO(unsigned long vcpu_pc, bool is_wfe),
 13	TP_ARGS(vcpu_pc, is_wfe),
 14
 15	TP_STRUCT__entry(
 16		__field(unsigned long,	vcpu_pc)
 17		__field(bool,		is_wfe)
 18	),
 19
 20	TP_fast_assign(
 21		__entry->vcpu_pc = vcpu_pc;
 22		__entry->is_wfe  = is_wfe;
 23	),
 24
 25	TP_printk("guest executed wf%c at: 0x%016lx",
 26		  __entry->is_wfe ? 'e' : 'i', __entry->vcpu_pc)
 27);
 28
 29TRACE_EVENT(kvm_hvc_arm64,
 30	TP_PROTO(unsigned long vcpu_pc, unsigned long r0, unsigned long imm),
 31	TP_ARGS(vcpu_pc, r0, imm),
 32
 33	TP_STRUCT__entry(
 34		__field(unsigned long, vcpu_pc)
 35		__field(unsigned long, r0)
 36		__field(unsigned long, imm)
 37	),
 38
 39	TP_fast_assign(
 40		__entry->vcpu_pc = vcpu_pc;
 41		__entry->r0 = r0;
 42		__entry->imm = imm;
 43	),
 44
 45	TP_printk("HVC at 0x%016lx (r0: 0x%016lx, imm: 0x%lx)",
 46		  __entry->vcpu_pc, __entry->r0, __entry->imm)
 47);
 48
 49/*
 50 * The dreg32 name is a leftover from a distant past. This will really
 51 * output a 64bit value...
 52 */
 53TRACE_EVENT(kvm_arm_set_dreg32,
 54	TP_PROTO(const char *name, __u64 value),
 55	TP_ARGS(name, value),
 56
 57	TP_STRUCT__entry(
 58		__field(const char *, name)
 59		__field(__u64, value)
 60	),
 61
 62	TP_fast_assign(
 63		__entry->name = name;
 64		__entry->value = value;
 65	),
 66
 67	TP_printk("%s: 0x%llx", __entry->name, __entry->value)
 68);
 69
 70TRACE_EVENT(kvm_handle_sys_reg,
 71	TP_PROTO(unsigned long hsr),
 72	TP_ARGS(hsr),
 73
 74	TP_STRUCT__entry(
 75		__field(unsigned long,	hsr)
 76	),
 77
 78	TP_fast_assign(
 79		__entry->hsr = hsr;
 80	),
 81
 82	TP_printk("HSR 0x%08lx", __entry->hsr)
 83);
 84
 85TRACE_EVENT(kvm_sys_access,
 86	TP_PROTO(unsigned long vcpu_pc, struct sys_reg_params *params, const struct sys_reg_desc *reg),
 87	TP_ARGS(vcpu_pc, params, reg),
 88
 89	TP_STRUCT__entry(
 90		__field(unsigned long,			vcpu_pc)
 91		__field(bool,				is_write)
 92		__field(const char *,			name)
 93		__field(u8,				Op0)
 94		__field(u8,				Op1)
 95		__field(u8,				CRn)
 96		__field(u8,				CRm)
 97		__field(u8,				Op2)
 98	),
 99
100	TP_fast_assign(
101		__entry->vcpu_pc = vcpu_pc;
102		__entry->is_write = params->is_write;
103		__entry->name = reg->name;
104		__entry->Op0 = reg->Op0;
105		__entry->Op0 = reg->Op0;
106		__entry->Op1 = reg->Op1;
107		__entry->CRn = reg->CRn;
108		__entry->CRm = reg->CRm;
109		__entry->Op2 = reg->Op2;
110	),
111
112	TP_printk("PC: %lx %s (%d,%d,%d,%d,%d) %s",
113		  __entry->vcpu_pc, __entry->name ?: "UNKN",
114		  __entry->Op0, __entry->Op1, __entry->CRn,
115		  __entry->CRm, __entry->Op2,
116		  str_write_read(__entry->is_write))
117);
118
119TRACE_EVENT(kvm_set_guest_debug,
120	TP_PROTO(struct kvm_vcpu *vcpu, __u32 guest_debug),
121	TP_ARGS(vcpu, guest_debug),
122
123	TP_STRUCT__entry(
124		__field(struct kvm_vcpu *, vcpu)
125		__field(__u32, guest_debug)
126	),
127
128	TP_fast_assign(
129		__entry->vcpu = vcpu;
130		__entry->guest_debug = guest_debug;
131	),
132
133	TP_printk("vcpu: %p, flags: 0x%08x", __entry->vcpu, __entry->guest_debug)
134);
135
136#endif /* _TRACE_HANDLE_EXIT_ARM64_KVM_H */
137
138#undef TRACE_INCLUDE_PATH
139#define TRACE_INCLUDE_PATH .
140#undef TRACE_INCLUDE_FILE
141#define TRACE_INCLUDE_FILE trace_handle_exit
142
143/* This part must be outside protection */
144#include <trace/define_trace.h>
~/ Read-only file preview.