mali_linux_kbase_trace.h 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. /*
  2. *
  3. * (C) COPYRIGHT 2014 ARM Limited. All rights reserved.
  4. *
  5. * This program is free software and is provided to you under the terms of the
  6. * GNU General Public License version 2 as published by the Free Software
  7. * Foundation, and any use by you of this program is subject to the terms
  8. * of such GNU licence.
  9. *
  10. * A copy of the licence is included with the program, and can also be obtained
  11. * from Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
  12. * Boston, MA 02110-1301, USA.
  13. *
  14. */
  15. #if !defined(_TRACE_MALI_KBASE_H) || defined(TRACE_HEADER_MULTI_READ)
  16. #define _TRACE_MALI_KBASE_H
  17. #undef TRACE_SYSTEM
  18. #define TRACE_SYSTEM mali
  19. #include <linux/tracepoint.h>
  20. DECLARE_EVENT_CLASS(mali_slot_template,
  21. TP_PROTO(int jobslot, unsigned int info_val),
  22. TP_ARGS(jobslot, info_val),
  23. TP_STRUCT__entry(
  24. __field(unsigned int, jobslot)
  25. __field(unsigned int, info_val)
  26. ),
  27. TP_fast_assign(
  28. __entry->jobslot = jobslot;
  29. __entry->info_val = info_val;
  30. ),
  31. TP_printk("jobslot=%u info=%u", __entry->jobslot, __entry->info_val)
  32. );
  33. #define DEFINE_MALI_SLOT_EVENT(name) \
  34. DEFINE_EVENT(mali_slot_template, mali_##name, \
  35. TP_PROTO(int jobslot, unsigned int info_val), \
  36. TP_ARGS(jobslot, info_val))
  37. DEFINE_MALI_SLOT_EVENT(JM_SUBMIT);
  38. DEFINE_MALI_SLOT_EVENT(JM_JOB_DONE);
  39. DEFINE_MALI_SLOT_EVENT(JM_UPDATE_HEAD);
  40. DEFINE_MALI_SLOT_EVENT(JM_CHECK_HEAD);
  41. DEFINE_MALI_SLOT_EVENT(JM_SOFTSTOP);
  42. DEFINE_MALI_SLOT_EVENT(JM_SOFTSTOP_0);
  43. DEFINE_MALI_SLOT_EVENT(JM_SOFTSTOP_1);
  44. DEFINE_MALI_SLOT_EVENT(JM_HARDSTOP);
  45. DEFINE_MALI_SLOT_EVENT(JM_HARDSTOP_0);
  46. DEFINE_MALI_SLOT_EVENT(JM_HARDSTOP_1);
  47. DEFINE_MALI_SLOT_EVENT(JM_SLOT_SOFT_OR_HARD_STOP);
  48. DEFINE_MALI_SLOT_EVENT(JM_SLOT_EVICT);
  49. DEFINE_MALI_SLOT_EVENT(JM_BEGIN_RESET_WORKER);
  50. DEFINE_MALI_SLOT_EVENT(JM_END_RESET_WORKER);
  51. DEFINE_MALI_SLOT_EVENT(JS_CORE_REF_REGISTER_ON_RECHECK_FAILED);
  52. DEFINE_MALI_SLOT_EVENT(JS_AFFINITY_SUBMIT_TO_BLOCKED);
  53. DEFINE_MALI_SLOT_EVENT(JS_AFFINITY_CURRENT);
  54. DEFINE_MALI_SLOT_EVENT(JD_DONE_TRY_RUN_NEXT_JOB);
  55. DEFINE_MALI_SLOT_EVENT(JS_CORE_REF_REQUEST_CORES_FAILED);
  56. DEFINE_MALI_SLOT_EVENT(JS_CORE_REF_REGISTER_INUSE_FAILED);
  57. DEFINE_MALI_SLOT_EVENT(JS_CORE_REF_REQUEST_ON_RECHECK_FAILED);
  58. DEFINE_MALI_SLOT_EVENT(JS_CORE_REF_AFFINITY_WOULD_VIOLATE);
  59. DEFINE_MALI_SLOT_EVENT(JS_JOB_DONE_TRY_RUN_NEXT_JOB);
  60. DEFINE_MALI_SLOT_EVENT(JS_JOB_DONE_RETRY_NEEDED);
  61. DEFINE_MALI_SLOT_EVENT(JS_POLICY_DEQUEUE_JOB);
  62. DEFINE_MALI_SLOT_EVENT(JS_POLICY_DEQUEUE_JOB_IRQ);
  63. #undef DEFINE_MALI_SLOT_EVENT
  64. DECLARE_EVENT_CLASS(mali_refcount_template,
  65. TP_PROTO(int refcount, unsigned int info_val),
  66. TP_ARGS(refcount, info_val),
  67. TP_STRUCT__entry(
  68. __field(unsigned int, refcount)
  69. __field(unsigned int, info_val)
  70. ),
  71. TP_fast_assign(
  72. __entry->refcount = refcount;
  73. __entry->info_val = info_val;
  74. ),
  75. TP_printk("refcount=%u info=%u", __entry->refcount, __entry->info_val)
  76. );
  77. #define DEFINE_MALI_REFCOUNT_EVENT(name) \
  78. DEFINE_EVENT(mali_refcount_template, mali_##name, \
  79. TP_PROTO(int refcount, unsigned int info_val), \
  80. TP_ARGS(refcount, info_val))
  81. DEFINE_MALI_REFCOUNT_EVENT(JS_RETAIN_CTX_NOLOCK);
  82. DEFINE_MALI_REFCOUNT_EVENT(JS_ADD_JOB);
  83. DEFINE_MALI_REFCOUNT_EVENT(JS_REMOVE_JOB);
  84. DEFINE_MALI_REFCOUNT_EVENT(JS_RETAIN_CTX);
  85. DEFINE_MALI_REFCOUNT_EVENT(JS_RELEASE_CTX);
  86. DEFINE_MALI_REFCOUNT_EVENT(JS_TRY_SCHEDULE_HEAD_CTX);
  87. DEFINE_MALI_REFCOUNT_EVENT(JS_POLICY_INIT_CTX);
  88. DEFINE_MALI_REFCOUNT_EVENT(JS_POLICY_TERM_CTX);
  89. DEFINE_MALI_REFCOUNT_EVENT(JS_POLICY_ENQUEUE_CTX);
  90. DEFINE_MALI_REFCOUNT_EVENT(JS_POLICY_DEQUEUE_HEAD_CTX);
  91. DEFINE_MALI_REFCOUNT_EVENT(JS_POLICY_TRY_EVICT_CTX);
  92. DEFINE_MALI_REFCOUNT_EVENT(JS_POLICY_RUNPOOL_ADD_CTX);
  93. DEFINE_MALI_REFCOUNT_EVENT(JS_POLICY_RUNPOOL_REMOVE_CTX);
  94. DEFINE_MALI_REFCOUNT_EVENT(JS_POLICY_FOREACH_CTX_JOBS);
  95. DEFINE_MALI_REFCOUNT_EVENT(PM_CONTEXT_ACTIVE);
  96. DEFINE_MALI_REFCOUNT_EVENT(PM_CONTEXT_IDLE);
  97. #undef DEFINE_MALI_REFCOUNT_EVENT
  98. DECLARE_EVENT_CLASS(mali_add_template,
  99. TP_PROTO(int gpu_addr, unsigned int info_val),
  100. TP_ARGS(gpu_addr, info_val),
  101. TP_STRUCT__entry(
  102. __field(unsigned int, gpu_addr)
  103. __field(unsigned int, info_val)
  104. ),
  105. TP_fast_assign(
  106. __entry->gpu_addr = gpu_addr;
  107. __entry->info_val = info_val;
  108. ),
  109. TP_printk("gpu_addr=%u info=%u", __entry->gpu_addr, __entry->info_val)
  110. );
  111. #define DEFINE_MALI_ADD_EVENT(name) \
  112. DEFINE_EVENT(mali_add_template, mali_##name, \
  113. TP_PROTO(int gpu_addr, unsigned int info_val), \
  114. TP_ARGS(gpu_addr, info_val))
  115. DEFINE_MALI_ADD_EVENT(CORE_CTX_DESTROY);
  116. DEFINE_MALI_ADD_EVENT(CORE_CTX_HWINSTR_TERM);
  117. DEFINE_MALI_ADD_EVENT(CORE_GPU_IRQ);
  118. DEFINE_MALI_ADD_EVENT(CORE_GPU_IRQ_CLEAR);
  119. DEFINE_MALI_ADD_EVENT(CORE_GPU_IRQ_DONE);
  120. DEFINE_MALI_ADD_EVENT(CORE_GPU_SOFT_RESET);
  121. DEFINE_MALI_ADD_EVENT(CORE_GPU_HARD_RESET);
  122. DEFINE_MALI_ADD_EVENT(CORE_GPU_PRFCNT_SAMPLE);
  123. DEFINE_MALI_ADD_EVENT(CORE_GPU_PRFCNT_CLEAR);
  124. DEFINE_MALI_ADD_EVENT(CORE_GPU_CLEAN_INV_CACHES);
  125. DEFINE_MALI_ADD_EVENT(JD_DONE_WORKER);
  126. DEFINE_MALI_ADD_EVENT(JD_DONE_WORKER_END);
  127. DEFINE_MALI_ADD_EVENT(JD_CANCEL_WORKER);
  128. DEFINE_MALI_ADD_EVENT(JD_DONE);
  129. DEFINE_MALI_ADD_EVENT(JD_CANCEL);
  130. DEFINE_MALI_ADD_EVENT(JD_ZAP_CONTEXT);
  131. DEFINE_MALI_ADD_EVENT(JM_IRQ);
  132. DEFINE_MALI_ADD_EVENT(JM_IRQ_END);
  133. DEFINE_MALI_ADD_EVENT(JM_FLUSH_WORKQS);
  134. DEFINE_MALI_ADD_EVENT(JM_FLUSH_WORKQS_DONE);
  135. DEFINE_MALI_ADD_EVENT(JM_ZAP_NON_SCHEDULED);
  136. DEFINE_MALI_ADD_EVENT(JM_ZAP_SCHEDULED);
  137. DEFINE_MALI_ADD_EVENT(JM_ZAP_DONE);
  138. DEFINE_MALI_ADD_EVENT(JM_SUBMIT_AFTER_RESET);
  139. DEFINE_MALI_ADD_EVENT(JM_JOB_COMPLETE);
  140. DEFINE_MALI_ADD_EVENT(JS_FAST_START_EVICTS_CTX);
  141. DEFINE_MALI_ADD_EVENT(JS_CTX_ATTR_NOW_ON_RUNPOOL);
  142. DEFINE_MALI_ADD_EVENT(JS_CTX_ATTR_NOW_OFF_RUNPOOL);
  143. DEFINE_MALI_ADD_EVENT(JS_CTX_ATTR_NOW_ON_CTX);
  144. DEFINE_MALI_ADD_EVENT(JS_CTX_ATTR_NOW_OFF_CTX);
  145. DEFINE_MALI_ADD_EVENT(JS_POLICY_TIMER_END);
  146. DEFINE_MALI_ADD_EVENT(JS_POLICY_TIMER_START);
  147. DEFINE_MALI_ADD_EVENT(JS_POLICY_ENQUEUE_JOB);
  148. DEFINE_MALI_ADD_EVENT(PM_CORES_CHANGE_DESIRED);
  149. DEFINE_MALI_ADD_EVENT(PM_JOB_SUBMIT_AFTER_POWERING_UP);
  150. DEFINE_MALI_ADD_EVENT(PM_JOB_SUBMIT_AFTER_POWERED_UP);
  151. DEFINE_MALI_ADD_EVENT(PM_PWRON);
  152. DEFINE_MALI_ADD_EVENT(PM_PWRON_TILER);
  153. DEFINE_MALI_ADD_EVENT(PM_PWRON_L2);
  154. DEFINE_MALI_ADD_EVENT(PM_PWROFF);
  155. DEFINE_MALI_ADD_EVENT(PM_PWROFF_TILER);
  156. DEFINE_MALI_ADD_EVENT(PM_PWROFF_L2);
  157. DEFINE_MALI_ADD_EVENT(PM_CORES_POWERED);
  158. DEFINE_MALI_ADD_EVENT(PM_CORES_POWERED_TILER);
  159. DEFINE_MALI_ADD_EVENT(PM_CORES_POWERED_L2);
  160. DEFINE_MALI_ADD_EVENT(PM_DESIRED_REACHED);
  161. DEFINE_MALI_ADD_EVENT(PM_DESIRED_REACHED_TILER);
  162. DEFINE_MALI_ADD_EVENT(PM_UNREQUEST_CHANGE_SHADER_NEEDED);
  163. DEFINE_MALI_ADD_EVENT(PM_REQUEST_CHANGE_SHADER_NEEDED);
  164. DEFINE_MALI_ADD_EVENT(PM_REGISTER_CHANGE_SHADER_NEEDED);
  165. DEFINE_MALI_ADD_EVENT(PM_REGISTER_CHANGE_SHADER_INUSE);
  166. DEFINE_MALI_ADD_EVENT(PM_RELEASE_CHANGE_SHADER_INUSE);
  167. DEFINE_MALI_ADD_EVENT(PM_CORES_AVAILABLE);
  168. DEFINE_MALI_ADD_EVENT(PM_CORES_AVAILABLE_TILER);
  169. DEFINE_MALI_ADD_EVENT(PM_CORES_CHANGE_AVAILABLE);
  170. DEFINE_MALI_ADD_EVENT(PM_CORES_CHANGE_AVAILABLE_TILER);
  171. DEFINE_MALI_ADD_EVENT(PM_GPU_ON);
  172. DEFINE_MALI_ADD_EVENT(PM_GPU_OFF);
  173. DEFINE_MALI_ADD_EVENT(PM_SET_POLICY);
  174. DEFINE_MALI_ADD_EVENT(PM_CURRENT_POLICY_INIT);
  175. DEFINE_MALI_ADD_EVENT(PM_CURRENT_POLICY_TERM);
  176. DEFINE_MALI_ADD_EVENT(PM_CA_SET_POLICY);
  177. DEFINE_MALI_ADD_EVENT(PM_WAKE_WAITERS);
  178. #undef DEFINE_MALI_ADD_EVENT
  179. #endif // !defined(_TRACE_MALI_KBASE_H) || defined(TRACE_HEADER_MULTI_READ)
  180. #undef TRACE_INCLUDE_PATH
  181. #undef linux
  182. #define TRACE_INCLUDE_PATH .
  183. #undef TRACE_INCLUDE_FILE
  184. #define TRACE_INCLUDE_FILE mali_linux_kbase_trace
  185. /* This part must be outside protection */
  186. #include <trace/define_trace.h>