^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) #undef TRACE_SYSTEM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #define TRACE_SYSTEM xen
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #if !defined(_TRACE_XEN_H) || defined(TRACE_HEADER_MULTI_READ)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #define _TRACE_XEN_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #include <linux/tracepoint.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #include <asm/paravirt_types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <asm/xen/trace_types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) struct multicall_entry;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) /* Multicalls */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) DECLARE_EVENT_CLASS(xen_mc__batch,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) TP_PROTO(enum paravirt_lazy_mode mode),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) TP_ARGS(mode),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) __field(enum paravirt_lazy_mode, mode)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) TP_fast_assign(__entry->mode = mode),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) TP_printk("start batch LAZY_%s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) (__entry->mode == PARAVIRT_LAZY_MMU) ? "MMU" :
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) (__entry->mode == PARAVIRT_LAZY_CPU) ? "CPU" : "NONE")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) #define DEFINE_XEN_MC_BATCH(name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) DEFINE_EVENT(xen_mc__batch, name, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) TP_PROTO(enum paravirt_lazy_mode mode), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) TP_ARGS(mode))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) DEFINE_XEN_MC_BATCH(xen_mc_batch);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) DEFINE_XEN_MC_BATCH(xen_mc_issue);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) TRACE_DEFINE_SIZEOF(ulong);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) TRACE_EVENT(xen_mc_entry,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) TP_PROTO(struct multicall_entry *mc, unsigned nargs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) TP_ARGS(mc, nargs),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) __field(unsigned int, op)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) __field(unsigned int, nargs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) __array(unsigned long, args, 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) TP_fast_assign(__entry->op = mc->op;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) __entry->nargs = nargs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) memcpy(__entry->args, mc->args, sizeof(ulong) * nargs);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) memset(__entry->args + nargs, 0, sizeof(ulong) * (6 - nargs));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) TP_printk("op %u%s args [%lx, %lx, %lx, %lx, %lx, %lx]",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) __entry->op, xen_hypercall_name(__entry->op),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) __entry->args[0], __entry->args[1], __entry->args[2],
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) __entry->args[3], __entry->args[4], __entry->args[5])
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) TRACE_EVENT(xen_mc_entry_alloc,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) TP_PROTO(size_t args),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) TP_ARGS(args),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) __field(size_t, args)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) TP_fast_assign(__entry->args = args),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) TP_printk("alloc entry %zu arg bytes", __entry->args)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) TRACE_EVENT(xen_mc_callback,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) TP_PROTO(xen_mc_callback_fn_t fn, void *data),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) TP_ARGS(fn, data),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) * Use field_struct to avoid is_signed_type()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) * comparison of a function pointer.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) __field_struct(xen_mc_callback_fn_t, fn)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) __field(void *, data)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) TP_fast_assign(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) __entry->fn = fn;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) __entry->data = data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) TP_printk("callback %ps, data %p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) __entry->fn, __entry->data)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) TRACE_EVENT(xen_mc_flush_reason,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) TP_PROTO(enum xen_mc_flush_reason reason),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) TP_ARGS(reason),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) __field(enum xen_mc_flush_reason, reason)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) TP_fast_assign(__entry->reason = reason),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) TP_printk("flush reason %s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) (__entry->reason == XEN_MC_FL_NONE) ? "NONE" :
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) (__entry->reason == XEN_MC_FL_BATCH) ? "BATCH" :
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) (__entry->reason == XEN_MC_FL_ARGS) ? "ARGS" :
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) (__entry->reason == XEN_MC_FL_CALLBACK) ? "CALLBACK" : "??")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) TRACE_EVENT(xen_mc_flush,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) TP_PROTO(unsigned mcidx, unsigned argidx, unsigned cbidx),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) TP_ARGS(mcidx, argidx, cbidx),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) __field(unsigned, mcidx)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) __field(unsigned, argidx)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) __field(unsigned, cbidx)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) TP_fast_assign(__entry->mcidx = mcidx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) __entry->argidx = argidx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) __entry->cbidx = cbidx),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) TP_printk("flushing %u hypercalls, %u arg bytes, %u callbacks",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) __entry->mcidx, __entry->argidx, __entry->cbidx)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) TRACE_EVENT(xen_mc_extend_args,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) TP_PROTO(unsigned long op, size_t args, enum xen_mc_extend_args res),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) TP_ARGS(op, args, res),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) __field(unsigned int, op)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) __field(size_t, args)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) __field(enum xen_mc_extend_args, res)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) TP_fast_assign(__entry->op = op;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) __entry->args = args;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) __entry->res = res),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) TP_printk("extending op %u%s by %zu bytes res %s",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) __entry->op, xen_hypercall_name(__entry->op),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) __entry->args,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) __entry->res == XEN_MC_XE_OK ? "OK" :
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) __entry->res == XEN_MC_XE_BAD_OP ? "BAD_OP" :
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) __entry->res == XEN_MC_XE_NO_SPACE ? "NO_SPACE" : "???")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) TRACE_DEFINE_SIZEOF(pteval_t);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) /* mmu */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) DECLARE_EVENT_CLASS(xen_mmu__set_pte,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) TP_PROTO(pte_t *ptep, pte_t pteval),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) TP_ARGS(ptep, pteval),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) __field(pte_t *, ptep)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) __field(pteval_t, pteval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) TP_fast_assign(__entry->ptep = ptep;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) __entry->pteval = pteval.pte),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) TP_printk("ptep %p pteval %0*llx (raw %0*llx)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) __entry->ptep,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) (int)sizeof(pteval_t) * 2, (unsigned long long)pte_val(native_make_pte(__entry->pteval)),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) (int)sizeof(pteval_t) * 2, (unsigned long long)__entry->pteval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) #define DEFINE_XEN_MMU_SET_PTE(name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) DEFINE_EVENT(xen_mmu__set_pte, name, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) TP_PROTO(pte_t *ptep, pte_t pteval), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) TP_ARGS(ptep, pteval))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) DEFINE_XEN_MMU_SET_PTE(xen_mmu_set_pte);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) TRACE_DEFINE_SIZEOF(pmdval_t);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) TRACE_EVENT(xen_mmu_set_pmd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) TP_PROTO(pmd_t *pmdp, pmd_t pmdval),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) TP_ARGS(pmdp, pmdval),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) __field(pmd_t *, pmdp)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) __field(pmdval_t, pmdval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) TP_fast_assign(__entry->pmdp = pmdp;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) __entry->pmdval = pmdval.pmd),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) TP_printk("pmdp %p pmdval %0*llx (raw %0*llx)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) __entry->pmdp,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) (int)sizeof(pmdval_t) * 2, (unsigned long long)pmd_val(native_make_pmd(__entry->pmdval)),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) (int)sizeof(pmdval_t) * 2, (unsigned long long)__entry->pmdval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) #ifdef CONFIG_X86_PAE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) DEFINE_XEN_MMU_SET_PTE(xen_mmu_set_pte_atomic);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) TRACE_EVENT(xen_mmu_pte_clear,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) TP_PROTO(struct mm_struct *mm, unsigned long addr, pte_t *ptep),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) TP_ARGS(mm, addr, ptep),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) __field(struct mm_struct *, mm)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) __field(unsigned long, addr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) __field(pte_t *, ptep)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) TP_fast_assign(__entry->mm = mm;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) __entry->addr = addr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) __entry->ptep = ptep),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) TP_printk("mm %p addr %lx ptep %p",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) __entry->mm, __entry->addr, __entry->ptep)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) TRACE_EVENT(xen_mmu_pmd_clear,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) TP_PROTO(pmd_t *pmdp),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) TP_ARGS(pmdp),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) __field(pmd_t *, pmdp)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) TP_fast_assign(__entry->pmdp = pmdp),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) TP_printk("pmdp %p", __entry->pmdp)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) #if CONFIG_PGTABLE_LEVELS >= 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) TRACE_DEFINE_SIZEOF(pudval_t);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) TRACE_EVENT(xen_mmu_set_pud,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) TP_PROTO(pud_t *pudp, pud_t pudval),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) TP_ARGS(pudp, pudval),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) __field(pud_t *, pudp)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) __field(pudval_t, pudval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) TP_fast_assign(__entry->pudp = pudp;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) __entry->pudval = native_pud_val(pudval)),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) TP_printk("pudp %p pudval %0*llx (raw %0*llx)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) __entry->pudp,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) (int)sizeof(pudval_t) * 2, (unsigned long long)pud_val(native_make_pud(__entry->pudval)),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) (int)sizeof(pudval_t) * 2, (unsigned long long)__entry->pudval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) TRACE_DEFINE_SIZEOF(p4dval_t);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) TRACE_EVENT(xen_mmu_set_p4d,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) TP_PROTO(p4d_t *p4dp, p4d_t *user_p4dp, p4d_t p4dval),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) TP_ARGS(p4dp, user_p4dp, p4dval),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) __field(p4d_t *, p4dp)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) __field(p4d_t *, user_p4dp)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) __field(p4dval_t, p4dval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) TP_fast_assign(__entry->p4dp = p4dp;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) __entry->user_p4dp = user_p4dp;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) __entry->p4dval = p4d_val(p4dval)),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) TP_printk("p4dp %p user_p4dp %p p4dval %0*llx (raw %0*llx)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) __entry->p4dp, __entry->user_p4dp,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) (int)sizeof(p4dval_t) * 2, (unsigned long long)pgd_val(native_make_pgd(__entry->p4dval)),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) (int)sizeof(p4dval_t) * 2, (unsigned long long)__entry->p4dval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) TRACE_EVENT(xen_mmu_set_pud,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) TP_PROTO(pud_t *pudp, pud_t pudval),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) TP_ARGS(pudp, pudval),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) __field(pud_t *, pudp)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) __field(pudval_t, pudval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) TP_fast_assign(__entry->pudp = pudp;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) __entry->pudval = native_pud_val(pudval)),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) TP_printk("pudp %p pudval %0*llx (raw %0*llx)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) __entry->pudp,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) (int)sizeof(pudval_t) * 2, (unsigned long long)pgd_val(native_make_pgd(__entry->pudval)),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) (int)sizeof(pudval_t) * 2, (unsigned long long)__entry->pudval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) DECLARE_EVENT_CLASS(xen_mmu_ptep_modify_prot,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) TP_PROTO(struct mm_struct *mm, unsigned long addr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) pte_t *ptep, pte_t pteval),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) TP_ARGS(mm, addr, ptep, pteval),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) __field(struct mm_struct *, mm)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) __field(unsigned long, addr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) __field(pte_t *, ptep)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) __field(pteval_t, pteval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) TP_fast_assign(__entry->mm = mm;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) __entry->addr = addr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) __entry->ptep = ptep;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) __entry->pteval = pteval.pte),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) TP_printk("mm %p addr %lx ptep %p pteval %0*llx (raw %0*llx)",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) __entry->mm, __entry->addr, __entry->ptep,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) (int)sizeof(pteval_t) * 2, (unsigned long long)pte_val(native_make_pte(__entry->pteval)),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) (int)sizeof(pteval_t) * 2, (unsigned long long)__entry->pteval)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) #define DEFINE_XEN_MMU_PTEP_MODIFY_PROT(name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) DEFINE_EVENT(xen_mmu_ptep_modify_prot, name, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) TP_PROTO(struct mm_struct *mm, unsigned long addr, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) pte_t *ptep, pte_t pteval), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) TP_ARGS(mm, addr, ptep, pteval))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) DEFINE_XEN_MMU_PTEP_MODIFY_PROT(xen_mmu_ptep_modify_prot_start);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) DEFINE_XEN_MMU_PTEP_MODIFY_PROT(xen_mmu_ptep_modify_prot_commit);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) TRACE_EVENT(xen_mmu_alloc_ptpage,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) TP_PROTO(struct mm_struct *mm, unsigned long pfn, unsigned level, bool pinned),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) TP_ARGS(mm, pfn, level, pinned),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) __field(struct mm_struct *, mm)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) __field(unsigned long, pfn)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) __field(unsigned, level)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) __field(bool, pinned)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) TP_fast_assign(__entry->mm = mm;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) __entry->pfn = pfn;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) __entry->level = level;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) __entry->pinned = pinned),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) TP_printk("mm %p pfn %lx level %d %spinned",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) __entry->mm, __entry->pfn, __entry->level,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) __entry->pinned ? "" : "un")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) TRACE_EVENT(xen_mmu_release_ptpage,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) TP_PROTO(unsigned long pfn, unsigned level, bool pinned),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) TP_ARGS(pfn, level, pinned),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) __field(unsigned long, pfn)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) __field(unsigned, level)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) __field(bool, pinned)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) TP_fast_assign(__entry->pfn = pfn;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) __entry->level = level;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) __entry->pinned = pinned),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) TP_printk("pfn %lx level %d %spinned",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) __entry->pfn, __entry->level,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) __entry->pinned ? "" : "un")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) DECLARE_EVENT_CLASS(xen_mmu_pgd,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) TP_PROTO(struct mm_struct *mm, pgd_t *pgd),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) TP_ARGS(mm, pgd),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) __field(struct mm_struct *, mm)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) __field(pgd_t *, pgd)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) TP_fast_assign(__entry->mm = mm;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) __entry->pgd = pgd),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) TP_printk("mm %p pgd %p", __entry->mm, __entry->pgd)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) #define DEFINE_XEN_MMU_PGD_EVENT(name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) DEFINE_EVENT(xen_mmu_pgd, name, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) TP_PROTO(struct mm_struct *mm, pgd_t *pgd), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) TP_ARGS(mm, pgd))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) DEFINE_XEN_MMU_PGD_EVENT(xen_mmu_pgd_pin);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) DEFINE_XEN_MMU_PGD_EVENT(xen_mmu_pgd_unpin);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) TRACE_EVENT(xen_mmu_flush_tlb_one_user,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) TP_PROTO(unsigned long addr),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) TP_ARGS(addr),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) __field(unsigned long, addr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) TP_fast_assign(__entry->addr = addr),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) TP_printk("addr %lx", __entry->addr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) TRACE_EVENT(xen_mmu_flush_tlb_others,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) TP_PROTO(const struct cpumask *cpus, struct mm_struct *mm,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) unsigned long addr, unsigned long end),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) TP_ARGS(cpus, mm, addr, end),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) __field(unsigned, ncpus)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) __field(struct mm_struct *, mm)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) __field(unsigned long, addr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) __field(unsigned long, end)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) TP_fast_assign(__entry->ncpus = cpumask_weight(cpus);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) __entry->mm = mm;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) __entry->addr = addr,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) __entry->end = end),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) TP_printk("ncpus %d mm %p addr %lx, end %lx",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) __entry->ncpus, __entry->mm, __entry->addr, __entry->end)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) TRACE_EVENT(xen_mmu_write_cr3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) TP_PROTO(bool kernel, unsigned long cr3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) TP_ARGS(kernel, cr3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) __field(bool, kernel)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) __field(unsigned long, cr3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) TP_fast_assign(__entry->kernel = kernel;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) __entry->cr3 = cr3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) TP_printk("%s cr3 %lx",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) __entry->kernel ? "kernel" : "user", __entry->cr3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) /* CPU */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) TRACE_EVENT(xen_cpu_write_ldt_entry,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) TP_PROTO(struct desc_struct *dt, int entrynum, u64 desc),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) TP_ARGS(dt, entrynum, desc),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386) __field(struct desc_struct *, dt)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) __field(int, entrynum)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) __field(u64, desc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390) TP_fast_assign(__entry->dt = dt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391) __entry->entrynum = entrynum;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) __entry->desc = desc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) TP_printk("dt %p entrynum %d entry %016llx",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) __entry->dt, __entry->entrynum,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) (unsigned long long)__entry->desc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) TRACE_EVENT(xen_cpu_write_idt_entry,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) TP_PROTO(gate_desc *dt, int entrynum, const gate_desc *ent),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401) TP_ARGS(dt, entrynum, ent),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) __field(gate_desc *, dt)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) __field(int, entrynum)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406) TP_fast_assign(__entry->dt = dt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407) __entry->entrynum = entrynum;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) TP_printk("dt %p entrynum %d",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410) __entry->dt, __entry->entrynum)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413) TRACE_EVENT(xen_cpu_load_idt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414) TP_PROTO(const struct desc_ptr *desc),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415) TP_ARGS(desc),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417) __field(unsigned long, addr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) TP_fast_assign(__entry->addr = desc->address),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) TP_printk("addr %lx", __entry->addr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423) TRACE_EVENT(xen_cpu_write_gdt_entry,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424) TP_PROTO(struct desc_struct *dt, int entrynum, const void *desc, int type),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425) TP_ARGS(dt, entrynum, desc, type),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427) __field(u64, desc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) __field(struct desc_struct *, dt)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) __field(int, entrynum)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430) __field(int, type)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) TP_fast_assign(__entry->dt = dt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433) __entry->entrynum = entrynum;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434) __entry->desc = *(u64 *)desc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435) __entry->type = type;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) TP_printk("dt %p entrynum %d type %d desc %016llx",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438) __entry->dt, __entry->entrynum, __entry->type,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439) (unsigned long long)__entry->desc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442) TRACE_EVENT(xen_cpu_set_ldt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443) TP_PROTO(const void *addr, unsigned entries),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444) TP_ARGS(addr, entries),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445) TP_STRUCT__entry(
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446) __field(const void *, addr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447) __field(unsigned, entries)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448) ),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449) TP_fast_assign(__entry->addr = addr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450) __entry->entries = entries),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451) TP_printk("addr %p entries %u",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452) __entry->addr, __entry->entries)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453) );
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456) #endif /* _TRACE_XEN_H */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458) /* This part must be outside protection */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459) #include <trace/define_trace.h>