KVM
Macros | Functions
trace_handle_exit.h File Reference
#include <linux/tracepoint.h>
#include "sys_regs.h"
#include <trace/define_trace.h>
Include dependency graph for trace_handle_exit.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define _TRACE_HANDLE_EXIT_ARM64_KVM_H
 
#define TRACE_SYSTEM   kvm
 
#define TRACE_INCLUDE_PATH   .
 
#define TRACE_INCLUDE_FILE   trace_handle_exit
 

Functions

 TRACE_EVENT (kvm_wfx_arm64, TP_PROTO(unsigned long vcpu_pc, bool is_wfe), TP_ARGS(vcpu_pc, is_wfe), TP_STRUCT__entry(__field(unsigned long, vcpu_pc) __field(bool, is_wfe)), TP_fast_assign(__entry->vcpu_pc=vcpu_pc;__entry->is_wfe=is_wfe;), TP_printk("guest executed wf%c at: 0x%016lx", __entry->is_wfe ? 'e' :'i', __entry->vcpu_pc))
 
 TRACE_EVENT (kvm_hvc_arm64, TP_PROTO(unsigned long vcpu_pc, unsigned long r0, unsigned long imm), TP_ARGS(vcpu_pc, r0, imm), TP_STRUCT__entry(__field(unsigned long, vcpu_pc) __field(unsigned long, r0) __field(unsigned long, imm)), TP_fast_assign(__entry->vcpu_pc=vcpu_pc;__entry->r0=r0;__entry->imm=imm;), TP_printk("HVC at 0x%016lx (r0: 0x%016lx, imm: 0x%lx)", __entry->vcpu_pc, __entry->r0, __entry->imm))
 
 TRACE_EVENT (kvm_arm_setup_debug, TP_PROTO(struct kvm_vcpu *vcpu, __u32 guest_debug), TP_ARGS(vcpu, guest_debug), TP_STRUCT__entry(__field(struct kvm_vcpu *, vcpu) __field(__u32, guest_debug)), TP_fast_assign(__entry->vcpu=vcpu;__entry->guest_debug=guest_debug;), TP_printk("vcpu: %p, flags: 0x%08x", __entry->vcpu, __entry->guest_debug))
 
 TRACE_EVENT (kvm_arm_clear_debug, TP_PROTO(__u32 guest_debug), TP_ARGS(guest_debug), TP_STRUCT__entry(__field(__u32, guest_debug)), TP_fast_assign(__entry->guest_debug=guest_debug;), TP_printk("flags: 0x%08x", __entry->guest_debug))
 
 TRACE_EVENT (kvm_arm_set_dreg32, TP_PROTO(const char *name, __u64 value), TP_ARGS(name, value), TP_STRUCT__entry(__field(const char *, name) __field(__u64, value)), TP_fast_assign(__entry->name=name;__entry->value=value;), TP_printk("%s: 0x%llx", __entry->name, __entry->value))
 
 TRACE_DEFINE_SIZEOF (__u64)
 
 TRACE_EVENT (kvm_arm_set_regset, TP_PROTO(const char *type, int len, __u64 *control, __u64 *value), TP_ARGS(type, len, control, value), TP_STRUCT__entry(__field(const char *, name) __field(int, len) __array(u64, ctrls, 16) __array(u64, values, 16)), TP_fast_assign(__entry->name=type;__entry->len=len;memcpy(__entry->ctrls, control, len<< 3);memcpy(__entry->values, value, len<< 3);), TP_printk("%d %s CTRL:%s VALUE:%s", __entry->len, __entry->name, __print_array(__entry->ctrls, __entry->len, sizeof(__u64)), __print_array(__entry->values, __entry->len, sizeof(__u64))))
 
 TRACE_EVENT (trap_reg, TP_PROTO(const char *fn, int reg, bool is_write, u64 write_value), TP_ARGS(fn, reg, is_write, write_value), TP_STRUCT__entry(__field(const char *, fn) __field(int, reg) __field(bool, is_write) __field(u64, write_value)), TP_fast_assign(__entry->fn=fn;__entry->reg=reg;__entry->is_write=is_write;__entry->write_value=write_value;), TP_printk("%s %s reg %d (0x%016llx)", __entry->fn, __entry->is_write?"write to":"read from", __entry->reg, __entry->write_value))
 
 TRACE_EVENT (kvm_handle_sys_reg, TP_PROTO(unsigned long hsr), TP_ARGS(hsr), TP_STRUCT__entry(__field(unsigned long, hsr)), TP_fast_assign(__entry->hsr=hsr;), TP_printk("HSR 0x%08lx", __entry->hsr))
 
 TRACE_EVENT (kvm_sys_access, TP_PROTO(unsigned long vcpu_pc, struct sys_reg_params *params, const struct sys_reg_desc *reg), TP_ARGS(vcpu_pc, params, reg), TP_STRUCT__entry(__field(unsigned long, vcpu_pc) __field(bool, is_write) __field(const char *, name) __field(u8, Op0) __field(u8, Op1) __field(u8, CRn) __field(u8, CRm) __field(u8, Op2)), TP_fast_assign(__entry->vcpu_pc=vcpu_pc;__entry->is_write=params->is_write;__entry->name=reg->name;__entry->Op0=reg->Op0;__entry->Op0=reg->Op0;__entry->Op1=reg->Op1;__entry->CRn=reg->CRn;__entry->CRm=reg->CRm;__entry->Op2=reg->Op2;), TP_printk("PC: %lx %s (%d,%d,%d,%d,%d) %s", __entry->vcpu_pc, __entry->name ?:"UNKN", __entry->Op0, __entry->Op1, __entry->CRn, __entry->CRm, __entry->Op2, __entry->is_write ? "write" :"read"))
 
 TRACE_EVENT (kvm_set_guest_debug, TP_PROTO(struct kvm_vcpu *vcpu, __u32 guest_debug), TP_ARGS(vcpu, guest_debug), TP_STRUCT__entry(__field(struct kvm_vcpu *, vcpu) __field(__u32, guest_debug)), TP_fast_assign(__entry->vcpu=vcpu;__entry->guest_debug=guest_debug;), TP_printk("vcpu: %p, flags: 0x%08x", __entry->vcpu, __entry->guest_debug))
 

