mali_kbase_trace_defs.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. /*
  2. *
  3. * (C) COPYRIGHT 2011-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. /* ***** IMPORTANT: THIS IS NOT A NORMAL HEADER FILE *****
  16. * ***** DO NOT INCLUDE DIRECTLY *****
  17. * ***** THE LACK OF HEADER GUARDS IS INTENTIONAL ***** */
  18. /*
  19. * The purpose of this header file is just to contain a list of trace code idenitifers
  20. *
  21. * Each identifier is wrapped in a macro, so that its string form and enum form can be created
  22. *
  23. * Each macro is separated with a comma, to allow insertion into an array initializer or enum definition block.
  24. *
  25. * This allows automatic creation of an enum and a corresponding array of strings
  26. *
  27. * Before #including, the includer MUST #define KBASE_TRACE_CODE_MAKE_CODE.
  28. * After #including, the includer MUST #under KBASE_TRACE_CODE_MAKE_CODE.
  29. *
  30. * e.g.:
  31. * #define KBASE_TRACE_CODE( X ) KBASE_TRACE_CODE_ ## X
  32. * typedef enum
  33. * {
  34. * #define KBASE_TRACE_CODE_MAKE_CODE( X ) KBASE_TRACE_CODE( X )
  35. * #include "mali_kbase_trace_defs.h"
  36. * #undef KBASE_TRACE_CODE_MAKE_CODE
  37. * } kbase_trace_code;
  38. *
  39. * IMPORTANT: THIS FILE MUST NOT BE USED FOR ANY OTHER PURPOSE OTHER THAN THE ABOVE
  40. *
  41. *
  42. * The use of the macro here is:
  43. * - KBASE_TRACE_CODE_MAKE_CODE( X )
  44. *
  45. * Which produces:
  46. * - For an enum, KBASE_TRACE_CODE_X
  47. * - For a string, "X"
  48. *
  49. *
  50. * For example:
  51. * - KBASE_TRACE_CODE_MAKE_CODE( JM_JOB_COMPLETE ) expands to:
  52. * - KBASE_TRACE_CODE_JM_JOB_COMPLETE for the enum
  53. * - "JM_JOB_COMPLETE" for the string
  54. * - To use it to trace an event, do:
  55. * - KBASE_TRACE_ADD( kbdev, JM_JOB_COMPLETE, subcode, kctx, uatom, val );
  56. */
  57. #if 0 // Dummy section to avoid breaking formatting
  58. int dummy_array[] = {
  59. #endif
  60. /*
  61. * Core events
  62. */
  63. /* no info_val, no gpu_addr, no atom */
  64. KBASE_TRACE_CODE_MAKE_CODE(CORE_CTX_DESTROY),
  65. /* no info_val, no gpu_addr, no atom */
  66. KBASE_TRACE_CODE_MAKE_CODE(CORE_CTX_HWINSTR_TERM),
  67. /* info_val == GPU_IRQ_STATUS register */
  68. KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_IRQ),
  69. /* info_val == bits cleared */
  70. KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_IRQ_CLEAR),
  71. /* info_val == GPU_IRQ_STATUS register */
  72. KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_IRQ_DONE),
  73. KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_SOFT_RESET),
  74. KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_HARD_RESET),
  75. KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_PRFCNT_CLEAR),
  76. /* GPU addr==dump address */
  77. KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_PRFCNT_SAMPLE),
  78. KBASE_TRACE_CODE_MAKE_CODE(CORE_GPU_CLEAN_INV_CACHES),
  79. /*
  80. * Job Slot management events
  81. */
  82. /* info_val==irq rawstat at start */
  83. KBASE_TRACE_CODE_MAKE_CODE(JM_IRQ),
  84. /* info_val==jobs processed */
  85. KBASE_TRACE_CODE_MAKE_CODE(JM_IRQ_END),
  86. /* In the following:
  87. *
  88. * - ctx is set if a corresponding job found (NULL otherwise, e.g. some soft-stop cases)
  89. * - uatom==kernel-side mapped uatom address (for correlation with user-side)
  90. */
  91. /* info_val==exit code; gpu_addr==chain gpuaddr */
  92. KBASE_TRACE_CODE_MAKE_CODE(JM_JOB_DONE),
  93. /* gpu_addr==JS_HEAD_NEXT written, info_val==lower 32 bits of affinity */
  94. KBASE_TRACE_CODE_MAKE_CODE(JM_SUBMIT),
  95. /* gpu_addr is as follows:
  96. * - If JS_STATUS active after soft-stop, val==gpu addr written to
  97. * JS_HEAD on submit
  98. * - otherwise gpu_addr==0 */
  99. KBASE_TRACE_CODE_MAKE_CODE(JM_SOFTSTOP),
  100. KBASE_TRACE_CODE_MAKE_CODE(JM_SOFTSTOP_0),
  101. KBASE_TRACE_CODE_MAKE_CODE(JM_SOFTSTOP_1),
  102. /* gpu_addr==JS_HEAD read */
  103. KBASE_TRACE_CODE_MAKE_CODE(JM_HARDSTOP),
  104. /* gpu_addr==JS_HEAD read */
  105. KBASE_TRACE_CODE_MAKE_CODE(JM_HARDSTOP_0),
  106. /* gpu_addr==JS_HEAD read */
  107. KBASE_TRACE_CODE_MAKE_CODE(JM_HARDSTOP_1),
  108. /* gpu_addr==JS_TAIL read */
  109. KBASE_TRACE_CODE_MAKE_CODE(JM_UPDATE_HEAD),
  110. /* gpu_addr is as follows:
  111. * - If JS_STATUS active before soft-stop, val==JS_HEAD
  112. * - otherwise gpu_addr==0
  113. */
  114. /* gpu_addr==JS_HEAD read */
  115. KBASE_TRACE_CODE_MAKE_CODE(JM_CHECK_HEAD),
  116. KBASE_TRACE_CODE_MAKE_CODE(JM_FLUSH_WORKQS),
  117. KBASE_TRACE_CODE_MAKE_CODE(JM_FLUSH_WORKQS_DONE),
  118. /* info_val == is_scheduled */
  119. KBASE_TRACE_CODE_MAKE_CODE(JM_ZAP_NON_SCHEDULED),
  120. /* info_val == is_scheduled */
  121. KBASE_TRACE_CODE_MAKE_CODE(JM_ZAP_SCHEDULED),
  122. KBASE_TRACE_CODE_MAKE_CODE(JM_ZAP_DONE),
  123. /* info_val == nr jobs submitted */
  124. KBASE_TRACE_CODE_MAKE_CODE(JM_SLOT_SOFT_OR_HARD_STOP),
  125. /* gpu_addr==JS_HEAD_NEXT last written */
  126. KBASE_TRACE_CODE_MAKE_CODE(JM_SLOT_EVICT),
  127. KBASE_TRACE_CODE_MAKE_CODE(JM_SUBMIT_AFTER_RESET),
  128. KBASE_TRACE_CODE_MAKE_CODE(JM_BEGIN_RESET_WORKER),
  129. KBASE_TRACE_CODE_MAKE_CODE(JM_END_RESET_WORKER),
  130. /*
  131. * Job dispatch events
  132. */
  133. /* gpu_addr==value to write into JS_HEAD */
  134. KBASE_TRACE_CODE_MAKE_CODE(JD_DONE),
  135. /* gpu_addr==value to write into JS_HEAD */
  136. KBASE_TRACE_CODE_MAKE_CODE(JD_DONE_WORKER),
  137. /* gpu_addr==value to write into JS_HEAD */
  138. KBASE_TRACE_CODE_MAKE_CODE(JD_DONE_WORKER_END),
  139. /* gpu_addr==value to write into JS_HEAD */
  140. KBASE_TRACE_CODE_MAKE_CODE(JD_DONE_TRY_RUN_NEXT_JOB),
  141. /* gpu_addr==0, info_val==0, uatom==0 */
  142. KBASE_TRACE_CODE_MAKE_CODE(JD_ZAP_CONTEXT),
  143. /* gpu_addr==value to write into JS_HEAD */
  144. KBASE_TRACE_CODE_MAKE_CODE(JD_CANCEL),
  145. /* gpu_addr==value to write into JS_HEAD */
  146. KBASE_TRACE_CODE_MAKE_CODE(JD_CANCEL_WORKER),
  147. /*
  148. * Scheduler Core events
  149. */
  150. KBASE_TRACE_CODE_MAKE_CODE(JS_RETAIN_CTX_NOLOCK),
  151. /* gpu_addr==value to write into JS_HEAD */
  152. KBASE_TRACE_CODE_MAKE_CODE(JS_ADD_JOB),
  153. /* gpu_addr==last value written/would be written to JS_HEAD */
  154. KBASE_TRACE_CODE_MAKE_CODE(JS_REMOVE_JOB),
  155. KBASE_TRACE_CODE_MAKE_CODE(JS_RETAIN_CTX),
  156. KBASE_TRACE_CODE_MAKE_CODE(JS_RELEASE_CTX),
  157. KBASE_TRACE_CODE_MAKE_CODE(JS_TRY_SCHEDULE_HEAD_CTX),
  158. /* gpu_addr==value to write into JS_HEAD */
  159. KBASE_TRACE_CODE_MAKE_CODE(JS_JOB_DONE_TRY_RUN_NEXT_JOB),
  160. /* gpu_addr==value to write into JS_HEAD */
  161. KBASE_TRACE_CODE_MAKE_CODE(JS_JOB_DONE_RETRY_NEEDED),
  162. /* kctx is the one being evicted, info_val == kctx to put in */
  163. KBASE_TRACE_CODE_MAKE_CODE(JS_FAST_START_EVICTS_CTX),
  164. KBASE_TRACE_CODE_MAKE_CODE(JS_AFFINITY_SUBMIT_TO_BLOCKED),
  165. /* info_val == lower 32 bits of affinity */
  166. KBASE_TRACE_CODE_MAKE_CODE(JS_AFFINITY_CURRENT),
  167. /* info_val == lower 32 bits of affinity */
  168. KBASE_TRACE_CODE_MAKE_CODE(JS_CORE_REF_REQUEST_CORES_FAILED),
  169. /* info_val == lower 32 bits of affinity */
  170. KBASE_TRACE_CODE_MAKE_CODE(JS_CORE_REF_REGISTER_INUSE_FAILED),
  171. /* info_val == lower 32 bits of rechecked affinity */
  172. KBASE_TRACE_CODE_MAKE_CODE(JS_CORE_REF_REQUEST_ON_RECHECK_FAILED),
  173. /* info_val == lower 32 bits of rechecked affinity */
  174. KBASE_TRACE_CODE_MAKE_CODE(JS_CORE_REF_REGISTER_ON_RECHECK_FAILED),
  175. /* info_val == lower 32 bits of affinity */
  176. KBASE_TRACE_CODE_MAKE_CODE(JS_CORE_REF_AFFINITY_WOULD_VIOLATE),
  177. /* info_val == the ctx attribute now on ctx */
  178. KBASE_TRACE_CODE_MAKE_CODE(JS_CTX_ATTR_NOW_ON_CTX),
  179. /* info_val == the ctx attribute now on runpool */
  180. KBASE_TRACE_CODE_MAKE_CODE(JS_CTX_ATTR_NOW_ON_RUNPOOL),
  181. /* info_val == the ctx attribute now off ctx */
  182. KBASE_TRACE_CODE_MAKE_CODE(JS_CTX_ATTR_NOW_OFF_CTX),
  183. /* info_val == the ctx attribute now off runpool */
  184. KBASE_TRACE_CODE_MAKE_CODE(JS_CTX_ATTR_NOW_OFF_RUNPOOL),
  185. /*
  186. * Scheduler Policy events
  187. */
  188. KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_INIT_CTX),
  189. KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_TERM_CTX),
  190. /* info_val == whether it was evicted */
  191. KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_TRY_EVICT_CTX),
  192. KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_FOREACH_CTX_JOBS),
  193. KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_ENQUEUE_CTX),
  194. KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_DEQUEUE_HEAD_CTX),
  195. KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_RUNPOOL_ADD_CTX),
  196. KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_RUNPOOL_REMOVE_CTX),
  197. KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_DEQUEUE_JOB),
  198. KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_DEQUEUE_JOB_IRQ),
  199. /* gpu_addr==JS_HEAD to write if the job were run */
  200. KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_ENQUEUE_JOB),
  201. KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_TIMER_START),
  202. KBASE_TRACE_CODE_MAKE_CODE(JS_POLICY_TIMER_END),
  203. /*
  204. * Power Management Events
  205. */
  206. KBASE_TRACE_CODE_MAKE_CODE(PM_JOB_SUBMIT_AFTER_POWERING_UP),
  207. KBASE_TRACE_CODE_MAKE_CODE(PM_JOB_SUBMIT_AFTER_POWERED_UP),
  208. KBASE_TRACE_CODE_MAKE_CODE(PM_PWRON),
  209. KBASE_TRACE_CODE_MAKE_CODE(PM_PWRON_TILER),
  210. KBASE_TRACE_CODE_MAKE_CODE(PM_PWRON_L2),
  211. KBASE_TRACE_CODE_MAKE_CODE(PM_PWROFF),
  212. KBASE_TRACE_CODE_MAKE_CODE(PM_PWROFF_TILER),
  213. KBASE_TRACE_CODE_MAKE_CODE(PM_PWROFF_L2),
  214. KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_POWERED),
  215. KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_POWERED_TILER),
  216. KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_POWERED_L2),
  217. KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_CHANGE_DESIRED),
  218. KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_CHANGE_DESIRED_TILER),
  219. KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_CHANGE_AVAILABLE),
  220. KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_CHANGE_AVAILABLE_TILER),
  221. KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_AVAILABLE),
  222. KBASE_TRACE_CODE_MAKE_CODE(PM_CORES_AVAILABLE_TILER),
  223. /* PM_DESIRED_REACHED: gpu_addr == pm.gpu_in_desired_state */
  224. KBASE_TRACE_CODE_MAKE_CODE(PM_DESIRED_REACHED),
  225. KBASE_TRACE_CODE_MAKE_CODE(PM_DESIRED_REACHED_TILER),
  226. KBASE_TRACE_CODE_MAKE_CODE(PM_REGISTER_CHANGE_SHADER_INUSE),
  227. KBASE_TRACE_CODE_MAKE_CODE(PM_REGISTER_CHANGE_TILER_INUSE),
  228. KBASE_TRACE_CODE_MAKE_CODE(PM_REGISTER_CHANGE_SHADER_NEEDED),
  229. KBASE_TRACE_CODE_MAKE_CODE(PM_REGISTER_CHANGE_TILER_NEEDED),
  230. KBASE_TRACE_CODE_MAKE_CODE(PM_RELEASE_CHANGE_SHADER_INUSE),
  231. KBASE_TRACE_CODE_MAKE_CODE(PM_RELEASE_CHANGE_TILER_INUSE),
  232. KBASE_TRACE_CODE_MAKE_CODE(PM_UNREQUEST_CHANGE_SHADER_NEEDED),
  233. KBASE_TRACE_CODE_MAKE_CODE(PM_UNREQUEST_CHANGE_TILER_NEEDED),
  234. KBASE_TRACE_CODE_MAKE_CODE(PM_REQUEST_CHANGE_SHADER_NEEDED),
  235. KBASE_TRACE_CODE_MAKE_CODE(PM_REQUEST_CHANGE_TILER_NEEDED),
  236. KBASE_TRACE_CODE_MAKE_CODE(PM_WAKE_WAITERS),
  237. KBASE_TRACE_CODE_MAKE_CODE(PM_CONTEXT_ACTIVE),
  238. KBASE_TRACE_CODE_MAKE_CODE(PM_CONTEXT_IDLE),
  239. KBASE_TRACE_CODE_MAKE_CODE(PM_GPU_ON),
  240. KBASE_TRACE_CODE_MAKE_CODE(PM_GPU_OFF),
  241. /* info_val == policy number, or -1 for "Already changing" */
  242. KBASE_TRACE_CODE_MAKE_CODE(PM_SET_POLICY),
  243. KBASE_TRACE_CODE_MAKE_CODE(PM_CA_SET_POLICY),
  244. /* info_val == policy number */
  245. KBASE_TRACE_CODE_MAKE_CODE(PM_CURRENT_POLICY_INIT),
  246. /* info_val == policy number */
  247. KBASE_TRACE_CODE_MAKE_CODE(PM_CURRENT_POLICY_TERM),
  248. /* Unused code just to make it easier to not have a comma at the end.
  249. * All other codes MUST come before this */
  250. KBASE_TRACE_CODE_MAKE_CODE(DUMMY)
  251. #if 0 // Dummy section to avoid breaking formatting
  252. };
  253. #endif
  254. /* ***** THE LACK OF HEADER GUARDS IS INTENTIONAL ***** */