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-2021 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 typedef struct OBJENGSTATE *POBJENGSTATE;
77 
78 #define ENG_GET_FIFO(p)                 (engstateGetFifo(staticCast((p), OBJENGSTATE)))
79 #define ENG_GET_ENG_DESC(p)             (staticCast((p), OBJENGSTATE)->engDesc)
80 
81 
82 /*!
83  * Defines the structure used to contain all generic information related to
84  * the OBJENGSTATE.
85  */
86 #ifdef NVOC_ENG_STATE_H_PRIVATE_ACCESS_ALLOWED
87 #define PRIVATE_FIELD(x) x
88 #else
89 #define PRIVATE_FIELD(x) NVOC_PRIVATE_FIELD(x)
90 #endif
91 struct OBJENGSTATE {
92     const struct NVOC_RTTI *__nvoc_rtti;
93     struct Object __nvoc_base_Object;
94     struct Object *__nvoc_pbase_Object;
95     struct OBJENGSTATE *__nvoc_pbase_OBJENGSTATE;
96     NV_STATUS (*__engstateConstructEngine__)(POBJGPU, POBJENGSTATE, ENGDESCRIPTOR);
97     void (*__engstateInitMissing__)(POBJGPU, POBJENGSTATE);
98     NV_STATUS (*__engstateStatePreInitLocked__)(POBJGPU, POBJENGSTATE);
99     NV_STATUS (*__engstateStatePreInitUnlocked__)(POBJGPU, POBJENGSTATE);
100     NV_STATUS (*__engstateStateInitLocked__)(POBJGPU, POBJENGSTATE);
101     NV_STATUS (*__engstateStateInitUnlocked__)(POBJGPU, POBJENGSTATE);
102     NV_STATUS (*__engstateStatePreLoad__)(POBJGPU, POBJENGSTATE, NvU32);
103     NV_STATUS (*__engstateStateLoad__)(POBJGPU, POBJENGSTATE, NvU32);
104     NV_STATUS (*__engstateStatePostLoad__)(POBJGPU, POBJENGSTATE, NvU32);
105     NV_STATUS (*__engstateStatePreUnload__)(POBJGPU, POBJENGSTATE, NvU32);
106     NV_STATUS (*__engstateStateUnload__)(POBJGPU, POBJENGSTATE, NvU32);
107     NV_STATUS (*__engstateStatePostUnload__)(POBJGPU, POBJENGSTATE, NvU32);
108     void (*__engstateStateDestroy__)(POBJGPU, POBJENGSTATE);
109     NvBool (*__engstateIsPresent__)(POBJGPU, POBJENGSTATE);
110     NvBool PDB_PROP_ENGSTATE_IS_MISSING;
111     ENGDESCRIPTOR engDesc;
112     struct OBJGPU *pGpu;
113     ENGSTATE_STATE currentState;
114     ENGSTATE_STATS stats[11];
115     char name[100];
116 };
117 
118 #ifndef __NVOC_CLASS_OBJENGSTATE_TYPEDEF__
119 #define __NVOC_CLASS_OBJENGSTATE_TYPEDEF__
120 typedef struct OBJENGSTATE OBJENGSTATE;
121 #endif /* __NVOC_CLASS_OBJENGSTATE_TYPEDEF__ */
122 
123 #ifndef __nvoc_class_id_OBJENGSTATE
124 #define __nvoc_class_id_OBJENGSTATE 0x7a7ed6
125 #endif /* __nvoc_class_id_OBJENGSTATE */
126 
127 extern const struct NVOC_CLASS_DEF __nvoc_class_def_OBJENGSTATE;
128 
129 #define __staticCast_OBJENGSTATE(pThis) \
130     ((pThis)->__nvoc_pbase_OBJENGSTATE)
131 
132 #ifdef __nvoc_eng_state_h_disabled
133 #define __dynamicCast_OBJENGSTATE(pThis) ((OBJENGSTATE*)NULL)
134 #else //__nvoc_eng_state_h_disabled
135 #define __dynamicCast_OBJENGSTATE(pThis) \
136     ((OBJENGSTATE*)__nvoc_dynamicCast(staticCast((pThis), Dynamic), classInfo(OBJENGSTATE)))
137 #endif //__nvoc_eng_state_h_disabled
138 
139 #define PDB_PROP_ENGSTATE_IS_MISSING_BASE_CAST
140 #define PDB_PROP_ENGSTATE_IS_MISSING_BASE_NAME PDB_PROP_ENGSTATE_IS_MISSING
141 
142 NV_STATUS __nvoc_objCreateDynamic_OBJENGSTATE(OBJENGSTATE**, Dynamic*, NvU32, va_list);
143 
144 NV_STATUS __nvoc_objCreate_OBJENGSTATE(OBJENGSTATE**, Dynamic*, NvU32);
145 #define __objCreate_OBJENGSTATE(ppNewObj, pParent, createFlags) \
146     __nvoc_objCreate_OBJENGSTATE((ppNewObj), staticCast((pParent), Dynamic), (createFlags))
147 
148 #define engstateConstructEngine(pGpu, pEngstate, arg0) engstateConstructEngine_DISPATCH(pGpu, pEngstate, arg0)
149 #define engstateInitMissing(pGpu, pEngstate) engstateInitMissing_DISPATCH(pGpu, pEngstate)
150 #define engstateStatePreInitLocked(pGpu, pEngstate) engstateStatePreInitLocked_DISPATCH(pGpu, pEngstate)
151 #define engstateStatePreInitUnlocked(pGpu, pEngstate) engstateStatePreInitUnlocked_DISPATCH(pGpu, pEngstate)
152 #define engstateStateInitLocked(pGpu, pEngstate) engstateStateInitLocked_DISPATCH(pGpu, pEngstate)
153 #define engstateStateInitUnlocked(pGpu, pEngstate) engstateStateInitUnlocked_DISPATCH(pGpu, pEngstate)
154 #define engstateStatePreLoad(pGpu, pEngstate, arg0) engstateStatePreLoad_DISPATCH(pGpu, pEngstate, arg0)
155 #define engstateStateLoad(pGpu, pEngstate, arg0) engstateStateLoad_DISPATCH(pGpu, pEngstate, arg0)
156 #define engstateStatePostLoad(pGpu, pEngstate, arg0) engstateStatePostLoad_DISPATCH(pGpu, pEngstate, arg0)
157 #define engstateStatePreUnload(pGpu, pEngstate, arg0) engstateStatePreUnload_DISPATCH(pGpu, pEngstate, arg0)
158 #define engstateStateUnload(pGpu, pEngstate, arg0) engstateStateUnload_DISPATCH(pGpu, pEngstate, arg0)
159 #define engstateStatePostUnload(pGpu, pEngstate, arg0) engstateStatePostUnload_DISPATCH(pGpu, pEngstate, arg0)
160 #define engstateStateDestroy(pGpu, pEngstate) engstateStateDestroy_DISPATCH(pGpu, pEngstate)
161 #define engstateIsPresent(pGpu, pEngstate) engstateIsPresent_DISPATCH(pGpu, pEngstate)
162 NV_STATUS engstateConstructEngine_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate, ENGDESCRIPTOR arg0);
163 
164 static inline NV_STATUS engstateConstructEngine_DISPATCH(POBJGPU pGpu, POBJENGSTATE pEngstate, ENGDESCRIPTOR arg0) {
165     return pEngstate->__engstateConstructEngine__(pGpu, pEngstate, arg0);
166 }
167 
168 void engstateInitMissing_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate);
169 
170 static inline void engstateInitMissing_DISPATCH(POBJGPU pGpu, POBJENGSTATE pEngstate) {
171     pEngstate->__engstateInitMissing__(pGpu, pEngstate);
172 }
173 
174 NV_STATUS engstateStatePreInitLocked_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate);
175 
176 static inline NV_STATUS engstateStatePreInitLocked_DISPATCH(POBJGPU pGpu, POBJENGSTATE pEngstate) {
177     return pEngstate->__engstateStatePreInitLocked__(pGpu, pEngstate);
178 }
179 
180 NV_STATUS engstateStatePreInitUnlocked_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate);
181 
182 static inline NV_STATUS engstateStatePreInitUnlocked_DISPATCH(POBJGPU pGpu, POBJENGSTATE pEngstate) {
183     return pEngstate->__engstateStatePreInitUnlocked__(pGpu, pEngstate);
184 }
185 
186 NV_STATUS engstateStateInitLocked_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate);
187 
188 static inline NV_STATUS engstateStateInitLocked_DISPATCH(POBJGPU pGpu, POBJENGSTATE pEngstate) {
189     return pEngstate->__engstateStateInitLocked__(pGpu, pEngstate);
190 }
191 
192 NV_STATUS engstateStateInitUnlocked_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate);
193 
194 static inline NV_STATUS engstateStateInitUnlocked_DISPATCH(POBJGPU pGpu, POBJENGSTATE pEngstate) {
195     return pEngstate->__engstateStateInitUnlocked__(pGpu, pEngstate);
196 }
197 
198 NV_STATUS engstateStatePreLoad_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate, NvU32 arg0);
199 
200 static inline NV_STATUS engstateStatePreLoad_DISPATCH(POBJGPU pGpu, POBJENGSTATE pEngstate, NvU32 arg0) {
201     return pEngstate->__engstateStatePreLoad__(pGpu, pEngstate, arg0);
202 }
203 
204 NV_STATUS engstateStateLoad_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate, NvU32 arg0);
205 
206 static inline NV_STATUS engstateStateLoad_DISPATCH(POBJGPU pGpu, POBJENGSTATE pEngstate, NvU32 arg0) {
207     return pEngstate->__engstateStateLoad__(pGpu, pEngstate, arg0);
208 }
209 
210 NV_STATUS engstateStatePostLoad_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate, NvU32 arg0);
211 
212 static inline NV_STATUS engstateStatePostLoad_DISPATCH(POBJGPU pGpu, POBJENGSTATE pEngstate, NvU32 arg0) {
213     return pEngstate->__engstateStatePostLoad__(pGpu, pEngstate, arg0);
214 }
215 
216 NV_STATUS engstateStatePreUnload_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate, NvU32 arg0);
217 
218 static inline NV_STATUS engstateStatePreUnload_DISPATCH(POBJGPU pGpu, POBJENGSTATE pEngstate, NvU32 arg0) {
219     return pEngstate->__engstateStatePreUnload__(pGpu, pEngstate, arg0);
220 }
221 
222 NV_STATUS engstateStateUnload_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate, NvU32 arg0);
223 
224 static inline NV_STATUS engstateStateUnload_DISPATCH(POBJGPU pGpu, POBJENGSTATE pEngstate, NvU32 arg0) {
225     return pEngstate->__engstateStateUnload__(pGpu, pEngstate, arg0);
226 }
227 
228 NV_STATUS engstateStatePostUnload_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate, NvU32 arg0);
229 
230 static inline NV_STATUS engstateStatePostUnload_DISPATCH(POBJGPU pGpu, POBJENGSTATE pEngstate, NvU32 arg0) {
231     return pEngstate->__engstateStatePostUnload__(pGpu, pEngstate, arg0);
232 }
233 
234 void engstateStateDestroy_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate);
235 
236 static inline void engstateStateDestroy_DISPATCH(POBJGPU pGpu, POBJENGSTATE pEngstate) {
237     pEngstate->__engstateStateDestroy__(pGpu, pEngstate);
238 }
239 
240 NvBool engstateIsPresent_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate);
241 
242 static inline NvBool engstateIsPresent_DISPATCH(POBJGPU pGpu, POBJENGSTATE pEngstate) {
243     return pEngstate->__engstateIsPresent__(pGpu, pEngstate);
244 }
245 
246 NV_STATUS engstateConstructBase_IMPL(struct OBJENGSTATE *arg0, struct OBJGPU *arg1, ENGDESCRIPTOR arg2);
247 
248 #ifdef __nvoc_eng_state_h_disabled
249 static inline NV_STATUS engstateConstructBase(struct OBJENGSTATE *arg0, struct OBJGPU *arg1, ENGDESCRIPTOR arg2) {
250     NV_ASSERT_FAILED_PRECOMP("OBJENGSTATE was disabled!");
251     return NV_ERR_NOT_SUPPORTED;
252 }
253 #else //__nvoc_eng_state_h_disabled
254 #define engstateConstructBase(arg0, arg1, arg2) engstateConstructBase_IMPL(arg0, arg1, arg2)
255 #endif //__nvoc_eng_state_h_disabled
256 
257 void engstateLogStateTransitionPre_IMPL(struct OBJENGSTATE *arg0, ENGSTATE_STATE arg1, ENGSTATE_TRANSITION_DATA *arg2);
258 
259 #ifdef __nvoc_eng_state_h_disabled
260 static inline void engstateLogStateTransitionPre(struct OBJENGSTATE *arg0, ENGSTATE_STATE arg1, ENGSTATE_TRANSITION_DATA *arg2) {
261     NV_ASSERT_FAILED_PRECOMP("OBJENGSTATE was disabled!");
262 }
263 #else //__nvoc_eng_state_h_disabled
264 #define engstateLogStateTransitionPre(arg0, arg1, arg2) engstateLogStateTransitionPre_IMPL(arg0, arg1, arg2)
265 #endif //__nvoc_eng_state_h_disabled
266 
267 void engstateLogStateTransitionPost_IMPL(struct OBJENGSTATE *arg0, ENGSTATE_STATE arg1, ENGSTATE_TRANSITION_DATA *arg2);
268 
269 #ifdef __nvoc_eng_state_h_disabled
270 static inline void engstateLogStateTransitionPost(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 engstateLogStateTransitionPost(arg0, arg1, arg2) engstateLogStateTransitionPost_IMPL(arg0, arg1, arg2)
275 #endif //__nvoc_eng_state_h_disabled
276 
277 const char *engstateGetName_IMPL(struct OBJENGSTATE *arg0);
278 
279 #ifdef __nvoc_eng_state_h_disabled
280 static inline const char *engstateGetName(struct OBJENGSTATE *arg0) {
281     NV_ASSERT_FAILED_PRECOMP("OBJENGSTATE was disabled!");
282     return NULL;
283 }
284 #else //__nvoc_eng_state_h_disabled
285 #define engstateGetName(arg0) engstateGetName_IMPL(arg0)
286 #endif //__nvoc_eng_state_h_disabled
287 
288 void engstateDestruct_IMPL(POBJENGSTATE pEngstate);
289 
290 #define __nvoc_engstateDestruct(pEngstate) engstateDestruct_IMPL(pEngstate)
291 NV_STATUS engstateStatePreInit_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate);
292 
293 #ifdef __nvoc_eng_state_h_disabled
294 static inline NV_STATUS engstateStatePreInit(POBJGPU pGpu, POBJENGSTATE pEngstate) {
295     NV_ASSERT_FAILED_PRECOMP("OBJENGSTATE was disabled!");
296     return NV_ERR_NOT_SUPPORTED;
297 }
298 #else //__nvoc_eng_state_h_disabled
299 #define engstateStatePreInit(pGpu, pEngstate) engstateStatePreInit_IMPL(pGpu, pEngstate)
300 #endif //__nvoc_eng_state_h_disabled
301 
302 NV_STATUS engstateStateInit_IMPL(POBJGPU pGpu, POBJENGSTATE pEngstate);
303 
304 #ifdef __nvoc_eng_state_h_disabled
305 static inline NV_STATUS engstateStateInit(POBJGPU pGpu, POBJENGSTATE pEngstate) {
306     NV_ASSERT_FAILED_PRECOMP("OBJENGSTATE was disabled!");
307     return NV_ERR_NOT_SUPPORTED;
308 }
309 #else //__nvoc_eng_state_h_disabled
310 #define engstateStateInit(pGpu, pEngstate) engstateStateInit_IMPL(pGpu, pEngstate)
311 #endif //__nvoc_eng_state_h_disabled
312 
313 ENGDESCRIPTOR engstateGetDescriptor_IMPL(POBJENGSTATE pEngstate);
314 
315 #ifdef __nvoc_eng_state_h_disabled
316 static inline ENGDESCRIPTOR engstateGetDescriptor(POBJENGSTATE pEngstate) {
317     NV_ASSERT_FAILED_PRECOMP("OBJENGSTATE was disabled!");
318     ENGDESCRIPTOR ret;
319     portMemSet(&ret, 0, sizeof(ENGDESCRIPTOR));
320     return ret;
321 }
322 #else //__nvoc_eng_state_h_disabled
323 #define engstateGetDescriptor(pEngstate) engstateGetDescriptor_IMPL(pEngstate)
324 #endif //__nvoc_eng_state_h_disabled
325 
326 struct OBJFIFO *engstateGetFifo_IMPL(POBJENGSTATE pEngstate);
327 
328 #ifdef __nvoc_eng_state_h_disabled
329 static inline struct OBJFIFO *engstateGetFifo(POBJENGSTATE pEngstate) {
330     NV_ASSERT_FAILED_PRECOMP("OBJENGSTATE was disabled!");
331     return NULL;
332 }
333 #else //__nvoc_eng_state_h_disabled
334 #define engstateGetFifo(pEngstate) engstateGetFifo_IMPL(pEngstate)
335 #endif //__nvoc_eng_state_h_disabled
336 
337 #undef PRIVATE_FIELD
338 
339 
340 #endif // _ENG_STATE_H_
341 
342 #ifdef __cplusplus
343 } // extern "C"
344 #endif
345 #endif // _G_ENG_STATE_NVOC_H_
346