^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #if !defined(_TRACE_KVM_H) || defined(TRACE_HEADER_MULTI_READ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #define _TRACE_KVM_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #include <linux/tracepoint.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #undef TRACE_SYSTEM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #define TRACE_SYSTEM kvm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) * Tracepoint for guest mode entry.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) TRACE_EVENT(kvm_ppc_instr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) TP_PROTO(unsigned int inst, unsigned long _pc, unsigned int emulate),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) TP_ARGS(inst, _pc, emulate),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) __field( unsigned int, inst )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) __field( unsigned long, pc )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) __field( unsigned int, emulate )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) __entry->inst = inst;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) __entry->pc = _pc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) __entry->emulate = emulate;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) TP_printk("inst %u pc 0x%lx emulate %u\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) __entry->inst, __entry->pc, __entry->emulate)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) TRACE_EVENT(kvm_stlb_inval,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) TP_PROTO(unsigned int stlb_index),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) TP_ARGS(stlb_index),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) __field( unsigned int, stlb_index )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) __entry->stlb_index = stlb_index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) TP_printk("stlb_index %u", __entry->stlb_index)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) TRACE_EVENT(kvm_stlb_write,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) TP_PROTO(unsigned int victim, unsigned int tid, unsigned int word0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) unsigned int word1, unsigned int word2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) TP_ARGS(victim, tid, word0, word1, word2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) __field( unsigned int, victim )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) __field( unsigned int, tid )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) __field( unsigned int, word0 )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) __field( unsigned int, word1 )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) __field( unsigned int, word2 )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) __entry->victim = victim;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) __entry->tid = tid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) __entry->word0 = word0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) __entry->word1 = word1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) __entry->word2 = word2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) TP_printk("victim %u tid %u w0 %u w1 %u w2 %u",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) __entry->victim, __entry->tid, __entry->word0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) __entry->word1, __entry->word2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) TRACE_EVENT(kvm_gtlb_write,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) TP_PROTO(unsigned int gtlb_index, unsigned int tid, unsigned int word0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) unsigned int word1, unsigned int word2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) TP_ARGS(gtlb_index, tid, word0, word1, word2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) __field( unsigned int, gtlb_index )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) __field( unsigned int, tid )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) __field( unsigned int, word0 )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) __field( unsigned int, word1 )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) __field( unsigned int, word2 )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) __entry->gtlb_index = gtlb_index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) __entry->tid = tid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) __entry->word0 = word0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) __entry->word1 = word1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) __entry->word2 = word2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) TP_printk("gtlb_index %u tid %u w0 %u w1 %u w2 %u",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) __entry->gtlb_index, __entry->tid, __entry->word0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) __entry->word1, __entry->word2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) TRACE_EVENT(kvm_check_requests,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) TP_PROTO(struct kvm_vcpu *vcpu),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) TP_ARGS(vcpu),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) __field( __u32, cpu_nr )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) __field( __u32, requests )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) __entry->cpu_nr = vcpu->vcpu_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) __entry->requests = vcpu->requests;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) TP_printk("vcpu=%x requests=%x",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) __entry->cpu_nr, __entry->requests)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) #endif /* _TRACE_KVM_H */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) /* This part must be outside protection */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) #undef TRACE_INCLUDE_PATH
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) #undef TRACE_INCLUDE_FILE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) #define TRACE_INCLUDE_PATH .
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) #define TRACE_INCLUDE_FILE trace
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) #include <trace/define_trace.h>