Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #undef TRACE_SYSTEM
0003 #define TRACE_SYSTEM powerpc
0004 
0005 #if !defined(_TRACE_POWERPC_H) || defined(TRACE_HEADER_MULTI_READ)
0006 #define _TRACE_POWERPC_H
0007 
0008 #include <linux/tracepoint.h>
0009 
0010 struct pt_regs;
0011 
0012 DECLARE_EVENT_CLASS(ppc64_interrupt_class,
0013 
0014     TP_PROTO(struct pt_regs *regs),
0015 
0016     TP_ARGS(regs),
0017 
0018     TP_STRUCT__entry(
0019         __field(struct pt_regs *, regs)
0020     ),
0021 
0022     TP_fast_assign(
0023         __entry->regs = regs;
0024     ),
0025 
0026     TP_printk("pt_regs=%p", __entry->regs)
0027 );
0028 
0029 DEFINE_EVENT(ppc64_interrupt_class, irq_entry,
0030 
0031     TP_PROTO(struct pt_regs *regs),
0032 
0033     TP_ARGS(regs)
0034 );
0035 
0036 DEFINE_EVENT(ppc64_interrupt_class, irq_exit,
0037 
0038     TP_PROTO(struct pt_regs *regs),
0039 
0040     TP_ARGS(regs)
0041 );
0042 
0043 DEFINE_EVENT(ppc64_interrupt_class, timer_interrupt_entry,
0044 
0045     TP_PROTO(struct pt_regs *regs),
0046 
0047     TP_ARGS(regs)
0048 );
0049 
0050 DEFINE_EVENT(ppc64_interrupt_class, timer_interrupt_exit,
0051 
0052     TP_PROTO(struct pt_regs *regs),
0053 
0054     TP_ARGS(regs)
0055 );
0056 
0057 #ifdef CONFIG_PPC_DOORBELL
0058 DEFINE_EVENT(ppc64_interrupt_class, doorbell_entry,
0059 
0060     TP_PROTO(struct pt_regs *regs),
0061 
0062     TP_ARGS(regs)
0063 );
0064 
0065 DEFINE_EVENT(ppc64_interrupt_class, doorbell_exit,
0066 
0067     TP_PROTO(struct pt_regs *regs),
0068 
0069     TP_ARGS(regs)
0070 );
0071 #endif
0072 
0073 #ifdef CONFIG_PPC_PSERIES
0074 extern int hcall_tracepoint_regfunc(void);
0075 extern void hcall_tracepoint_unregfunc(void);
0076 
0077 TRACE_EVENT_FN_COND(hcall_entry,
0078 
0079     TP_PROTO(unsigned long opcode, unsigned long *args),
0080 
0081     TP_ARGS(opcode, args),
0082 
0083     TP_CONDITION(cpu_online(raw_smp_processor_id())),
0084 
0085     TP_STRUCT__entry(
0086         __field(unsigned long, opcode)
0087     ),
0088 
0089     TP_fast_assign(
0090         __entry->opcode = opcode;
0091     ),
0092 
0093     TP_printk("opcode=%lu", __entry->opcode),
0094 
0095     hcall_tracepoint_regfunc, hcall_tracepoint_unregfunc
0096 );
0097 
0098 TRACE_EVENT_FN_COND(hcall_exit,
0099 
0100     TP_PROTO(unsigned long opcode, long retval, unsigned long *retbuf),
0101 
0102     TP_ARGS(opcode, retval, retbuf),
0103 
0104     TP_CONDITION(cpu_online(raw_smp_processor_id())),
0105 
0106     TP_STRUCT__entry(
0107         __field(unsigned long, opcode)
0108         __field(long, retval)
0109     ),
0110 
0111     TP_fast_assign(
0112         __entry->opcode = opcode;
0113         __entry->retval = retval;
0114     ),
0115 
0116     TP_printk("opcode=%lu retval=%ld", __entry->opcode, __entry->retval),
0117 
0118     hcall_tracepoint_regfunc, hcall_tracepoint_unregfunc
0119 );
0120 #endif
0121 
0122 #ifdef CONFIG_PPC_POWERNV
0123 extern int opal_tracepoint_regfunc(void);
0124 extern void opal_tracepoint_unregfunc(void);
0125 
0126 TRACE_EVENT_FN(opal_entry,
0127 
0128     TP_PROTO(unsigned long opcode, unsigned long *args),
0129 
0130     TP_ARGS(opcode, args),
0131 
0132     TP_STRUCT__entry(
0133         __field(unsigned long, opcode)
0134     ),
0135 
0136     TP_fast_assign(
0137         __entry->opcode = opcode;
0138     ),
0139 
0140     TP_printk("opcode=%lu", __entry->opcode),
0141 
0142     opal_tracepoint_regfunc, opal_tracepoint_unregfunc
0143 );
0144 
0145 TRACE_EVENT_FN(opal_exit,
0146 
0147     TP_PROTO(unsigned long opcode, unsigned long retval),
0148 
0149     TP_ARGS(opcode, retval),
0150 
0151     TP_STRUCT__entry(
0152         __field(unsigned long, opcode)
0153         __field(unsigned long, retval)
0154     ),
0155 
0156     TP_fast_assign(
0157         __entry->opcode = opcode;
0158         __entry->retval = retval;
0159     ),
0160 
0161     TP_printk("opcode=%lu retval=%lu", __entry->opcode, __entry->retval),
0162 
0163     opal_tracepoint_regfunc, opal_tracepoint_unregfunc
0164 );
0165 #endif
0166 
0167 TRACE_EVENT(hash_fault,
0168 
0169         TP_PROTO(unsigned long addr, unsigned long access, unsigned long trap),
0170         TP_ARGS(addr, access, trap),
0171         TP_STRUCT__entry(
0172             __field(unsigned long, addr)
0173             __field(unsigned long, access)
0174             __field(unsigned long, trap)
0175             ),
0176 
0177         TP_fast_assign(
0178             __entry->addr = addr;
0179             __entry->access = access;
0180             __entry->trap = trap;
0181             ),
0182 
0183         TP_printk("hash fault with addr 0x%lx and access = 0x%lx trap = 0x%lx",
0184               __entry->addr, __entry->access, __entry->trap)
0185 );
0186 
0187 
0188 TRACE_EVENT(tlbie,
0189 
0190     TP_PROTO(unsigned long lpid, unsigned long local, unsigned long rb,
0191         unsigned long rs, unsigned long ric, unsigned long prs,
0192         unsigned long r),
0193     TP_ARGS(lpid, local, rb, rs, ric, prs, r),
0194     TP_STRUCT__entry(
0195         __field(unsigned long, lpid)
0196         __field(unsigned long, local)
0197         __field(unsigned long, rb)
0198         __field(unsigned long, rs)
0199         __field(unsigned long, ric)
0200         __field(unsigned long, prs)
0201         __field(unsigned long, r)
0202         ),
0203 
0204     TP_fast_assign(
0205         __entry->lpid = lpid;
0206         __entry->local = local;
0207         __entry->rb = rb;
0208         __entry->rs = rs;
0209         __entry->ric = ric;
0210         __entry->prs = prs;
0211         __entry->r = r;
0212         ),
0213 
0214     TP_printk("lpid=%ld, local=%ld, rb=0x%lx, rs=0x%lx, ric=0x%lx, "
0215         "prs=0x%lx, r=0x%lx", __entry->lpid, __entry->local,
0216         __entry->rb, __entry->rs, __entry->ric, __entry->prs,
0217         __entry->r)
0218 );
0219 
0220 TRACE_EVENT(tlbia,
0221 
0222     TP_PROTO(unsigned long id),
0223     TP_ARGS(id),
0224     TP_STRUCT__entry(
0225         __field(unsigned long, id)
0226         ),
0227 
0228     TP_fast_assign(
0229         __entry->id = id;
0230         ),
0231 
0232     TP_printk("ctx.id=0x%lx", __entry->id)
0233 );
0234 
0235 #endif /* _TRACE_POWERPC_H */
0236 
0237 #undef TRACE_INCLUDE_PATH
0238 #undef TRACE_INCLUDE_FILE
0239 
0240 #define TRACE_INCLUDE_PATH asm
0241 #define TRACE_INCLUDE_FILE trace
0242 
0243 #include <trace/define_trace.h>