1 #define NVOC_UVM_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_uvm_nvoc.h"
9 
10 #ifdef DEBUG
11 char __nvoc_class_id_uniqueness_check_0xf9a17d = 1;
12 #endif
13 
14 extern const struct NVOC_CLASS_DEF __nvoc_class_def_OBJUVM;
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 extern const struct NVOC_CLASS_DEF __nvoc_class_def_IntrService;
21 
22 void __nvoc_init_OBJUVM(OBJUVM*, RmHalspecOwner* );
23 void __nvoc_init_funcTable_OBJUVM(OBJUVM*, RmHalspecOwner* );
24 NV_STATUS __nvoc_ctor_OBJUVM(OBJUVM*, RmHalspecOwner* );
25 void __nvoc_init_dataField_OBJUVM(OBJUVM*, RmHalspecOwner* );
26 void __nvoc_dtor_OBJUVM(OBJUVM*);
27 extern const struct NVOC_EXPORT_INFO __nvoc_export_info_OBJUVM;
28 
29 static const struct NVOC_RTTI __nvoc_rtti_OBJUVM_OBJUVM = {
30     /*pClassDef=*/          &__nvoc_class_def_OBJUVM,
31     /*dtor=*/               (NVOC_DYNAMIC_DTOR) &__nvoc_dtor_OBJUVM,
32     /*offset=*/             0,
33 };
34 
35 static const struct NVOC_RTTI __nvoc_rtti_OBJUVM_Object = {
36     /*pClassDef=*/          &__nvoc_class_def_Object,
37     /*dtor=*/               &__nvoc_destructFromBase,
38     /*offset=*/             NV_OFFSETOF(OBJUVM, __nvoc_base_OBJENGSTATE.__nvoc_base_Object),
39 };
40 
41 static const struct NVOC_RTTI __nvoc_rtti_OBJUVM_OBJENGSTATE = {
42     /*pClassDef=*/          &__nvoc_class_def_OBJENGSTATE,
43     /*dtor=*/               &__nvoc_destructFromBase,
44     /*offset=*/             NV_OFFSETOF(OBJUVM, __nvoc_base_OBJENGSTATE),
45 };
46 
47 static const struct NVOC_RTTI __nvoc_rtti_OBJUVM_IntrService = {
48     /*pClassDef=*/          &__nvoc_class_def_IntrService,
49     /*dtor=*/               &__nvoc_destructFromBase,
50     /*offset=*/             NV_OFFSETOF(OBJUVM, __nvoc_base_IntrService),
51 };
52 
53 static const struct NVOC_CASTINFO __nvoc_castinfo_OBJUVM = {
54     /*numRelatives=*/       4,
55     /*relatives=*/ {
56         &__nvoc_rtti_OBJUVM_OBJUVM,
57         &__nvoc_rtti_OBJUVM_IntrService,
58         &__nvoc_rtti_OBJUVM_OBJENGSTATE,
59         &__nvoc_rtti_OBJUVM_Object,
60     },
61 };
62 
63 const struct NVOC_CLASS_DEF __nvoc_class_def_OBJUVM =
64 {
65     /*classInfo=*/ {
66         /*size=*/               sizeof(OBJUVM),
67         /*classId=*/            classId(OBJUVM),
68         /*providerId=*/         &__nvoc_rtti_provider,
69 #if NV_PRINTF_STRINGS_ALLOWED
70         /*name=*/               "OBJUVM",
71 #endif
72     },
73     /*objCreatefn=*/        (NVOC_DYNAMIC_OBJ_CREATE) &__nvoc_objCreateDynamic_OBJUVM,
74     /*pCastInfo=*/          &__nvoc_castinfo_OBJUVM,
75     /*pExportInfo=*/        &__nvoc_export_info_OBJUVM
76 };
77 
78 static void __nvoc_thunk_OBJUVM_engstateStateDestroy(OBJGPU *pGpu, struct OBJENGSTATE *pUvm) {
79     uvmStateDestroy(pGpu, (struct OBJUVM *)(((unsigned char *)pUvm) - __nvoc_rtti_OBJUVM_OBJENGSTATE.offset));
80 }
81 
82 static NV_STATUS __nvoc_thunk_OBJUVM_engstateStateInitUnlocked(OBJGPU *pGpu, struct OBJENGSTATE *pUvm) {
83     return uvmStateInitUnlocked(pGpu, (struct OBJUVM *)(((unsigned char *)pUvm) - __nvoc_rtti_OBJUVM_OBJENGSTATE.offset));
84 }
85 
86 static void __nvoc_thunk_OBJUVM_intrservRegisterIntrService(OBJGPU *arg0, struct IntrService *pUvm, IntrServiceRecord arg1[166]) {
87     uvmRegisterIntrService(arg0, (struct OBJUVM *)(((unsigned char *)pUvm) - __nvoc_rtti_OBJUVM_IntrService.offset), arg1);
88 }
89 
90 static NvU32 __nvoc_thunk_OBJUVM_intrservServiceInterrupt(OBJGPU *arg0, struct IntrService *pUvm, IntrServiceServiceInterruptArguments *arg1) {
91     return uvmServiceInterrupt(arg0, (struct OBJUVM *)(((unsigned char *)pUvm) - __nvoc_rtti_OBJUVM_IntrService.offset), arg1);
92 }
93 
94 static NV_STATUS __nvoc_thunk_OBJENGSTATE_uvmStateLoad(POBJGPU pGpu, struct OBJUVM *pEngstate, NvU32 arg0) {
95     return engstateStateLoad(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_OBJUVM_OBJENGSTATE.offset), arg0);
96 }
97 
98 static NV_STATUS __nvoc_thunk_OBJENGSTATE_uvmStateUnload(POBJGPU pGpu, struct OBJUVM *pEngstate, NvU32 arg0) {
99     return engstateStateUnload(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_OBJUVM_OBJENGSTATE.offset), arg0);
100 }
101 
102 static NV_STATUS __nvoc_thunk_IntrService_uvmServiceNotificationInterrupt(OBJGPU *pGpu, struct OBJUVM *pIntrService, IntrServiceServiceNotificationInterruptArguments *pParams) {
103     return intrservServiceNotificationInterrupt(pGpu, (struct IntrService *)(((unsigned char *)pIntrService) + __nvoc_rtti_OBJUVM_IntrService.offset), pParams);
104 }
105 
106 static NV_STATUS __nvoc_thunk_OBJENGSTATE_uvmStateInitLocked(POBJGPU pGpu, struct OBJUVM *pEngstate) {
107     return engstateStateInitLocked(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_OBJUVM_OBJENGSTATE.offset));
108 }
109 
110 static NV_STATUS __nvoc_thunk_OBJENGSTATE_uvmStatePreLoad(POBJGPU pGpu, struct OBJUVM *pEngstate, NvU32 arg0) {
111     return engstateStatePreLoad(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_OBJUVM_OBJENGSTATE.offset), arg0);
112 }
113 
114 static NV_STATUS __nvoc_thunk_OBJENGSTATE_uvmStatePostUnload(POBJGPU pGpu, struct OBJUVM *pEngstate, NvU32 arg0) {
115     return engstateStatePostUnload(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_OBJUVM_OBJENGSTATE.offset), arg0);
116 }
117 
118 static NV_STATUS __nvoc_thunk_OBJENGSTATE_uvmStatePreUnload(POBJGPU pGpu, struct OBJUVM *pEngstate, NvU32 arg0) {
119     return engstateStatePreUnload(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_OBJUVM_OBJENGSTATE.offset), arg0);
120 }
121 
122 static void __nvoc_thunk_OBJENGSTATE_uvmInitMissing(POBJGPU pGpu, struct OBJUVM *pEngstate) {
123     engstateInitMissing(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_OBJUVM_OBJENGSTATE.offset));
124 }
125 
126 static NV_STATUS __nvoc_thunk_OBJENGSTATE_uvmStatePreInitLocked(POBJGPU pGpu, struct OBJUVM *pEngstate) {
127     return engstateStatePreInitLocked(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_OBJUVM_OBJENGSTATE.offset));
128 }
129 
130 static NV_STATUS __nvoc_thunk_OBJENGSTATE_uvmStatePreInitUnlocked(POBJGPU pGpu, struct OBJUVM *pEngstate) {
131     return engstateStatePreInitUnlocked(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_OBJUVM_OBJENGSTATE.offset));
132 }
133 
134 static NvBool __nvoc_thunk_IntrService_uvmClearInterrupt(OBJGPU *pGpu, struct OBJUVM *pIntrService, IntrServiceClearInterruptArguments *pParams) {
135     return intrservClearInterrupt(pGpu, (struct IntrService *)(((unsigned char *)pIntrService) + __nvoc_rtti_OBJUVM_IntrService.offset), pParams);
136 }
137 
138 static NV_STATUS __nvoc_thunk_OBJENGSTATE_uvmStatePostLoad(POBJGPU pGpu, struct OBJUVM *pEngstate, NvU32 arg0) {
139     return engstateStatePostLoad(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_OBJUVM_OBJENGSTATE.offset), arg0);
140 }
141 
142 static NV_STATUS __nvoc_thunk_OBJENGSTATE_uvmConstructEngine(POBJGPU pGpu, struct OBJUVM *pEngstate, ENGDESCRIPTOR arg0) {
143     return engstateConstructEngine(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_OBJUVM_OBJENGSTATE.offset), arg0);
144 }
145 
146 static NvBool __nvoc_thunk_OBJENGSTATE_uvmIsPresent(POBJGPU pGpu, struct OBJUVM *pEngstate) {
147     return engstateIsPresent(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_OBJUVM_OBJENGSTATE.offset));
148 }
149 
150 const struct NVOC_EXPORT_INFO __nvoc_export_info_OBJUVM =
151 {
152     /*numEntries=*/     0,
153     /*pExportEntries=*/  0
154 };
155 
156 void __nvoc_dtor_OBJENGSTATE(OBJENGSTATE*);
157 void __nvoc_dtor_IntrService(IntrService*);
158 void __nvoc_dtor_OBJUVM(OBJUVM *pThis) {
159     __nvoc_dtor_OBJENGSTATE(&pThis->__nvoc_base_OBJENGSTATE);
160     __nvoc_dtor_IntrService(&pThis->__nvoc_base_IntrService);
161     PORT_UNREFERENCED_VARIABLE(pThis);
162 }
163 
164 void __nvoc_init_dataField_OBJUVM(OBJUVM *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 
177 NV_STATUS __nvoc_ctor_OBJENGSTATE(OBJENGSTATE* );
178 NV_STATUS __nvoc_ctor_IntrService(IntrService* );
179 NV_STATUS __nvoc_ctor_OBJUVM(OBJUVM *pThis, RmHalspecOwner *pRmhalspecowner) {
180     NV_STATUS status = NV_OK;
181     status = __nvoc_ctor_OBJENGSTATE(&pThis->__nvoc_base_OBJENGSTATE);
182     if (status != NV_OK) goto __nvoc_ctor_OBJUVM_fail_OBJENGSTATE;
183     status = __nvoc_ctor_IntrService(&pThis->__nvoc_base_IntrService);
184     if (status != NV_OK) goto __nvoc_ctor_OBJUVM_fail_IntrService;
185     __nvoc_init_dataField_OBJUVM(pThis, pRmhalspecowner);
186     goto __nvoc_ctor_OBJUVM_exit; // Success
187 
188 __nvoc_ctor_OBJUVM_fail_IntrService:
189     __nvoc_dtor_OBJENGSTATE(&pThis->__nvoc_base_OBJENGSTATE);
190 __nvoc_ctor_OBJUVM_fail_OBJENGSTATE:
191 __nvoc_ctor_OBJUVM_exit:
192 
193     return status;
194 }
195 
196 static void __nvoc_init_funcTable_OBJUVM_1(OBJUVM *pThis, RmHalspecOwner *pRmhalspecowner) {
197     RmVariantHal *rmVariantHal = &pRmhalspecowner->rmVariantHal;
198     const unsigned long rmVariantHal_HalVarIdx = (unsigned long)rmVariantHal->__nvoc_HalVarIdx;
199     ChipHal *chipHal = &pRmhalspecowner->chipHal;
200     const unsigned long chipHal_HalVarIdx = (unsigned long)chipHal->__nvoc_HalVarIdx;
201     PORT_UNREFERENCED_VARIABLE(pThis);
202     PORT_UNREFERENCED_VARIABLE(pRmhalspecowner);
203     PORT_UNREFERENCED_VARIABLE(rmVariantHal);
204     PORT_UNREFERENCED_VARIABLE(rmVariantHal_HalVarIdx);
205     PORT_UNREFERENCED_VARIABLE(chipHal);
206     PORT_UNREFERENCED_VARIABLE(chipHal_HalVarIdx);
207 
208     pThis->__uvmStateDestroy__ = &uvmStateDestroy_IMPL;
209 
210     pThis->__uvmStateInitUnlocked__ = &uvmStateInitUnlocked_IMPL;
211 
212     pThis->__uvmRegisterIntrService__ = &uvmRegisterIntrService_IMPL;
213 
214     pThis->__uvmServiceInterrupt__ = &uvmServiceInterrupt_IMPL;
215 
216     pThis->__nvoc_base_OBJENGSTATE.__engstateStateDestroy__ = &__nvoc_thunk_OBJUVM_engstateStateDestroy;
217 
218     pThis->__nvoc_base_OBJENGSTATE.__engstateStateInitUnlocked__ = &__nvoc_thunk_OBJUVM_engstateStateInitUnlocked;
219 
220     pThis->__nvoc_base_IntrService.__intrservRegisterIntrService__ = &__nvoc_thunk_OBJUVM_intrservRegisterIntrService;
221 
222     pThis->__nvoc_base_IntrService.__intrservServiceInterrupt__ = &__nvoc_thunk_OBJUVM_intrservServiceInterrupt;
223 
224     pThis->__uvmStateLoad__ = &__nvoc_thunk_OBJENGSTATE_uvmStateLoad;
225 
226     pThis->__uvmStateUnload__ = &__nvoc_thunk_OBJENGSTATE_uvmStateUnload;
227 
228     pThis->__uvmServiceNotificationInterrupt__ = &__nvoc_thunk_IntrService_uvmServiceNotificationInterrupt;
229 
230     pThis->__uvmStateInitLocked__ = &__nvoc_thunk_OBJENGSTATE_uvmStateInitLocked;
231 
232     pThis->__uvmStatePreLoad__ = &__nvoc_thunk_OBJENGSTATE_uvmStatePreLoad;
233 
234     pThis->__uvmStatePostUnload__ = &__nvoc_thunk_OBJENGSTATE_uvmStatePostUnload;
235 
236     pThis->__uvmStatePreUnload__ = &__nvoc_thunk_OBJENGSTATE_uvmStatePreUnload;
237 
238     pThis->__uvmInitMissing__ = &__nvoc_thunk_OBJENGSTATE_uvmInitMissing;
239 
240     pThis->__uvmStatePreInitLocked__ = &__nvoc_thunk_OBJENGSTATE_uvmStatePreInitLocked;
241 
242     pThis->__uvmStatePreInitUnlocked__ = &__nvoc_thunk_OBJENGSTATE_uvmStatePreInitUnlocked;
243 
244     pThis->__uvmClearInterrupt__ = &__nvoc_thunk_IntrService_uvmClearInterrupt;
245 
246     pThis->__uvmStatePostLoad__ = &__nvoc_thunk_OBJENGSTATE_uvmStatePostLoad;
247 
248     pThis->__uvmConstructEngine__ = &__nvoc_thunk_OBJENGSTATE_uvmConstructEngine;
249 
250     pThis->__uvmIsPresent__ = &__nvoc_thunk_OBJENGSTATE_uvmIsPresent;
251 }
252 
253 void __nvoc_init_funcTable_OBJUVM(OBJUVM *pThis, RmHalspecOwner *pRmhalspecowner) {
254     __nvoc_init_funcTable_OBJUVM_1(pThis, pRmhalspecowner);
255 }
256 
257 void __nvoc_init_OBJENGSTATE(OBJENGSTATE*);
258 void __nvoc_init_IntrService(IntrService*);
259 void __nvoc_init_OBJUVM(OBJUVM *pThis, RmHalspecOwner *pRmhalspecowner) {
260     pThis->__nvoc_pbase_OBJUVM = pThis;
261     pThis->__nvoc_pbase_Object = &pThis->__nvoc_base_OBJENGSTATE.__nvoc_base_Object;
262     pThis->__nvoc_pbase_OBJENGSTATE = &pThis->__nvoc_base_OBJENGSTATE;
263     pThis->__nvoc_pbase_IntrService = &pThis->__nvoc_base_IntrService;
264     __nvoc_init_OBJENGSTATE(&pThis->__nvoc_base_OBJENGSTATE);
265     __nvoc_init_IntrService(&pThis->__nvoc_base_IntrService);
266     __nvoc_init_funcTable_OBJUVM(pThis, pRmhalspecowner);
267 }
268 
269 NV_STATUS __nvoc_objCreate_OBJUVM(OBJUVM **ppThis, Dynamic *pParent, NvU32 createFlags) {
270     NV_STATUS status;
271     Object *pParentObj;
272     OBJUVM *pThis;
273     RmHalspecOwner *pRmhalspecowner;
274 
275     status = __nvoc_handleObjCreateMemAlloc(createFlags, sizeof(OBJUVM), (void**)&pThis, (void**)ppThis);
276     if (status != NV_OK)
277         return status;
278 
279     portMemSet(pThis, 0, sizeof(OBJUVM));
280 
281     __nvoc_initRtti(staticCast(pThis, Dynamic), &__nvoc_class_def_OBJUVM);
282 
283     pThis->__nvoc_base_OBJENGSTATE.__nvoc_base_Object.createFlags = createFlags;
284 
285     if (pParent != NULL && !(createFlags & NVOC_OBJ_CREATE_FLAGS_PARENT_HALSPEC_ONLY))
286     {
287         pParentObj = dynamicCast(pParent, Object);
288         objAddChild(pParentObj, &pThis->__nvoc_base_OBJENGSTATE.__nvoc_base_Object);
289     }
290     else
291     {
292         pThis->__nvoc_base_OBJENGSTATE.__nvoc_base_Object.pParent = NULL;
293     }
294 
295     if ((pRmhalspecowner = dynamicCast(pParent, RmHalspecOwner)) == NULL)
296         pRmhalspecowner = objFindAncestorOfType(RmHalspecOwner, pParent);
297     NV_ASSERT_OR_RETURN(pRmhalspecowner != NULL, NV_ERR_INVALID_ARGUMENT);
298 
299     __nvoc_init_OBJUVM(pThis, pRmhalspecowner);
300     status = __nvoc_ctor_OBJUVM(pThis, pRmhalspecowner);
301     if (status != NV_OK) goto __nvoc_objCreate_OBJUVM_cleanup;
302 
303     *ppThis = pThis;
304 
305     return NV_OK;
306 
307 __nvoc_objCreate_OBJUVM_cleanup:
308     // do not call destructors here since the constructor already called them
309     if (createFlags & NVOC_OBJ_CREATE_FLAGS_IN_PLACE_CONSTRUCT)
310         portMemSet(pThis, 0, sizeof(OBJUVM));
311     else
312         portMemFree(pThis);
313 
314     // coverity[leaked_storage:FALSE]
315     return status;
316 }
317 
318 NV_STATUS __nvoc_objCreateDynamic_OBJUVM(OBJUVM **ppThis, Dynamic *pParent, NvU32 createFlags, va_list args) {
319     NV_STATUS status;
320 
321     status = __nvoc_objCreate_OBJUVM(ppThis, pParent, createFlags);
322 
323     return status;
324 }
325 
326