msr-trace.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #undef TRACE_SYSTEM
  3. #define TRACE_SYSTEM msr
  4. #undef TRACE_INCLUDE_FILE
  5. #define TRACE_INCLUDE_FILE msr-trace
  6. #undef TRACE_INCLUDE_PATH
  7. #define TRACE_INCLUDE_PATH asm/
  8. #if !defined(_TRACE_MSR_H) || defined(TRACE_HEADER_MULTI_READ)
  9. #define _TRACE_MSR_H
  10. #include <linux/tracepoint.h>
  11. /*
  12. * Tracing for x86 model specific registers. Directly maps to the
  13. * RDMSR/WRMSR instructions.
  14. */
  15. DECLARE_EVENT_CLASS(msr_trace_class,
  16. TP_PROTO(unsigned msr, u64 val, int failed),
  17. TP_ARGS(msr, val, failed),
  18. TP_STRUCT__entry(
  19. __field( unsigned, msr )
  20. __field( u64, val )
  21. __field( int, failed )
  22. ),
  23. TP_fast_assign(
  24. __entry->msr = msr;
  25. __entry->val = val;
  26. __entry->failed = failed;
  27. ),
  28. TP_printk("%x, value %llx%s",
  29. __entry->msr,
  30. __entry->val,
  31. __entry->failed ? " #GP" : "")
  32. );
  33. DEFINE_EVENT(msr_trace_class, read_msr,
  34. TP_PROTO(unsigned msr, u64 val, int failed),
  35. TP_ARGS(msr, val, failed)
  36. );
  37. DEFINE_EVENT(msr_trace_class, write_msr,
  38. TP_PROTO(unsigned msr, u64 val, int failed),
  39. TP_ARGS(msr, val, failed)
  40. );
  41. DEFINE_EVENT(msr_trace_class, rdpmc,
  42. TP_PROTO(unsigned msr, u64 val, int failed),
  43. TP_ARGS(msr, val, failed)
  44. );
  45. #endif /* _TRACE_MSR_H */
  46. /* This part must be outside protection */
  47. #include <trace/define_trace.h>