1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2 /* 3 * 4 * (C) COPYRIGHT 2011-2015, 2018-2022 ARM Limited. All rights reserved. 5 * 6 * This program is free software and is provided to you under the terms of the 7 * GNU General Public License version 2 as published by the Free Software 8 * Foundation, and any use by you of this program is subject to the terms 9 * of such GNU license. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program; if not, you can access it online at 18 * http://www.gnu.org/licenses/gpl-2.0.html. 19 * 20 */ 21 22 /* 23 * ***** IMPORTANT: THIS IS NOT A NORMAL HEADER FILE ***** 24 * ***** DO NOT INCLUDE DIRECTLY ***** 25 * ***** THE LACK OF HEADER GUARDS IS INTENTIONAL ***** 26 */ 27 28 /* 29 * The purpose of this header file is just to contain a list of trace code 30 * identifiers 31 * 32 * When updating this file, also remember to update 33 * mali_kbase_debug_linux_ktrace.h 34 * 35 * Each identifier is wrapped in a macro, so that its string form and enum form 36 * can be created 37 * 38 * Each macro is separated with a comma, to allow insertion into an array 39 * initializer or enum definition block. 40 * 41 * This allows automatic creation of an enum and a corresponding array of 42 * strings 43 * 44 * Before #including, the includer MUST #define KBASE_KTRACE_CODE_MAKE_CODE. 45 * After #including, the includer MUST #under KBASE_KTRACE_CODE_MAKE_CODE. 46 * 47 * e.g.: 48 * #define KBASE_KTRACE_CODE( X ) KBASE_KTRACE_CODE_ ## X 49 * typedef enum 50 * { 51 * #define KBASE_KTRACE_CODE_MAKE_CODE( X ) KBASE_KTRACE_CODE( X ) 52 * #include "mali_kbase_debug_ktrace_codes.h" 53 * #undef KBASE_KTRACE_CODE_MAKE_CODE 54 * } kbase_ktrace_code; 55 * 56 * IMPORTANT: THIS FILE MUST NOT BE USED FOR ANY OTHER PURPOSE OTHER THAN THE ABOVE 57 * 58 * 59 * The use of the macro here is: 60 * - KBASE_KTRACE_CODE_MAKE_CODE( X ) 61 * 62 * Which produces: 63 * - For an enum, KBASE_KTRACE_CODE_X 64 * - For a string, "X" 65 * 66 * 67 * For example: 68 * - KBASE_KTRACE_CODE_MAKE_CODE( JM_JOB_COMPLETE ) expands to: 69 * - KBASE_KTRACE_CODE_JM_JOB_COMPLETE for the enum 70 * - "JM_JOB_COMPLETE" for the string 71 * - To use it to trace an event, do: 72 * - KBASE_KTRACE_ADD( kbdev, JM_JOB_COMPLETE, subcode, kctx, uatom, val ); 73 */ 74 75 #if 0 /* Dummy section to avoid breaking formatting */ 76 int dummy_array[] = { 77 #endif 78 79 /* 80 * Core events 81 */ 82 /* no info_val */ 83 KBASE_KTRACE_CODE_MAKE_CODE(CORE_CTX_DESTROY), 84 /* no info_val */ 85 KBASE_KTRACE_CODE_MAKE_CODE(CORE_CTX_HWINSTR_TERM), 86 /* info_val == GPU_IRQ_STATUS register */ 87 KBASE_KTRACE_CODE_MAKE_CODE(CORE_GPU_IRQ), 88 /* info_val == bits cleared */ 89 KBASE_KTRACE_CODE_MAKE_CODE(CORE_GPU_IRQ_CLEAR), 90 /* info_val == GPU_IRQ_STATUS register */ 91 KBASE_KTRACE_CODE_MAKE_CODE(CORE_GPU_IRQ_DONE), 92 KBASE_KTRACE_CODE_MAKE_CODE(CORE_GPU_SOFT_RESET), 93 KBASE_KTRACE_CODE_MAKE_CODE(CORE_GPU_HARD_RESET), 94 KBASE_KTRACE_CODE_MAKE_CODE(CORE_GPU_PRFCNT_CLEAR), 95 /* info_val == dump address */ 96 KBASE_KTRACE_CODE_MAKE_CODE(CORE_GPU_PRFCNT_SAMPLE), 97 KBASE_KTRACE_CODE_MAKE_CODE(CORE_GPU_CLEAN_INV_CACHES), 98 99 /* 100 * Power Management Events 101 */ 102 KBASE_KTRACE_CODE_MAKE_CODE(PM_JOB_SUBMIT_AFTER_POWERING_UP), 103 KBASE_KTRACE_CODE_MAKE_CODE(PM_JOB_SUBMIT_AFTER_POWERED_UP), 104 KBASE_KTRACE_CODE_MAKE_CODE(PM_PWRON), 105 KBASE_KTRACE_CODE_MAKE_CODE(PM_PWRON_TILER), 106 KBASE_KTRACE_CODE_MAKE_CODE(PM_PWRON_L2), 107 KBASE_KTRACE_CODE_MAKE_CODE(PM_PWROFF), 108 KBASE_KTRACE_CODE_MAKE_CODE(PM_PWROFF_TILER), 109 KBASE_KTRACE_CODE_MAKE_CODE(PM_PWROFF_L2), 110 KBASE_KTRACE_CODE_MAKE_CODE(PM_CORES_POWERED), 111 KBASE_KTRACE_CODE_MAKE_CODE(PM_CORES_POWERED_TILER), 112 KBASE_KTRACE_CODE_MAKE_CODE(PM_CORES_POWERED_L2), 113 KBASE_KTRACE_CODE_MAKE_CODE(PM_CORES_CHANGE_DESIRED), 114 KBASE_KTRACE_CODE_MAKE_CODE(PM_CORES_CHANGE_DESIRED_TILER), 115 KBASE_KTRACE_CODE_MAKE_CODE(PM_CORES_CHANGE_AVAILABLE), 116 KBASE_KTRACE_CODE_MAKE_CODE(PM_CORES_CHANGE_AVAILABLE_TILER), 117 KBASE_KTRACE_CODE_MAKE_CODE(PM_CORES_CHANGE_AVAILABLE_L2), 118 KBASE_KTRACE_CODE_MAKE_CODE(PM_CORES_AVAILABLE), 119 KBASE_KTRACE_CODE_MAKE_CODE(PM_CORES_AVAILABLE_TILER), 120 KBASE_KTRACE_CODE_MAKE_CODE(PM_DESIRED_REACHED), 121 KBASE_KTRACE_CODE_MAKE_CODE(PM_DESIRED_REACHED_TILER), 122 KBASE_KTRACE_CODE_MAKE_CODE(PM_RELEASE_CHANGE_SHADER_NEEDED), 123 KBASE_KTRACE_CODE_MAKE_CODE(PM_RELEASE_CHANGE_TILER_NEEDED), 124 KBASE_KTRACE_CODE_MAKE_CODE(PM_REQUEST_CHANGE_SHADER_NEEDED), 125 KBASE_KTRACE_CODE_MAKE_CODE(PM_REQUEST_CHANGE_TILER_NEEDED), 126 KBASE_KTRACE_CODE_MAKE_CODE(PM_WAKE_WAITERS), 127 /* info_val == kbdev->pm.active_count*/ 128 KBASE_KTRACE_CODE_MAKE_CODE(PM_CONTEXT_ACTIVE), 129 /* info_val == kbdev->pm.active_count*/ 130 KBASE_KTRACE_CODE_MAKE_CODE(PM_CONTEXT_IDLE), 131 KBASE_KTRACE_CODE_MAKE_CODE(PM_GPU_ON), 132 KBASE_KTRACE_CODE_MAKE_CODE(PM_GPU_OFF), 133 /* info_val == policy number, or -1 for "Already changing" */ 134 KBASE_KTRACE_CODE_MAKE_CODE(PM_SET_POLICY), 135 KBASE_KTRACE_CODE_MAKE_CODE(PM_CA_SET_POLICY), 136 /* info_val == policy number */ 137 KBASE_KTRACE_CODE_MAKE_CODE(PM_CURRENT_POLICY_INIT), 138 /* info_val == policy number */ 139 KBASE_KTRACE_CODE_MAKE_CODE(PM_CURRENT_POLICY_TERM), 140 141 KBASE_KTRACE_CODE_MAKE_CODE(PM_POWEROFF_WAIT_WQ), 142 KBASE_KTRACE_CODE_MAKE_CODE(PM_RUNTIME_SUSPEND_CALLBACK), 143 KBASE_KTRACE_CODE_MAKE_CODE(PM_RUNTIME_RESUME_CALLBACK), 144 145 /* info_val = l2 state */ 146 #define KBASEP_L2_STATE(n) KBASE_KTRACE_CODE_MAKE_CODE(PM_L2_ ## n), 147 #include "backend/gpu/mali_kbase_pm_l2_states.h" 148 #undef KBASEP_L2_STATE 149 150 /* 151 * Context Scheduler events 152 */ 153 /* info_val == kctx->refcount */ 154 KBASE_KTRACE_CODE_MAKE_CODE(SCHED_RETAIN_CTX_NOLOCK), 155 /* info_val == kctx->refcount */ 156 KBASE_KTRACE_CODE_MAKE_CODE(SCHED_RELEASE_CTX), 157 #ifdef CONFIG_MALI_ARBITER_SUPPORT 158 /* 159 * Arbitration events 160 */ 161 KBASE_KTRACE_CODE_MAKE_CODE(ARB_GPU_LOST), 162 KBASE_KTRACE_CODE_MAKE_CODE(ARB_VM_STATE), 163 KBASE_KTRACE_CODE_MAKE_CODE(ARB_VM_EVT), 164 #endif 165 166 #if MALI_USE_CSF 167 #include "debug/backend/mali_kbase_debug_ktrace_codes_csf.h" 168 #else 169 #include "debug/backend/mali_kbase_debug_ktrace_codes_jm.h" 170 #endif 171 /* 172 * Unused code just to make it easier to not have a comma at the end. 173 * All other codes MUST come before this 174 */ 175 KBASE_KTRACE_CODE_MAKE_CODE(DUMMY) 176 177 #if 0 /* Dummy section to avoid breaking formatting */ 178 }; 179 #endif 180 181 /* ***** THE LACK OF HEADER GUARDS IS INTENTIONAL ***** */ 182