1 #define NVOC_KERNEL_RC_H_PRIVATE_ACCESS_ALLOWED
2 #include "nvoc/runtime.h"
3 #include "nvoc/rtti.h"
4 #include "nvtypes.h"
5 #include "nvport/nvport.h"
6 #include "nvport/inline/util_valist.h"
7 #include "utils/nvassert.h"
8 #include "g_kernel_rc_nvoc.h"
9
10 #ifdef DEBUG
11 char __nvoc_class_id_uniqueness_check_0x4888db = 1;
12 #endif
13
14 extern const struct NVOC_CLASS_DEF __nvoc_class_def_KernelRc;
15
16 extern const struct NVOC_CLASS_DEF __nvoc_class_def_Object;
17
18 extern const struct NVOC_CLASS_DEF __nvoc_class_def_OBJENGSTATE;
19
20 void __nvoc_init_KernelRc(KernelRc*, RmHalspecOwner* );
21 void __nvoc_init_funcTable_KernelRc(KernelRc*, RmHalspecOwner* );
22 NV_STATUS __nvoc_ctor_KernelRc(KernelRc*, RmHalspecOwner* );
23 void __nvoc_init_dataField_KernelRc(KernelRc*, RmHalspecOwner* );
24 void __nvoc_dtor_KernelRc(KernelRc*);
25 extern const struct NVOC_EXPORT_INFO __nvoc_export_info_KernelRc;
26
27 static const struct NVOC_RTTI __nvoc_rtti_KernelRc_KernelRc = {
28 /*pClassDef=*/ &__nvoc_class_def_KernelRc,
29 /*dtor=*/ (NVOC_DYNAMIC_DTOR) &__nvoc_dtor_KernelRc,
30 /*offset=*/ 0,
31 };
32
33 static const struct NVOC_RTTI __nvoc_rtti_KernelRc_Object = {
34 /*pClassDef=*/ &__nvoc_class_def_Object,
35 /*dtor=*/ &__nvoc_destructFromBase,
36 /*offset=*/ NV_OFFSETOF(KernelRc, __nvoc_base_OBJENGSTATE.__nvoc_base_Object),
37 };
38
39 static const struct NVOC_RTTI __nvoc_rtti_KernelRc_OBJENGSTATE = {
40 /*pClassDef=*/ &__nvoc_class_def_OBJENGSTATE,
41 /*dtor=*/ &__nvoc_destructFromBase,
42 /*offset=*/ NV_OFFSETOF(KernelRc, __nvoc_base_OBJENGSTATE),
43 };
44
45 static const struct NVOC_CASTINFO __nvoc_castinfo_KernelRc = {
46 /*numRelatives=*/ 3,
47 /*relatives=*/ {
48 &__nvoc_rtti_KernelRc_KernelRc,
49 &__nvoc_rtti_KernelRc_OBJENGSTATE,
50 &__nvoc_rtti_KernelRc_Object,
51 },
52 };
53
54 const struct NVOC_CLASS_DEF __nvoc_class_def_KernelRc =
55 {
56 /*classInfo=*/ {
57 /*size=*/ sizeof(KernelRc),
58 /*classId=*/ classId(KernelRc),
59 /*providerId=*/ &__nvoc_rtti_provider,
60 #if NV_PRINTF_STRINGS_ALLOWED
61 /*name=*/ "KernelRc",
62 #endif
63 },
64 /*objCreatefn=*/ (NVOC_DYNAMIC_OBJ_CREATE) &__nvoc_objCreateDynamic_KernelRc,
65 /*pCastInfo=*/ &__nvoc_castinfo_KernelRc,
66 /*pExportInfo=*/ &__nvoc_export_info_KernelRc
67 };
68
__nvoc_thunk_KernelRc_engstateConstructEngine(struct OBJGPU * pGpu,struct OBJENGSTATE * pKernelRc,ENGDESCRIPTOR engDescriptor)69 static NV_STATUS __nvoc_thunk_KernelRc_engstateConstructEngine(struct OBJGPU *pGpu, struct OBJENGSTATE *pKernelRc, ENGDESCRIPTOR engDescriptor) {
70 return krcConstructEngine(pGpu, (struct KernelRc *)(((unsigned char *)pKernelRc) - __nvoc_rtti_KernelRc_OBJENGSTATE.offset), engDescriptor);
71 }
72
__nvoc_thunk_OBJENGSTATE_krcStateLoad(POBJGPU pGpu,struct KernelRc * pEngstate,NvU32 arg0)73 static NV_STATUS __nvoc_thunk_OBJENGSTATE_krcStateLoad(POBJGPU pGpu, struct KernelRc *pEngstate, NvU32 arg0) {
74 return engstateStateLoad(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelRc_OBJENGSTATE.offset), arg0);
75 }
76
__nvoc_thunk_OBJENGSTATE_krcStateUnload(POBJGPU pGpu,struct KernelRc * pEngstate,NvU32 arg0)77 static NV_STATUS __nvoc_thunk_OBJENGSTATE_krcStateUnload(POBJGPU pGpu, struct KernelRc *pEngstate, NvU32 arg0) {
78 return engstateStateUnload(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelRc_OBJENGSTATE.offset), arg0);
79 }
80
__nvoc_thunk_OBJENGSTATE_krcStateInitLocked(POBJGPU pGpu,struct KernelRc * pEngstate)81 static NV_STATUS __nvoc_thunk_OBJENGSTATE_krcStateInitLocked(POBJGPU pGpu, struct KernelRc *pEngstate) {
82 return engstateStateInitLocked(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelRc_OBJENGSTATE.offset));
83 }
84
__nvoc_thunk_OBJENGSTATE_krcStatePreLoad(POBJGPU pGpu,struct KernelRc * pEngstate,NvU32 arg0)85 static NV_STATUS __nvoc_thunk_OBJENGSTATE_krcStatePreLoad(POBJGPU pGpu, struct KernelRc *pEngstate, NvU32 arg0) {
86 return engstateStatePreLoad(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelRc_OBJENGSTATE.offset), arg0);
87 }
88
__nvoc_thunk_OBJENGSTATE_krcStatePostUnload(POBJGPU pGpu,struct KernelRc * pEngstate,NvU32 arg0)89 static NV_STATUS __nvoc_thunk_OBJENGSTATE_krcStatePostUnload(POBJGPU pGpu, struct KernelRc *pEngstate, NvU32 arg0) {
90 return engstateStatePostUnload(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelRc_OBJENGSTATE.offset), arg0);
91 }
92
__nvoc_thunk_OBJENGSTATE_krcStateDestroy(POBJGPU pGpu,struct KernelRc * pEngstate)93 static void __nvoc_thunk_OBJENGSTATE_krcStateDestroy(POBJGPU pGpu, struct KernelRc *pEngstate) {
94 engstateStateDestroy(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelRc_OBJENGSTATE.offset));
95 }
96
__nvoc_thunk_OBJENGSTATE_krcStatePreUnload(POBJGPU pGpu,struct KernelRc * pEngstate,NvU32 arg0)97 static NV_STATUS __nvoc_thunk_OBJENGSTATE_krcStatePreUnload(POBJGPU pGpu, struct KernelRc *pEngstate, NvU32 arg0) {
98 return engstateStatePreUnload(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelRc_OBJENGSTATE.offset), arg0);
99 }
100
__nvoc_thunk_OBJENGSTATE_krcStateInitUnlocked(POBJGPU pGpu,struct KernelRc * pEngstate)101 static NV_STATUS __nvoc_thunk_OBJENGSTATE_krcStateInitUnlocked(POBJGPU pGpu, struct KernelRc *pEngstate) {
102 return engstateStateInitUnlocked(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelRc_OBJENGSTATE.offset));
103 }
104
__nvoc_thunk_OBJENGSTATE_krcInitMissing(POBJGPU pGpu,struct KernelRc * pEngstate)105 static void __nvoc_thunk_OBJENGSTATE_krcInitMissing(POBJGPU pGpu, struct KernelRc *pEngstate) {
106 engstateInitMissing(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelRc_OBJENGSTATE.offset));
107 }
108
__nvoc_thunk_OBJENGSTATE_krcStatePreInitLocked(POBJGPU pGpu,struct KernelRc * pEngstate)109 static NV_STATUS __nvoc_thunk_OBJENGSTATE_krcStatePreInitLocked(POBJGPU pGpu, struct KernelRc *pEngstate) {
110 return engstateStatePreInitLocked(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelRc_OBJENGSTATE.offset));
111 }
112
__nvoc_thunk_OBJENGSTATE_krcStatePreInitUnlocked(POBJGPU pGpu,struct KernelRc * pEngstate)113 static NV_STATUS __nvoc_thunk_OBJENGSTATE_krcStatePreInitUnlocked(POBJGPU pGpu, struct KernelRc *pEngstate) {
114 return engstateStatePreInitUnlocked(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelRc_OBJENGSTATE.offset));
115 }
116
__nvoc_thunk_OBJENGSTATE_krcStatePostLoad(POBJGPU pGpu,struct KernelRc * pEngstate,NvU32 arg0)117 static NV_STATUS __nvoc_thunk_OBJENGSTATE_krcStatePostLoad(POBJGPU pGpu, struct KernelRc *pEngstate, NvU32 arg0) {
118 return engstateStatePostLoad(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelRc_OBJENGSTATE.offset), arg0);
119 }
120
__nvoc_thunk_OBJENGSTATE_krcIsPresent(POBJGPU pGpu,struct KernelRc * pEngstate)121 static NvBool __nvoc_thunk_OBJENGSTATE_krcIsPresent(POBJGPU pGpu, struct KernelRc *pEngstate) {
122 return engstateIsPresent(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelRc_OBJENGSTATE.offset));
123 }
124
125 const struct NVOC_EXPORT_INFO __nvoc_export_info_KernelRc =
126 {
127 /*numEntries=*/ 0,
128 /*pExportEntries=*/ 0
129 };
130
131 void __nvoc_dtor_OBJENGSTATE(OBJENGSTATE*);
__nvoc_dtor_KernelRc(KernelRc * pThis)132 void __nvoc_dtor_KernelRc(KernelRc *pThis) {
133 __nvoc_dtor_OBJENGSTATE(&pThis->__nvoc_base_OBJENGSTATE);
134 PORT_UNREFERENCED_VARIABLE(pThis);
135 }
136
__nvoc_init_dataField_KernelRc(KernelRc * pThis,RmHalspecOwner * pRmhalspecowner)137 void __nvoc_init_dataField_KernelRc(KernelRc *pThis, RmHalspecOwner *pRmhalspecowner) {
138 RmVariantHal *rmVariantHal = &pRmhalspecowner->rmVariantHal;
139 const unsigned long rmVariantHal_HalVarIdx = (unsigned long)rmVariantHal->__nvoc_HalVarIdx;
140 ChipHal *chipHal = &pRmhalspecowner->chipHal;
141 const unsigned long chipHal_HalVarIdx = (unsigned long)chipHal->__nvoc_HalVarIdx;
142 PORT_UNREFERENCED_VARIABLE(pThis);
143 PORT_UNREFERENCED_VARIABLE(pRmhalspecowner);
144 PORT_UNREFERENCED_VARIABLE(rmVariantHal);
145 PORT_UNREFERENCED_VARIABLE(rmVariantHal_HalVarIdx);
146 PORT_UNREFERENCED_VARIABLE(chipHal);
147 PORT_UNREFERENCED_VARIABLE(chipHal_HalVarIdx);
148 }
149
150 NV_STATUS __nvoc_ctor_OBJENGSTATE(OBJENGSTATE* );
__nvoc_ctor_KernelRc(KernelRc * pThis,RmHalspecOwner * pRmhalspecowner)151 NV_STATUS __nvoc_ctor_KernelRc(KernelRc *pThis, RmHalspecOwner *pRmhalspecowner) {
152 NV_STATUS status = NV_OK;
153 status = __nvoc_ctor_OBJENGSTATE(&pThis->__nvoc_base_OBJENGSTATE);
154 if (status != NV_OK) goto __nvoc_ctor_KernelRc_fail_OBJENGSTATE;
155 __nvoc_init_dataField_KernelRc(pThis, pRmhalspecowner);
156 goto __nvoc_ctor_KernelRc_exit; // Success
157
158 __nvoc_ctor_KernelRc_fail_OBJENGSTATE:
159 __nvoc_ctor_KernelRc_exit:
160
161 return status;
162 }
163
__nvoc_init_funcTable_KernelRc_1(KernelRc * pThis,RmHalspecOwner * pRmhalspecowner)164 static void __nvoc_init_funcTable_KernelRc_1(KernelRc *pThis, RmHalspecOwner *pRmhalspecowner) {
165 RmVariantHal *rmVariantHal = &pRmhalspecowner->rmVariantHal;
166 const unsigned long rmVariantHal_HalVarIdx = (unsigned long)rmVariantHal->__nvoc_HalVarIdx;
167 ChipHal *chipHal = &pRmhalspecowner->chipHal;
168 const unsigned long chipHal_HalVarIdx = (unsigned long)chipHal->__nvoc_HalVarIdx;
169 PORT_UNREFERENCED_VARIABLE(pThis);
170 PORT_UNREFERENCED_VARIABLE(pRmhalspecowner);
171 PORT_UNREFERENCED_VARIABLE(rmVariantHal);
172 PORT_UNREFERENCED_VARIABLE(rmVariantHal_HalVarIdx);
173 PORT_UNREFERENCED_VARIABLE(chipHal);
174 PORT_UNREFERENCED_VARIABLE(chipHal_HalVarIdx);
175
176 pThis->__krcConstructEngine__ = &krcConstructEngine_IMPL;
177
178 // Hal function -- krcWatchdogRecovery
179 if (( ((rmVariantHal_HalVarIdx >> 5) == 0UL) && ((1UL << (rmVariantHal_HalVarIdx & 0x1f)) & 0x00000001UL) )) /* RmVariantHal: VF */
180 {
181 pThis->__krcWatchdogRecovery__ = &krcWatchdogRecovery_f2d351;
182 }
183 else
184 {
185 pThis->__krcWatchdogRecovery__ = &krcWatchdogRecovery_KERNEL;
186 }
187
188 pThis->__nvoc_base_OBJENGSTATE.__engstateConstructEngine__ = &__nvoc_thunk_KernelRc_engstateConstructEngine;
189
190 pThis->__krcStateLoad__ = &__nvoc_thunk_OBJENGSTATE_krcStateLoad;
191
192 pThis->__krcStateUnload__ = &__nvoc_thunk_OBJENGSTATE_krcStateUnload;
193
194 pThis->__krcStateInitLocked__ = &__nvoc_thunk_OBJENGSTATE_krcStateInitLocked;
195
196 pThis->__krcStatePreLoad__ = &__nvoc_thunk_OBJENGSTATE_krcStatePreLoad;
197
198 pThis->__krcStatePostUnload__ = &__nvoc_thunk_OBJENGSTATE_krcStatePostUnload;
199
200 pThis->__krcStateDestroy__ = &__nvoc_thunk_OBJENGSTATE_krcStateDestroy;
201
202 pThis->__krcStatePreUnload__ = &__nvoc_thunk_OBJENGSTATE_krcStatePreUnload;
203
204 pThis->__krcStateInitUnlocked__ = &__nvoc_thunk_OBJENGSTATE_krcStateInitUnlocked;
205
206 pThis->__krcInitMissing__ = &__nvoc_thunk_OBJENGSTATE_krcInitMissing;
207
208 pThis->__krcStatePreInitLocked__ = &__nvoc_thunk_OBJENGSTATE_krcStatePreInitLocked;
209
210 pThis->__krcStatePreInitUnlocked__ = &__nvoc_thunk_OBJENGSTATE_krcStatePreInitUnlocked;
211
212 pThis->__krcStatePostLoad__ = &__nvoc_thunk_OBJENGSTATE_krcStatePostLoad;
213
214 pThis->__krcIsPresent__ = &__nvoc_thunk_OBJENGSTATE_krcIsPresent;
215 }
216
__nvoc_init_funcTable_KernelRc(KernelRc * pThis,RmHalspecOwner * pRmhalspecowner)217 void __nvoc_init_funcTable_KernelRc(KernelRc *pThis, RmHalspecOwner *pRmhalspecowner) {
218 __nvoc_init_funcTable_KernelRc_1(pThis, pRmhalspecowner);
219 }
220
221 void __nvoc_init_OBJENGSTATE(OBJENGSTATE*);
__nvoc_init_KernelRc(KernelRc * pThis,RmHalspecOwner * pRmhalspecowner)222 void __nvoc_init_KernelRc(KernelRc *pThis, RmHalspecOwner *pRmhalspecowner) {
223 pThis->__nvoc_pbase_KernelRc = pThis;
224 pThis->__nvoc_pbase_Object = &pThis->__nvoc_base_OBJENGSTATE.__nvoc_base_Object;
225 pThis->__nvoc_pbase_OBJENGSTATE = &pThis->__nvoc_base_OBJENGSTATE;
226 __nvoc_init_OBJENGSTATE(&pThis->__nvoc_base_OBJENGSTATE);
227 __nvoc_init_funcTable_KernelRc(pThis, pRmhalspecowner);
228 }
229
__nvoc_objCreate_KernelRc(KernelRc ** ppThis,Dynamic * pParent,NvU32 createFlags)230 NV_STATUS __nvoc_objCreate_KernelRc(KernelRc **ppThis, Dynamic *pParent, NvU32 createFlags)
231 {
232 NV_STATUS status;
233 Object *pParentObj = NULL;
234 KernelRc *pThis;
235 RmHalspecOwner *pRmhalspecowner;
236
237 // Assign `pThis`, allocating memory unless suppressed by flag.
238 status = __nvoc_handleObjCreateMemAlloc(createFlags, sizeof(KernelRc), (void**)&pThis, (void**)ppThis);
239 if (status != NV_OK)
240 return status;
241
242 // Zero is the initial value for everything.
243 portMemSet(pThis, 0, sizeof(KernelRc));
244
245 // Initialize runtime type information.
246 __nvoc_initRtti(staticCast(pThis, Dynamic), &__nvoc_class_def_KernelRc);
247
248 pThis->__nvoc_base_OBJENGSTATE.__nvoc_base_Object.createFlags = createFlags;
249
250 // pParent must be a valid object that derives from a halspec owner class.
251 NV_ASSERT_OR_RETURN(pParent != NULL, NV_ERR_INVALID_ARGUMENT);
252
253 // Link the child into the parent unless flagged not to do so.
254 if (!(createFlags & NVOC_OBJ_CREATE_FLAGS_PARENT_HALSPEC_ONLY))
255 {
256 pParentObj = dynamicCast(pParent, Object);
257 objAddChild(pParentObj, &pThis->__nvoc_base_OBJENGSTATE.__nvoc_base_Object);
258 }
259 else
260 {
261 pThis->__nvoc_base_OBJENGSTATE.__nvoc_base_Object.pParent = NULL;
262 }
263
264 if ((pRmhalspecowner = dynamicCast(pParent, RmHalspecOwner)) == NULL)
265 pRmhalspecowner = objFindAncestorOfType(RmHalspecOwner, pParent);
266 NV_ASSERT_OR_RETURN(pRmhalspecowner != NULL, NV_ERR_INVALID_ARGUMENT);
267
268 __nvoc_init_KernelRc(pThis, pRmhalspecowner);
269 status = __nvoc_ctor_KernelRc(pThis, pRmhalspecowner);
270 if (status != NV_OK) goto __nvoc_objCreate_KernelRc_cleanup;
271
272 // Assignment has no effect if NVOC_OBJ_CREATE_FLAGS_IN_PLACE_CONSTRUCT is set.
273 *ppThis = pThis;
274
275 return NV_OK;
276
277 __nvoc_objCreate_KernelRc_cleanup:
278
279 // Unlink the child from the parent if it was linked above.
280 if (pParentObj != NULL)
281 objRemoveChild(pParentObj, &pThis->__nvoc_base_OBJENGSTATE.__nvoc_base_Object);
282
283 // Do not call destructors here since the constructor already called them.
284 if (createFlags & NVOC_OBJ_CREATE_FLAGS_IN_PLACE_CONSTRUCT)
285 portMemSet(pThis, 0, sizeof(KernelRc));
286 else
287 {
288 portMemFree(pThis);
289 *ppThis = NULL;
290 }
291
292 // coverity[leaked_storage:FALSE]
293 return status;
294 }
295
__nvoc_objCreateDynamic_KernelRc(KernelRc ** ppThis,Dynamic * pParent,NvU32 createFlags,va_list args)296 NV_STATUS __nvoc_objCreateDynamic_KernelRc(KernelRc **ppThis, Dynamic *pParent, NvU32 createFlags, va_list args) {
297 NV_STATUS status;
298
299 status = __nvoc_objCreate_KernelRc(ppThis, pParent, createFlags);
300
301 return status;
302 }
303
304