mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 11:18:45 +07:00
35d2d5d490
For some time now we have been having a lot of shared functionality between the arm and arm64 KVM support in arch/arm, which not only required a horrible inter-arch reference from the Makefile in arch/arm64/kvm, but also created confusion for newcomers to the code base, as was recently seen on the mailing list. Further, it causes confusion for things like cscope, which needs special attention to index specific shared files for arm64 from the arm tree. Move the shared files into virt/kvm/arm and move the trace points along with it. When moving the tracepoints we have to modify the way the vgic creates definitions of the trace points, so we take the chance to include the VGIC tracepoints in its very own special vgic trace.h file. Signed-off-by: Christoffer Dall <cdall@linaro.org>
86 lines
2.0 KiB
C
86 lines
2.0 KiB
C
#if !defined(_TRACE_KVM_H) || defined(TRACE_HEADER_MULTI_READ)
|
|
#define _TRACE_KVM_H
|
|
|
|
#include <linux/tracepoint.h>
|
|
|
|
#undef TRACE_SYSTEM
|
|
#define TRACE_SYSTEM kvm
|
|
|
|
/* Architecturally implementation defined CP15 register access */
|
|
TRACE_EVENT(kvm_emulate_cp15_imp,
|
|
TP_PROTO(unsigned long Op1, unsigned long Rt1, unsigned long CRn,
|
|
unsigned long CRm, unsigned long Op2, bool is_write),
|
|
TP_ARGS(Op1, Rt1, CRn, CRm, Op2, is_write),
|
|
|
|
TP_STRUCT__entry(
|
|
__field( unsigned int, Op1 )
|
|
__field( unsigned int, Rt1 )
|
|
__field( unsigned int, CRn )
|
|
__field( unsigned int, CRm )
|
|
__field( unsigned int, Op2 )
|
|
__field( bool, is_write )
|
|
),
|
|
|
|
TP_fast_assign(
|
|
__entry->is_write = is_write;
|
|
__entry->Op1 = Op1;
|
|
__entry->Rt1 = Rt1;
|
|
__entry->CRn = CRn;
|
|
__entry->CRm = CRm;
|
|
__entry->Op2 = Op2;
|
|
),
|
|
|
|
TP_printk("Implementation defined CP15: %s\tp15, %u, r%u, c%u, c%u, %u",
|
|
(__entry->is_write) ? "mcr" : "mrc",
|
|
__entry->Op1, __entry->Rt1, __entry->CRn,
|
|
__entry->CRm, __entry->Op2)
|
|
);
|
|
|
|
TRACE_EVENT(kvm_wfx,
|
|
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%08lx",
|
|
__entry->is_wfe ? 'e' : 'i', __entry->vcpu_pc)
|
|
);
|
|
|
|
TRACE_EVENT(kvm_hvc,
|
|
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%08lx (r0: 0x%08lx, imm: 0x%lx",
|
|
__entry->vcpu_pc, __entry->r0, __entry->imm)
|
|
);
|
|
|
|
#endif /* _TRACE_KVM_H */
|
|
|
|
#undef TRACE_INCLUDE_PATH
|
|
#define TRACE_INCLUDE_PATH arch/arm/kvm
|
|
#undef TRACE_INCLUDE_FILE
|
|
#define TRACE_INCLUDE_FILE trace
|
|
|
|
/* This part must be outside protection */
|
|
#include <trace/define_trace.h>
|