1*8968f9d3SHidetoshi Seto #undef TRACE_SYSTEM 2*8968f9d3SHidetoshi Seto #define TRACE_SYSTEM mce 3*8968f9d3SHidetoshi Seto 4*8968f9d3SHidetoshi Seto #if !defined(_TRACE_MCE_H) || defined(TRACE_HEADER_MULTI_READ) 5*8968f9d3SHidetoshi Seto #define _TRACE_MCE_H 6*8968f9d3SHidetoshi Seto 7*8968f9d3SHidetoshi Seto #include <linux/ktime.h> 8*8968f9d3SHidetoshi Seto #include <linux/tracepoint.h> 9*8968f9d3SHidetoshi Seto #include <asm/mce.h> 10*8968f9d3SHidetoshi Seto 11*8968f9d3SHidetoshi Seto TRACE_EVENT(mce_record, 12*8968f9d3SHidetoshi Seto 13*8968f9d3SHidetoshi Seto TP_PROTO(struct mce *m), 14*8968f9d3SHidetoshi Seto 15*8968f9d3SHidetoshi Seto TP_ARGS(m), 16*8968f9d3SHidetoshi Seto 17*8968f9d3SHidetoshi Seto TP_STRUCT__entry( 18*8968f9d3SHidetoshi Seto __field( u64, mcgcap ) 19*8968f9d3SHidetoshi Seto __field( u64, mcgstatus ) 20*8968f9d3SHidetoshi Seto __field( u8, bank ) 21*8968f9d3SHidetoshi Seto __field( u64, status ) 22*8968f9d3SHidetoshi Seto __field( u64, addr ) 23*8968f9d3SHidetoshi Seto __field( u64, misc ) 24*8968f9d3SHidetoshi Seto __field( u64, ip ) 25*8968f9d3SHidetoshi Seto __field( u8, cs ) 26*8968f9d3SHidetoshi Seto __field( u64, tsc ) 27*8968f9d3SHidetoshi Seto __field( u64, walltime ) 28*8968f9d3SHidetoshi Seto __field( u32, cpu ) 29*8968f9d3SHidetoshi Seto __field( u32, cpuid ) 30*8968f9d3SHidetoshi Seto __field( u32, apicid ) 31*8968f9d3SHidetoshi Seto __field( u32, socketid ) 32*8968f9d3SHidetoshi Seto __field( u8, cpuvendor ) 33*8968f9d3SHidetoshi Seto ), 34*8968f9d3SHidetoshi Seto 35*8968f9d3SHidetoshi Seto TP_fast_assign( 36*8968f9d3SHidetoshi Seto __entry->mcgcap = m->mcgcap; 37*8968f9d3SHidetoshi Seto __entry->mcgstatus = m->mcgstatus; 38*8968f9d3SHidetoshi Seto __entry->bank = m->bank; 39*8968f9d3SHidetoshi Seto __entry->status = m->status; 40*8968f9d3SHidetoshi Seto __entry->addr = m->addr; 41*8968f9d3SHidetoshi Seto __entry->misc = m->misc; 42*8968f9d3SHidetoshi Seto __entry->ip = m->ip; 43*8968f9d3SHidetoshi Seto __entry->cs = m->cs; 44*8968f9d3SHidetoshi Seto __entry->tsc = m->tsc; 45*8968f9d3SHidetoshi Seto __entry->walltime = m->time; 46*8968f9d3SHidetoshi Seto __entry->cpu = m->extcpu; 47*8968f9d3SHidetoshi Seto __entry->cpuid = m->cpuid; 48*8968f9d3SHidetoshi Seto __entry->apicid = m->apicid; 49*8968f9d3SHidetoshi Seto __entry->socketid = m->socketid; 50*8968f9d3SHidetoshi Seto __entry->cpuvendor = m->cpuvendor; 51*8968f9d3SHidetoshi Seto ), 52*8968f9d3SHidetoshi Seto 53*8968f9d3SHidetoshi Seto TP_printk("CPU: %d, MCGc/s: %llx/%llx, MC%d: %016Lx, ADDR/MISC: %016Lx/%016Lx, RIP: %02x:<%016Lx>, TSC: %llx, PROCESSOR: %u:%x, TIME: %llu, SOCKET: %u, APIC: %x", 54*8968f9d3SHidetoshi Seto __entry->cpu, 55*8968f9d3SHidetoshi Seto __entry->mcgcap, __entry->mcgstatus, 56*8968f9d3SHidetoshi Seto __entry->bank, __entry->status, 57*8968f9d3SHidetoshi Seto __entry->addr, __entry->misc, 58*8968f9d3SHidetoshi Seto __entry->cs, __entry->ip, 59*8968f9d3SHidetoshi Seto __entry->tsc, 60*8968f9d3SHidetoshi Seto __entry->cpuvendor, __entry->cpuid, 61*8968f9d3SHidetoshi Seto __entry->walltime, 62*8968f9d3SHidetoshi Seto __entry->socketid, 63*8968f9d3SHidetoshi Seto __entry->apicid) 64*8968f9d3SHidetoshi Seto ); 65*8968f9d3SHidetoshi Seto 66*8968f9d3SHidetoshi Seto #endif /* _TRACE_MCE_H */ 67*8968f9d3SHidetoshi Seto 68*8968f9d3SHidetoshi Seto /* This part must be outside protection */ 69*8968f9d3SHidetoshi Seto #include <trace/define_trace.h> 70