xref: /OK3568_Linux_fs/kernel/drivers/gpu/arm/bifrost/debug/mali_kbase_debug_ktrace_codes.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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