trace.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. #if !defined(_TRACE_KVM_H) || defined(TRACE_HEADER_MULTI_READ)
  2. #define _TRACE_KVM_H
  3. #include <linux/tracepoint.h>
  4. #undef TRACE_SYSTEM
  5. #define TRACE_SYSTEM kvm
  6. /*
  7. * Tracepoints for entry/exit to guest
  8. */
  9. TRACE_EVENT(kvm_entry,
  10. TP_PROTO(unsigned long vcpu_pc),
  11. TP_ARGS(vcpu_pc),
  12. TP_STRUCT__entry(
  13. __field( unsigned long, vcpu_pc )
  14. ),
  15. TP_fast_assign(
  16. __entry->vcpu_pc = vcpu_pc;
  17. ),
  18. TP_printk("PC: 0x%08lx", __entry->vcpu_pc)
  19. );
  20. TRACE_EVENT(kvm_exit,
  21. TP_PROTO(unsigned long vcpu_pc),
  22. TP_ARGS(vcpu_pc),
  23. TP_STRUCT__entry(
  24. __field( unsigned long, vcpu_pc )
  25. ),
  26. TP_fast_assign(
  27. __entry->vcpu_pc = vcpu_pc;
  28. ),
  29. TP_printk("PC: 0x%08lx", __entry->vcpu_pc)
  30. );
  31. TRACE_EVENT(kvm_irq_line,
  32. TP_PROTO(unsigned int type, int vcpu_idx, int irq_num, int level),
  33. TP_ARGS(type, vcpu_idx, irq_num, level),
  34. TP_STRUCT__entry(
  35. __field( unsigned int, type )
  36. __field( int, vcpu_idx )
  37. __field( int, irq_num )
  38. __field( int, level )
  39. ),
  40. TP_fast_assign(
  41. __entry->type = type;
  42. __entry->vcpu_idx = vcpu_idx;
  43. __entry->irq_num = irq_num;
  44. __entry->level = level;
  45. ),
  46. TP_printk("Inject %s interrupt (%d), vcpu->idx: %d, num: %d, level: %d",
  47. (__entry->type == KVM_ARM_IRQ_TYPE_CPU) ? "CPU" :
  48. (__entry->type == KVM_ARM_IRQ_TYPE_PPI) ? "VGIC PPI" :
  49. (__entry->type == KVM_ARM_IRQ_TYPE_SPI) ? "VGIC SPI" : "UNKNOWN",
  50. __entry->type, __entry->vcpu_idx, __entry->irq_num, __entry->level)
  51. );
  52. TRACE_EVENT(kvm_unmap_hva,
  53. TP_PROTO(unsigned long hva),
  54. TP_ARGS(hva),
  55. TP_STRUCT__entry(
  56. __field( unsigned long, hva )
  57. ),
  58. TP_fast_assign(
  59. __entry->hva = hva;
  60. ),
  61. TP_printk("mmu notifier unmap hva: %#08lx", __entry->hva)
  62. );
  63. TRACE_EVENT(kvm_unmap_hva_range,
  64. TP_PROTO(unsigned long start, unsigned long end),
  65. TP_ARGS(start, end),
  66. TP_STRUCT__entry(
  67. __field( unsigned long, start )
  68. __field( unsigned long, end )
  69. ),
  70. TP_fast_assign(
  71. __entry->start = start;
  72. __entry->end = end;
  73. ),
  74. TP_printk("mmu notifier unmap range: %#08lx -- %#08lx",
  75. __entry->start, __entry->end)
  76. );
  77. TRACE_EVENT(kvm_set_spte_hva,
  78. TP_PROTO(unsigned long hva),
  79. TP_ARGS(hva),
  80. TP_STRUCT__entry(
  81. __field( unsigned long, hva )
  82. ),
  83. TP_fast_assign(
  84. __entry->hva = hva;
  85. ),
  86. TP_printk("mmu notifier set pte hva: %#08lx", __entry->hva)
  87. );
  88. #endif /* _TRACE_KVM_H */
  89. #undef TRACE_INCLUDE_PATH
  90. #define TRACE_INCLUDE_PATH arch/arm/kvm
  91. #undef TRACE_INCLUDE_FILE
  92. #define TRACE_INCLUDE_FILE trace
  93. /* This part must be outside protection */
  94. #include <trace/define_trace.h>