Macro Definition Documentation

◆ _TRACE_HANDLE_EXIT_ARM64_KVM_H

#define _TRACE_HANDLE_EXIT_ARM64_KVM_H

Definition at line 3 of file trace_handle_exit.h.

◆ TRACE_INCLUDE_FILE

#define TRACE_INCLUDE_FILE   trace_handle_exit

Definition at line 216 of file trace_handle_exit.h.

◆ TRACE_INCLUDE_PATH

#define TRACE_INCLUDE_PATH   .

Definition at line 214 of file trace_handle_exit.h.

◆ TRACE_SYSTEM

#define TRACE_SYSTEM   kvm

Definition at line 9 of file trace_handle_exit.h.

Function Documentation

◆ TRACE_DEFINE_SIZEOF()

TRACE_DEFINE_SIZEOF ( __u64  )

◆ TRACE_EVENT() [1/10]

TRACE_EVENT ( kvm_arm_clear_debug  ,
TP_PROTO(__u32 guest_debug)  ,
TP_ARGS(guest_debug)  ,
TP_STRUCT__entry(__field(__u32, guest_debug))  ,
TP_fast_assign(__entry->guest_debug=guest_debug;)  ,
TP_printk("flags: 0x%08x", __entry->guest_debug)   
)

◆ TRACE_EVENT() [2/10]

TRACE_EVENT ( kvm_arm_set_dreg32  ,
TP_PROTO(const char *name, __u64 value)  ,
TP_ARGS(name, value)  ,
TP_STRUCT__entry(__field(const char *, name) __field(__u64, value))  ,
TP_fast_assign(__entry->name=name;__entry->value=value;)  ,
TP_printk("%s: 0x%llx", __entry->name, __entry->value)   
)

◆ TRACE_EVENT() [3/10]

TRACE_EVENT ( kvm_arm_set_regset  ,
TP_PROTO(const char *type, int len, __u64 *control, __u64 *value)  ,
TP_ARGS(type, len, control, value)  ,
TP_STRUCT__entry(__field(const char *, name) __field(int, len) __array(u64, ctrls, 16) __array(u64, values, 16))  ,
TP_fast_assign(__entry->name=type;__entry->len=len;memcpy(__entry->ctrls, control, len<< 3);memcpy(__entry->values, value, len<< 3);)  ,
TP_printk("%d %s CTRL:%s VALUE:%s", __entry->len, __entry->name, __print_array(__entry->ctrls, __entry->len, sizeof(__u64)), __print_array(__entry->values, __entry->len, sizeof(__u64)))   
)

◆ TRACE_EVENT() [4/10]

TRACE_EVENT ( kvm_arm_setup_debug  ,
TP_PROTO(struct kvm_vcpu *vcpu, __u32 guest_debug)  ,
TP_ARGS(vcpu, guest_debug)  ,
TP_STRUCT__entry(__field(struct kvm_vcpu *, vcpu) __field(__u32, guest_debug))  ,
TP_fast_assign(__entry->vcpu=vcpu;__entry->guest_debug=guest_debug;)  ,
TP_printk("vcpu: %p, flags: 0x%08x", __entry->vcpu, __entry->guest_debug)   
)

