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