xref: /openbmc/linux/arch/x86/include/asm/msr-trace.h (revision 498495dba268b20e8eadd7fe93c140c68b6cc9d2)
1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
27f47d8ccSAndi Kleen #undef TRACE_SYSTEM
37f47d8ccSAndi Kleen #define TRACE_SYSTEM msr
47f47d8ccSAndi Kleen 
57f47d8ccSAndi Kleen #undef TRACE_INCLUDE_FILE
67f47d8ccSAndi Kleen #define TRACE_INCLUDE_FILE msr-trace
77f47d8ccSAndi Kleen 
87f47d8ccSAndi Kleen #undef TRACE_INCLUDE_PATH
97f47d8ccSAndi Kleen #define TRACE_INCLUDE_PATH asm/
107f47d8ccSAndi Kleen 
117f47d8ccSAndi Kleen #if !defined(_TRACE_MSR_H) || defined(TRACE_HEADER_MULTI_READ)
127f47d8ccSAndi Kleen #define _TRACE_MSR_H
137f47d8ccSAndi Kleen 
147f47d8ccSAndi Kleen #include <linux/tracepoint.h>
157f47d8ccSAndi Kleen 
167f47d8ccSAndi Kleen /*
177f47d8ccSAndi Kleen  * Tracing for x86 model specific registers. Directly maps to the
187f47d8ccSAndi Kleen  * RDMSR/WRMSR instructions.
197f47d8ccSAndi Kleen  */
207f47d8ccSAndi Kleen 
217f47d8ccSAndi Kleen DECLARE_EVENT_CLASS(msr_trace_class,
227f47d8ccSAndi Kleen 	    TP_PROTO(unsigned msr, u64 val, int failed),
237f47d8ccSAndi Kleen 	    TP_ARGS(msr, val, failed),
247f47d8ccSAndi Kleen 	    TP_STRUCT__entry(
257f47d8ccSAndi Kleen 		    __field(	unsigned,	msr )
267f47d8ccSAndi Kleen 		    __field(    u64,		val )
277f47d8ccSAndi Kleen 		    __field(    int,		failed )
287f47d8ccSAndi Kleen 	    ),
297f47d8ccSAndi Kleen 	    TP_fast_assign(
307f47d8ccSAndi Kleen 		    __entry->msr = msr;
317f47d8ccSAndi Kleen 		    __entry->val = val;
327f47d8ccSAndi Kleen 		    __entry->failed = failed;
337f47d8ccSAndi Kleen 	    ),
347f47d8ccSAndi Kleen 	    TP_printk("%x, value %llx%s",
357f47d8ccSAndi Kleen 		      __entry->msr,
367f47d8ccSAndi Kleen 		      __entry->val,
377f47d8ccSAndi Kleen 		      __entry->failed ? " #GP" : "")
387f47d8ccSAndi Kleen );
397f47d8ccSAndi Kleen 
407f47d8ccSAndi Kleen DEFINE_EVENT(msr_trace_class, read_msr,
417f47d8ccSAndi Kleen 	     TP_PROTO(unsigned msr, u64 val, int failed),
427f47d8ccSAndi Kleen 	     TP_ARGS(msr, val, failed)
437f47d8ccSAndi Kleen );
447f47d8ccSAndi Kleen 
457f47d8ccSAndi Kleen DEFINE_EVENT(msr_trace_class, write_msr,
467f47d8ccSAndi Kleen 	     TP_PROTO(unsigned msr, u64 val, int failed),
477f47d8ccSAndi Kleen 	     TP_ARGS(msr, val, failed)
487f47d8ccSAndi Kleen );
497f47d8ccSAndi Kleen 
507f47d8ccSAndi Kleen DEFINE_EVENT(msr_trace_class, rdpmc,
517f47d8ccSAndi Kleen 	     TP_PROTO(unsigned msr, u64 val, int failed),
527f47d8ccSAndi Kleen 	     TP_ARGS(msr, val, failed)
537f47d8ccSAndi Kleen );
547f47d8ccSAndi Kleen 
557f47d8ccSAndi Kleen #endif /* _TRACE_MSR_H */
567f47d8ccSAndi Kleen 
577f47d8ccSAndi Kleen /* This part must be outside protection */
587f47d8ccSAndi Kleen #include <trace/define_trace.h>
59