◆ TRACE_EVENT() [5/10]

TRACE_EVENT ( kvm_handle_sys_reg  ,
TP_PROTO(unsigned long hsr)  ,
TP_ARGS(hsr)  ,
TP_STRUCT__entry(__field(unsigned long, hsr))  ,
TP_fast_assign(__entry->hsr=hsr;)  ,
TP_printk("HSR 0x%08lx", __entry->hsr)   
)

◆ TRACE_EVENT() [6/10]

TRACE_EVENT ( kvm_hvc_arm64  ,
TP_PROTO(unsigned long vcpu_pc, unsigned long r0, unsigned long imm)  ,
TP_ARGS(vcpu_pc, r0, imm)  ,
TP_STRUCT__entry(__field(unsigned long, vcpu_pc) __field(unsigned long, r0) __field(unsigned long, imm))  ,
TP_fast_assign(__entry->vcpu_pc=vcpu_pc;__entry->r0=r0;__entry->imm=imm;)  ,
TP_printk("HVC at 0x%016lx (r0: 0x%016lx, imm: 0x%lx)", __entry->vcpu_pc, __entry->r0, __entry->imm)   
)

◆ TRACE_EVENT() [7/10]

TRACE_EVENT ( kvm_set_guest_debug  ,
TP_PROTO(struct kvm_vcpu *vcpu, __u32 guest_debug)  ,
TP_ARGS(vcpu, guest_debug)  ,
TP_STRUCT__entry(__field(struct kvm_vcpu *, vcpu) __field(__u32, guest_debug))  ,
TP_fast_assign(__entry->vcpu=vcpu;__entry->guest_debug=guest_debug;)  ,
TP_printk("vcpu: %p, flags: 0x%08x", __entry->vcpu, __entry->guest_debug)   
)

◆ TRACE_EVENT() [8/10]

TRACE_EVENT ( kvm_sys_access  ,
TP_PROTO(unsigned long vcpu_pc, struct sys_reg_params *params, const struct sys_reg_desc *reg)  ,
TP_ARGS(vcpu_pc, params, reg)  ,
TP_STRUCT__entry(__field(unsigned long, vcpu_pc) __field(bool, is_write) __field(const char *, name) __field(u8, Op0) __field(u8, Op1) __field(u8, CRn) __field(u8, CRm) __field(u8, Op2))  ,
TP_fast_assign(__entry->vcpu_pc=vcpu_pc;__entry->is_write=params->is_write;__entry->name=reg->name;__entry->Op0=reg->Op0;__entry->Op0=reg->Op0;__entry->Op1=reg->Op1;__entry->CRn=reg->CRn;__entry->CRm=reg->CRm;__entry->Op2=reg->Op2;)  ,
TP_printk("PC: %lx %s (%d,%d,%d,%d,%d) %s", __entry->vcpu_pc, __entry->name ?:"UNKN", __entry->Op0, __entry->Op1, __entry->CRn, __entry->CRm, __entry->Op2, __entry->is_write ? "write" :"read")   
)

◆ TRACE_EVENT() [9/10]

TRACE_EVENT ( kvm_wfx_arm64  ,
TP_PROTO(unsigned long vcpu_pc, bool is_wfe)  ,
TP_ARGS(vcpu_pc, is_wfe)  ,
TP_STRUCT__entry(__field(unsigned long, vcpu_pc) __field(bool, is_wfe))  ,
TP_fast_assign(__entry->vcpu_pc=vcpu_pc;__entry->is_wfe=is_wfe;)  ,
TP_printk("guest executed wf%c at: 0x%016lx", __entry->is_wfe ? 'e' :'i', __entry->vcpu_pc)   
)

◆ TRACE_EVENT() [10/10]

TRACE_EVENT ( trap_reg  ,
TP_PROTO(const char *fn, int reg, bool is_write, u64 write_value)  ,
TP_ARGS(fn, reg, is_write, write_value)  ,
TP_STRUCT__entry(__field(const char *, fn) __field(int, reg) __field(bool, is_write) __field(u64, write_value))  ,
TP_fast_assign(__entry->fn=fn;__entry->reg=reg;__entry->is_write=is_write;__entry->write_value=write_value;)  ,
TP_printk("%s %s reg %d (0x%016llx)", __entry->fn, __entry->is_write?"write to":"read from", __entry->reg, __entry->write_value)   
)