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