1 #ifndef _G_ENG_STATE_NVOC_H_
2 #define _G_ENG_STATE_NVOC_H_
3 #include "nvoc/runtime.h"
4 
5 #ifdef __cplusplus
6 extern "C" {
7 #endif
8 
9 /*
10  * SPDX-FileCopyrightText: Copyright (c) 1993-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
11  * SPDX-License-Identifier: MIT
12  *
13  * Permission is hereby granted, free of charge, to any person obtaining a
14  * copy of this software and associated documentation files (the "Software"),
15  * to deal in the Software without restriction, including without limitation
16  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
17  * and/or sell copies of the Software, and to permit persons to whom the
18  * Software is furnished to do so, subject to the following conditions:
19  *
20  * The above copyright notice and this permission notice shall be included in
21  * all copies or substantial portions of the Software.
22  *
23  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
24  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
26  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
29  * DEALINGS IN THE SOFTWARE.
30  */
31 #include "g_eng_state_nvoc.h"
32 
33 #ifndef _ENG_STATE_H_
34 #define _ENG_STATE_H_
35 
36 /*!
37  * @file   eng_state.h
38  * @brief  Provides definitions for all OBJENGSTATE data structures and interfaces.
39  */
40 
41 #include "core/core.h"
42 #include "gpu/eng_desc.h"
43 
44 typedef enum ENGSTATE_STATE
45 {
46     ENGSTATE_STATE_UNDEFINED = 0,
47     ENGSTATE_STATE_CONSTRUCT,
48     ENGSTATE_STATE_PRE_INIT,
49     ENGSTATE_STATE_INIT,
50     ENGSTATE_STATE_PRE_LOAD,
51     ENGSTATE_STATE_LOAD,
52     ENGSTATE_STATE_POST_LOAD,
53     ENGSTATE_STATE_PRE_UNLOAD,
54     ENGSTATE_STATE_UNLOAD,
55     ENGSTATE_STATE_POST_UNLOAD,
56     ENGSTATE_STATE_DESTROY,
57     ENGSTATE_STATE_COUNT // Keep this last
58 } ENGSTATE_STATE;
59 
60 // Stats data stored for every state transition
61 typedef struct ENGSTATE_STATS
62 {
63     NvS32 memoryAllocCount;
64     NvS32 memoryAllocSize;
65     NvU32 transitionTimeUs;
66 } ENGSTATE_STATS;
67 
68 // Temporary transition data, not stored
69 typedef struct ENGSTATE_TRANSITION_DATA
70 {
71     NvS64 memoryAllocCount;
72     NvS64 memoryAllocSize;
73     NvU64 transitionStartTimeNs;
74 } ENGSTATE_TRANSITION_DATA;
75 
76 // Engine status for each state
77 typedef struct ENGSTATE_STATUS
78 {
79     NV_STATUS engStatus;
80 #if NV_PRINTF_STRINGS_ALLOWED
81     char name[100];
82 #endif
83 } ENGSTATE_STATUS;
84 
85 typedef struct OBJENGSTATE *POBJENGSTATE;
86 
87 #define ENG_GET_FIFO(p)                 (engstateGetFifo(staticCast((p), OBJENGSTATE)))
88 #define ENG_GET_ENG_DESC(p)             (staticCast((p), OBJENGSTATE)->engDesc)
89 
90 
91 /*!
92  * Defines the structure used to contain all generic information related to
93  * the OBJENGSTATE.
94  */
95 #ifdef NVOC_ENG_STATE_H_PRIVATE_ACCESS_ALLOWED
96 #define PRIVATE_FIELD(x) x
97 #else
98 #define PRIVATE_FIELD(x) NVOC_PRIVATE_FIELD(x)
99 #endif
100 struct OBJENGSTATE {
101     const struct NVOC_RTTI *__nvoc_rtti;
102     struct Object __nvoc_base_Object;
103     struct Object *__nvoc_pbase_Object;
104     struct OBJENGSTATE *__nvoc_pbase_OBJENGSTATE;
105     NV_STATUS (*__engstateConstructEngine__)(POBJGPU, POBJENGSTATE, ENGDESCRIPTOR);
106     void (*__engstateInitMissing__)(POBJGPU, POBJENGSTATE);
107     NV_STATUS (*__engstateStatePreInitLocked__)(POBJGPU, POBJENGSTATE);
108     NV_STATUS (*__engstateStatePreInitUnlocked__)(POBJGPU, POBJENGSTATE);
109     NV_STATUS (*__engstateStateInitLocked__)(POBJGPU, POBJENGSTATE);
110     NV_STATUS (*__engstateStateInitUnlocked__)(POBJGPU, POBJENGSTATE);
111     NV_STATUS (*__engstateStatePreLoad__)(POBJGPU, POBJENGSTATE, NvU32);
112     NV_STATUS (*__engstateStateLoad__)(POBJGPU, POBJENGSTATE, NvU32);
113     NV_STATUS (*__engstateStatePostLoad__)(POBJGPU, POBJENGSTATE, NvU32);
114     NV_STATUS (*__engstateStatePreUnload__)(POBJGPU, POBJENGSTATE, NvU32);
115     NV_STATUS (*__engstateStateUnload__)(POBJGPU, POBJENGSTATE, NvU32);
116     NV_STATUS (*__engstateStatePostUnload__)(POBJGPU, POBJENGSTATE, NvU32);
117     void (*__engstateStateDestroy__)(POBJGPU, POBJENGSTATE);
118     NvBool (*__engstateIsPresent__)(POBJGPU, POBJENGSTATE);
119     NvBool PDB_PROP_ENGSTATE_IS_MISSING;
120     ENGDESCRIPTOR engDesc;
121     struct OBJGPU *pGpu;
122     ENGSTATE_STATE currentState;
123     ENGSTATE_STATS stats[11];
124     ENGSTATE_STATUS status[11];
125     char name[100];
126 };
127 
128 #ifndef __NVOC_CLASS_OBJENGSTATE_TYPEDEF__
129 #define __NVOC_CLASS_OBJENGSTATE_TYPEDEF__
130 typedef struct OBJENGSTATE OBJENGSTATE;
131 #endif /* __NVOC_CLASS_OBJENGSTATE_TYPEDEF__ */
132 
133 #ifndef __nvoc_class_id_OBJENGSTATE
134 #define __nvoc_class_id_OBJENGSTATE 0x7a7ed6
135 #endif /* __nvoc_class_id_OBJENGSTATE */
136 
137 extern const struct NVOC_CLASS_DEF __nvoc_class_def_OBJENGSTATE;
138 
139 #define __staticCast_OBJENGSTATE(pThis) \
140     ((pThis)->__nvoc_pbase_OBJENGSTATE)
141 
142 #ifdef __nvoc_eng_state_h_disabled
143 #define __dynamicCast_OBJENGSTATE(pThis) ((OBJENGSTATE*)NULL)
144 #else //__nvoc_eng_state_h_disabled
145 #define __dynamicCast_OBJENGSTATE(pThis) \
146     ((OBJENGSTATE*)__nvoc_dynamicCast(staticCast((pThis), Dynamic), classInfo(OBJENGSTATE)))
147 #endif //__nvoc_eng_state_h_disabled
148 
149 #define PDB_PROP_ENGSTATE_IS_MISSING_BASE_CAST
150 #define PDB_PROP_ENGSTATE_IS_MISSING_BASE_NAME PDB_PROP_ENGSTATE_IS_MISSING
151 
152 NV_STATUS __nvoc_objCreateDynamic_OBJENGSTATE(OBJENGSTATE**, Dynamic*, NvU32, va_list);
153 
154 NV_STATUS __nvoc_objCreate_OBJENGSTATE(OBJENGSTATE**, Dynamic*, NvU32);
155 #define __objCreate_OBJENGSTATE(ppNewObj, pParent, createFlags) \
156     __nvoc_objCreate_OBJENGSTATE((ppNewObj), staticCast((pParent), Dynamic), (createFlags))
157 
158 #define engstateConstructEngine(pGpu, pEngstate, arg0) engstateConstructEngine_DISPATCH(pGpu, pEngstate, arg0)
159 #define engstateInitMissing(pGpu, pEngstate) engstateInitMissing_DISPATCH(pGpu, pEngstate)
160 #define engstateStatePreInitLocked(pGpu, pEngstate) engstateStatePreInitLocked_DISPATCH(pGpu, pEngstate)
161 #define engstateStatePreInitUnlocked(pGpu, pEngstate) engstateStatePreInitUnlocked_DISPATCH(pGpu, pEngstate)
162 #define engstateStateInitLocked(pGpu, pEngstate) engstateStateInitLocked_DISPATCH(pGpu, pEngstate)
163 #define engstateStateInitUnlocked(pGpu, pEngstate) engstateStateInitUnlocked_DISPATCH(pGpu, pEngstate)
164 #define engstateStatePreLoad(pGpu, pEngstate, arg0) engstateStatePreLoad_DISPATCH(pGpu, pEngstate, arg0)
165 #define engstateStateLoad(pGpu, pEngstate, arg0) engstateStateLoad_DISPATCH(pGpu, pEngstate, arg0)
166 #define engstateStatePostLoad(pGpu, pEngstate, arg0) engstateStatePostLoad_DISPATCH(pGpu, pEngstate, arg0)
167 #define engstateStatePreUnload(pGpu, pEngstate, arg0) engstateStatePreUnload_DISPATCH(pGpu, pEngstate, arg0)
168 #define engstateStateUnload(pGpu, pEngstate, arg0) engstateStateUnload_DISPATCH(pGpu, pEngstate, arg0)
169 #define engstateStatePostUnload(pGpu, pEngstate, arg0) engstateStatePostUnload_DISPATCH(pGpu, pEngstate, arg0)
170 #define engstateStateDestroy(pGpu, pEngstate) engstateStateDestroy_DISPATCH(pGpu, pEngstate)
171 #define engstateIsPresent(pGpu, pEngstate) engstateIsPresent_DISPATCH(pGpu, pEngstate)
172 NV_STATUS engstateConstructEngine_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate, ENGDESCRIPTOR arg0);
173 
174 static inline NV_STATUS engstateConstructEngine_DISPATCH(POBJGPU pGpu, POBJENGSTATE pEngstate, ENGDESCRIPTOR arg0) {
175     return pEngstate->__engstateConstructEngine__(pGpu, pEngstate, arg0);
176 }
177 
178 void engstateInitMissing_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate);
179 
180 static inline void engstateInitMissing_DISPATCH(POBJGPU pGpu, POBJENGSTATE pEngstate) {
181     pEngstate->__engstateInitMissing__(pGpu, pEngstate);
182 }
183 
184 NV_STATUS engstateStatePreInitLocked_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate);
185 
186 static inline NV_STATUS engstateStatePreInitLocked_DISPATCH(POBJGPU pGpu, POBJENGSTATE pEngstate) {
187     return pEngstate->__engstateStatePreInitLocked__(pGpu, pEngstate);
188 }
189 
190 NV_STATUS engstateStatePreInitUnlocked_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate);
191 
192 static inline NV_STATUS engstateStatePreInitUnlocked_DISPATCH(POBJGPU pGpu, POBJENGSTATE pEngstate) {
193     return pEngstate->__engstateStatePreInitUnlocked__(pGpu, pEngstate);
194 }
195 
196 NV_STATUS engstateStateInitLocked_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate);
197 
198 static inline NV_STATUS engstateStateInitLocked_DISPATCH(POBJGPU pGpu, POBJENGSTATE pEngstate) {
199     return pEngstate->__engstateStateInitLocked__(pGpu, pEngstate);
200 }
201 
202 NV_STATUS engstateStateInitUnlocked_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate);
203 
204 static inline NV_STATUS engstateStateInitUnlocked_DISPATCH(POBJGPU pGpu, POBJENGSTATE pEngstate) {
205     return pEngstate->__engstateStateInitUnlocked__(pGpu, pEngstate);
206 }
207 
208 NV_STATUS engstateStatePreLoad_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate, NvU32 arg0);
209 
210 static inline NV_STATUS engstateStatePreLoad_DISPATCH(POBJGPU pGpu, POBJENGSTATE pEngstate, NvU32 arg0) {
211     return pEngstate->__engstateStatePreLoad__(pGpu, pEngstate, arg0);
212 }
213 
214 NV_STATUS engstateStateLoad_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate, NvU32 arg0);
215 
216 static inline NV_STATUS engstateStateLoad_DISPATCH(POBJGPU pGpu, POBJENGSTATE pEngstate, NvU32 arg0) {
217     return pEngstate->__engstateStateLoad__(pGpu, pEngstate, arg0);
218 }
219 
220 NV_STATUS engstateStatePostLoad_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate, NvU32 arg0);
221 
222 static inline NV_STATUS engstateStatePostLoad_DISPATCH(POBJGPU pGpu, POBJENGSTATE pEngstate, NvU32 arg0) {
223     return pEngstate->__engstateStatePostLoad__(pGpu, pEngstate, arg0);
224 }
225 
226 NV_STATUS engstateStatePreUnload_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate, NvU32 arg0);
227 
228 static inline NV_STATUS engstateStatePreUnload_DISPATCH(POBJGPU pGpu, POBJENGSTATE pEngstate, NvU32 arg0) {
229     return pEngstate->__engstateStatePreUnload__(pGpu, pEngstate, arg0);
230 }
231 
232 NV_STATUS engstateStateUnload_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate, NvU32 arg0);
233 
234 static inline NV_STATUS engstateStateUnload_DISPATCH(POBJGPU pGpu, POBJENGSTATE pEngstate, NvU32 arg0) {
235     return pEngstate->__engstateStateUnload__(pGpu, pEngstate, arg0);
236 }
237 
238 NV_STATUS engstateStatePostUnload_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate, NvU32 arg0);
239 
240 static inline NV_STATUS engstateStatePostUnload_DISPATCH(POBJGPU pGpu, POBJENGSTATE pEngstate, NvU32 arg0) {
241     return pEngstate->__engstateStatePostUnload__(pGpu, pEngstate, arg0);
242 }
243 
244 void engstateStateDestroy_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate);
245 
246 static inline void engstateStateDestroy_DISPATCH(POBJGPU pGpu, POBJENGSTATE pEngstate) {
247     pEngstate->__engstateStateDestroy__(pGpu, pEngstate);
248 }
249 
250 NvBool engstateIsPresent_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate);
251 
252 static inline NvBool engstateIsPresent_DISPATCH(POBJGPU pGpu, POBJENGSTATE pEngstate) {
253     return pEngstate->__engstateIsPresent__(pGpu, pEngstate);
254 }
255 
256 NV_STATUS engstateConstructBase_IMPL(struct OBJENGSTATE *arg0, struct OBJGPU *arg1, ENGDESCRIPTOR arg2);
257 
258 #ifdef __nvoc_eng_state_h_disabled
259 static inline NV_STATUS engstateConstructBase(struct OBJENGSTATE *arg0, struct OBJGPU *arg1, ENGDESCRIPTOR arg2) {
260     NV_ASSERT_FAILED_PRECOMP("OBJENGSTATE was disabled!");
261     return NV_ERR_NOT_SUPPORTED;
262 }
263 #else //__nvoc_eng_state_h_disabled
264 #define engstateConstructBase(arg0, arg1, arg2) engstateConstructBase_IMPL(arg0, arg1, arg2)
265 #endif //__nvoc_eng_state_h_disabled
266 
267 void engstateLogStateTransitionPre_IMPL(struct OBJENGSTATE *arg0, ENGSTATE_STATE arg1, ENGSTATE_TRANSITION_DATA *arg2);
268 
269 #ifdef __nvoc_eng_state_h_disabled
270 static inline void engstateLogStateTransitionPre(struct OBJENGSTATE *arg0, ENGSTATE_STATE arg1, ENGSTATE_TRANSITION_DATA *arg2) {
271     NV_ASSERT_FAILED_PRECOMP("OBJENGSTATE was disabled!");
272 }
273 #else //__nvoc_eng_state_h_disabled
274 #define engstateLogStateTransitionPre(arg0, arg1, arg2) engstateLogStateTransitionPre_IMPL(arg0, arg1, arg2)
275 #endif //__nvoc_eng_state_h_disabled
276 
277 void engstateLogStateTransitionPost_IMPL(struct OBJENGSTATE *arg0, ENGSTATE_STATE arg1, ENGSTATE_TRANSITION_DATA *arg2);
278 
279 #ifdef __nvoc_eng_state_h_disabled
280 static inline void engstateLogStateTransitionPost(struct OBJENGSTATE *arg0, ENGSTATE_STATE arg1, ENGSTATE_TRANSITION_DATA *arg2) {
281     NV_ASSERT_FAILED_PRECOMP("OBJENGSTATE was disabled!");
282 }
283 #else //__nvoc_eng_state_h_disabled
284 #define engstateLogStateTransitionPost(arg0, arg1, arg2) engstateLogStateTransitionPost_IMPL(arg0, arg1, arg2)
285 #endif //__nvoc_eng_state_h_disabled
286 
287 void engstateLogStateStatus_IMPL(struct OBJENGSTATE *arg0, ENGSTATE_STATE arg1, NV_STATUS status);
288 
289 #ifdef __nvoc_eng_state_h_disabled
290 static inline void engstateLogStateStatus(struct OBJENGSTATE *arg0, ENGSTATE_STATE arg1, NV_STATUS status) {
291     NV_ASSERT_FAILED_PRECOMP("OBJENGSTATE was disabled!");
292 }
293 #else //__nvoc_eng_state_h_disabled
294 #define engstateLogStateStatus(arg0, arg1, status) engstateLogStateStatus_IMPL(arg0, arg1, status)
295 #endif //__nvoc_eng_state_h_disabled
296 
297 const char *engstateGetName_IMPL(struct OBJENGSTATE *arg0);
298 
299 #ifdef __nvoc_eng_state_h_disabled
300 static inline const char *engstateGetName(struct OBJENGSTATE *arg0) {
301     NV_ASSERT_FAILED_PRECOMP("OBJENGSTATE was disabled!");
302     return NULL;
303 }
304 #else //__nvoc_eng_state_h_disabled
305 #define engstateGetName(arg0) engstateGetName_IMPL(arg0)
306 #endif //__nvoc_eng_state_h_disabled
307 
308 void engstateDestruct_IMPL(POBJENGSTATE pEngstate);
309 
310 #define __nvoc_engstateDestruct(pEngstate) engstateDestruct_IMPL(pEngstate)
311 NV_STATUS engstateStatePreInit_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate);
312 
313 #ifdef __nvoc_eng_state_h_disabled
314 static inline NV_STATUS engstateStatePreInit(POBJGPU pGpu, POBJENGSTATE pEngstate) {
315     NV_ASSERT_FAILED_PRECOMP("OBJENGSTATE was disabled!");
316     return NV_ERR_NOT_SUPPORTED;
317 }
318 #else //__nvoc_eng_state_h_disabled
319 #define engstateStatePreInit(pGpu, pEngstate) engstateStatePreInit_IMPL(pGpu, pEngstate)
320 #endif //__nvoc_eng_state_h_disabled
321 
322 NV_STATUS engstateStateInit_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate);
323 
324 #ifdef __nvoc_eng_state_h_disabled
325 static inline NV_STATUS engstateStateInit(POBJGPU pGpu, POBJENGSTATE pEngstate) {
326     NV_ASSERT_FAILED_PRECOMP("OBJENGSTATE was disabled!");
327     return NV_ERR_NOT_SUPPORTED;
328 }
329 #else //__nvoc_eng_state_h_disabled
330 #define engstateStateInit(pGpu, pEngstate) engstateStateInit_IMPL(pGpu, pEngstate)
331 #endif //__nvoc_eng_state_h_disabled
332 
333 ENGDESCRIPTOR engstateGetDescriptor_IMPL(POBJENGSTATE pEngstate);
334 
335 #ifdef __nvoc_eng_state_h_disabled
336 static inline ENGDESCRIPTOR engstateGetDescriptor(POBJENGSTATE pEngstate) {
337     NV_ASSERT_FAILED_PRECOMP("OBJENGSTATE was disabled!");
338     ENGDESCRIPTOR ret;
339     portMemSet(&ret, 0, sizeof(ENGDESCRIPTOR));
340     return ret;
341 }
342 #else //__nvoc_eng_state_h_disabled
343 #define engstateGetDescriptor(pEngstate) engstateGetDescriptor_IMPL(pEngstate)
344 #endif //__nvoc_eng_state_h_disabled
345 
346 struct OBJFIFO *engstateGetFifo_IMPL(POBJENGSTATE pEngstate);
347 
348 #ifdef __nvoc_eng_state_h_disabled
349 static inline struct OBJFIFO *engstateGetFifo(POBJENGSTATE pEngstate) {
350     NV_ASSERT_FAILED_PRECOMP("OBJENGSTATE was disabled!");
351     return NULL;
352 }
353 #else //__nvoc_eng_state_h_disabled
354 #define engstateGetFifo(pEngstate) engstateGetFifo_IMPL(pEngstate)
355 #endif //__nvoc_eng_state_h_disabled
356 
357 #undef PRIVATE_FIELD
358 
359 
360 #endif // _ENG_STATE_H_
361 
362 #ifdef __cplusplus
363 } // extern "C"
364 #endif
365 
366 #endif // _G_ENG_STATE_NVOC_H_
367