Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^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>