59 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0 */
 | |
| #undef TRACE_SYSTEM
 | |
| #define TRACE_SYSTEM msr
 | |
| 
 | |
| #undef TRACE_INCLUDE_FILE
 | |
| #define TRACE_INCLUDE_FILE msr-trace
 | |
| 
 | |
| #undef TRACE_INCLUDE_PATH
 | |
| #define TRACE_INCLUDE_PATH asm/
 | |
| 
 | |
| #if !defined(_TRACE_MSR_H) || defined(TRACE_HEADER_MULTI_READ)
 | |
| #define _TRACE_MSR_H
 | |
| 
 | |
| #include <linux/tracepoint.h>
 | |
| 
 | |
| /*
 | |
|  * Tracing for x86 model specific registers. Directly maps to the
 | |
|  * RDMSR/WRMSR instructions.
 | |
|  */
 | |
| 
 | |
| DECLARE_EVENT_CLASS(msr_trace_class,
 | |
| 	    TP_PROTO(unsigned msr, u64 val, int failed),
 | |
| 	    TP_ARGS(msr, val, failed),
 | |
| 	    TP_STRUCT__entry(
 | |
| 		    __field(	unsigned,	msr )
 | |
| 		    __field(    u64,		val )
 | |
| 		    __field(    int,		failed )
 | |
| 	    ),
 | |
| 	    TP_fast_assign(
 | |
| 		    __entry->msr = msr;
 | |
| 		    __entry->val = val;
 | |
| 		    __entry->failed = failed;
 | |
| 	    ),
 | |
| 	    TP_printk("%x, value %llx%s",
 | |
| 		      __entry->msr,
 | |
| 		      __entry->val,
 | |
| 		      __entry->failed ? " #GP" : "")
 | |
| );
 | |
| 
 | |
| DEFINE_EVENT(msr_trace_class, read_msr,
 | |
| 	     TP_PROTO(unsigned msr, u64 val, int failed),
 | |
| 	     TP_ARGS(msr, val, failed)
 | |
| );
 | |
| 
 | |
| DEFINE_EVENT(msr_trace_class, write_msr,
 | |
| 	     TP_PROTO(unsigned msr, u64 val, int failed),
 | |
| 	     TP_ARGS(msr, val, failed)
 | |
| );
 | |
| 
 | |
| DEFINE_EVENT(msr_trace_class, rdpmc,
 | |
| 	     TP_PROTO(unsigned msr, u64 val, int failed),
 | |
| 	     TP_ARGS(msr, val, failed)
 | |
| );
 | |
| 
 | |
| #endif /* _TRACE_MSR_H */
 | |
| 
 | |
| /* This part must be outside protection */
 | |
| #include <trace/define_trace.h>
 |