trace.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. /* SPDX-License-Identifier: GPL-2.0+ */
  2. // Copyright 2017 IBM Corp.
  3. #undef TRACE_SYSTEM
  4. #define TRACE_SYSTEM ocxl
  5. #if !defined(_TRACE_OCXL_H) || defined(TRACE_HEADER_MULTI_READ)
  6. #define _TRACE_OCXL_H
  7. #include <linux/tracepoint.h>
  8. DECLARE_EVENT_CLASS(ocxl_context,
  9. TP_PROTO(pid_t pid, void *spa, int pasid, u32 pidr, u32 tidr),
  10. TP_ARGS(pid, spa, pasid, pidr, tidr),
  11. TP_STRUCT__entry(
  12. __field(pid_t, pid)
  13. __field(void*, spa)
  14. __field(int, pasid)
  15. __field(u32, pidr)
  16. __field(u32, tidr)
  17. ),
  18. TP_fast_assign(
  19. __entry->pid = pid;
  20. __entry->spa = spa;
  21. __entry->pasid = pasid;
  22. __entry->pidr = pidr;
  23. __entry->tidr = tidr;
  24. ),
  25. TP_printk("linux pid=%d spa=0x%p pasid=0x%x pidr=0x%x tidr=0x%x",
  26. __entry->pid,
  27. __entry->spa,
  28. __entry->pasid,
  29. __entry->pidr,
  30. __entry->tidr
  31. )
  32. );
  33. DEFINE_EVENT(ocxl_context, ocxl_context_add,
  34. TP_PROTO(pid_t pid, void *spa, int pasid, u32 pidr, u32 tidr),
  35. TP_ARGS(pid, spa, pasid, pidr, tidr)
  36. );
  37. DEFINE_EVENT(ocxl_context, ocxl_context_remove,
  38. TP_PROTO(pid_t pid, void *spa, int pasid, u32 pidr, u32 tidr),
  39. TP_ARGS(pid, spa, pasid, pidr, tidr)
  40. );
  41. TRACE_EVENT(ocxl_terminate_pasid,
  42. TP_PROTO(int pasid, int rc),
  43. TP_ARGS(pasid, rc),
  44. TP_STRUCT__entry(
  45. __field(int, pasid)
  46. __field(int, rc)
  47. ),
  48. TP_fast_assign(
  49. __entry->pasid = pasid;
  50. __entry->rc = rc;
  51. ),
  52. TP_printk("pasid=0x%x rc=%d",
  53. __entry->pasid,
  54. __entry->rc
  55. )
  56. );
  57. DECLARE_EVENT_CLASS(ocxl_fault_handler,
  58. TP_PROTO(void *spa, u64 pe, u64 dsisr, u64 dar, u64 tfc),
  59. TP_ARGS(spa, pe, dsisr, dar, tfc),
  60. TP_STRUCT__entry(
  61. __field(void *, spa)
  62. __field(u64, pe)
  63. __field(u64, dsisr)
  64. __field(u64, dar)
  65. __field(u64, tfc)
  66. ),
  67. TP_fast_assign(
  68. __entry->spa = spa;
  69. __entry->pe = pe;
  70. __entry->dsisr = dsisr;
  71. __entry->dar = dar;
  72. __entry->tfc = tfc;
  73. ),
  74. TP_printk("spa=%p pe=0x%llx dsisr=0x%llx dar=0x%llx tfc=0x%llx",
  75. __entry->spa,
  76. __entry->pe,
  77. __entry->dsisr,
  78. __entry->dar,
  79. __entry->tfc
  80. )
  81. );
  82. DEFINE_EVENT(ocxl_fault_handler, ocxl_fault,
  83. TP_PROTO(void *spa, u64 pe, u64 dsisr, u64 dar, u64 tfc),
  84. TP_ARGS(spa, pe, dsisr, dar, tfc)
  85. );
  86. DEFINE_EVENT(ocxl_fault_handler, ocxl_fault_ack,
  87. TP_PROTO(void *spa, u64 pe, u64 dsisr, u64 dar, u64 tfc),
  88. TP_ARGS(spa, pe, dsisr, dar, tfc)
  89. );
  90. TRACE_EVENT(ocxl_afu_irq_alloc,
  91. TP_PROTO(int pasid, int irq_id, unsigned int virq, int hw_irq),
  92. TP_ARGS(pasid, irq_id, virq, hw_irq),
  93. TP_STRUCT__entry(
  94. __field(int, pasid)
  95. __field(int, irq_id)
  96. __field(unsigned int, virq)
  97. __field(int, hw_irq)
  98. ),
  99. TP_fast_assign(
  100. __entry->pasid = pasid;
  101. __entry->irq_id = irq_id;
  102. __entry->virq = virq;
  103. __entry->hw_irq = hw_irq;
  104. ),
  105. TP_printk("pasid=0x%x irq_id=%d virq=%u hw_irq=%d",
  106. __entry->pasid,
  107. __entry->irq_id,
  108. __entry->virq,
  109. __entry->hw_irq
  110. )
  111. );
  112. TRACE_EVENT(ocxl_afu_irq_free,
  113. TP_PROTO(int pasid, int irq_id),
  114. TP_ARGS(pasid, irq_id),
  115. TP_STRUCT__entry(
  116. __field(int, pasid)
  117. __field(int, irq_id)
  118. ),
  119. TP_fast_assign(
  120. __entry->pasid = pasid;
  121. __entry->irq_id = irq_id;
  122. ),
  123. TP_printk("pasid=0x%x irq_id=%d",
  124. __entry->pasid,
  125. __entry->irq_id
  126. )
  127. );
  128. TRACE_EVENT(ocxl_afu_irq_receive,
  129. TP_PROTO(int virq),
  130. TP_ARGS(virq),
  131. TP_STRUCT__entry(
  132. __field(int, virq)
  133. ),
  134. TP_fast_assign(
  135. __entry->virq = virq;
  136. ),
  137. TP_printk("virq=%d",
  138. __entry->virq
  139. )
  140. );
  141. #endif /* _TRACE_OCXL_H */
  142. /* This part must be outside protection */
  143. #undef TRACE_INCLUDE_PATH
  144. #define TRACE_INCLUDE_PATH .
  145. #define TRACE_INCLUDE_FILE trace
  146. #include <trace/define_trace.h>