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