1 #define NVOC_IO_VASPACE_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_io_vaspace_nvoc.h"
9 
10 #ifdef DEBUG
11 char __nvoc_class_id_uniqueness_check_0x28ed9c = 1;
12 #endif
13 
14 extern const struct NVOC_CLASS_DEF __nvoc_class_def_OBJIOVASPACE;
15 
16 extern const struct NVOC_CLASS_DEF __nvoc_class_def_Object;
17 
18 extern const struct NVOC_CLASS_DEF __nvoc_class_def_OBJVASPACE;
19 
20 void __nvoc_init_OBJIOVASPACE(OBJIOVASPACE*);
21 void __nvoc_init_funcTable_OBJIOVASPACE(OBJIOVASPACE*);
22 NV_STATUS __nvoc_ctor_OBJIOVASPACE(OBJIOVASPACE*);
23 void __nvoc_init_dataField_OBJIOVASPACE(OBJIOVASPACE*);
24 void __nvoc_dtor_OBJIOVASPACE(OBJIOVASPACE*);
25 extern const struct NVOC_EXPORT_INFO __nvoc_export_info_OBJIOVASPACE;
26 
27 static const struct NVOC_RTTI __nvoc_rtti_OBJIOVASPACE_OBJIOVASPACE = {
28     /*pClassDef=*/          &__nvoc_class_def_OBJIOVASPACE,
29     /*dtor=*/               (NVOC_DYNAMIC_DTOR) &__nvoc_dtor_OBJIOVASPACE,
30     /*offset=*/             0,
31 };
32 
33 static const struct NVOC_RTTI __nvoc_rtti_OBJIOVASPACE_Object = {
34     /*pClassDef=*/          &__nvoc_class_def_Object,
35     /*dtor=*/               &__nvoc_destructFromBase,
36     /*offset=*/             NV_OFFSETOF(OBJIOVASPACE, __nvoc_base_OBJVASPACE.__nvoc_base_Object),
37 };
38 
39 static const struct NVOC_RTTI __nvoc_rtti_OBJIOVASPACE_OBJVASPACE = {
40     /*pClassDef=*/          &__nvoc_class_def_OBJVASPACE,
41     /*dtor=*/               &__nvoc_destructFromBase,
42     /*offset=*/             NV_OFFSETOF(OBJIOVASPACE, __nvoc_base_OBJVASPACE),
43 };
44 
45 static const struct NVOC_CASTINFO __nvoc_castinfo_OBJIOVASPACE = {
46     /*numRelatives=*/       3,
47     /*relatives=*/ {
48         &__nvoc_rtti_OBJIOVASPACE_OBJIOVASPACE,
49         &__nvoc_rtti_OBJIOVASPACE_OBJVASPACE,
50         &__nvoc_rtti_OBJIOVASPACE_Object,
51     },
52 };
53 
54 const struct NVOC_CLASS_DEF __nvoc_class_def_OBJIOVASPACE =
55 {
56     /*classInfo=*/ {
57         /*size=*/               sizeof(OBJIOVASPACE),
58         /*classId=*/            classId(OBJIOVASPACE),
59         /*providerId=*/         &__nvoc_rtti_provider,
60 #if NV_PRINTF_STRINGS_ALLOWED
61         /*name=*/               "OBJIOVASPACE",
62 #endif
63     },
64     /*objCreatefn=*/        (NVOC_DYNAMIC_OBJ_CREATE) &__nvoc_objCreateDynamic_OBJIOVASPACE,
65     /*pCastInfo=*/          &__nvoc_castinfo_OBJIOVASPACE,
66     /*pExportInfo=*/        &__nvoc_export_info_OBJIOVASPACE
67 };
68 
__nvoc_thunk_OBJIOVASPACE_vaspaceConstruct_(struct OBJVASPACE * pVAS,NvU32 classId,NvU32 vaspaceId,NvU64 vaStart,NvU64 vaLimit,NvU64 vaStartInternal,NvU64 vaLimitInternal,NvU32 flags)69 static NV_STATUS __nvoc_thunk_OBJIOVASPACE_vaspaceConstruct_(struct OBJVASPACE *pVAS, NvU32 classId, NvU32 vaspaceId, NvU64 vaStart, NvU64 vaLimit, NvU64 vaStartInternal, NvU64 vaLimitInternal, NvU32 flags) {
70     return iovaspaceConstruct_((struct OBJIOVASPACE *)(((unsigned char *)pVAS) - __nvoc_rtti_OBJIOVASPACE_OBJVASPACE.offset), classId, vaspaceId, vaStart, vaLimit, vaStartInternal, vaLimitInternal, flags);
71 }
72 
__nvoc_thunk_OBJIOVASPACE_vaspaceAlloc(struct OBJVASPACE * pVAS,NvU64 size,NvU64 align,NvU64 rangeLo,NvU64 rangeHi,NvU64 pageSizeLockMask,VAS_ALLOC_FLAGS flags,NvU64 * pAddr)73 static NV_STATUS __nvoc_thunk_OBJIOVASPACE_vaspaceAlloc(struct OBJVASPACE *pVAS, NvU64 size, NvU64 align, NvU64 rangeLo, NvU64 rangeHi, NvU64 pageSizeLockMask, VAS_ALLOC_FLAGS flags, NvU64 *pAddr) {
74     return iovaspaceAlloc((struct OBJIOVASPACE *)(((unsigned char *)pVAS) - __nvoc_rtti_OBJIOVASPACE_OBJVASPACE.offset), size, align, rangeLo, rangeHi, pageSizeLockMask, flags, pAddr);
75 }
76 
__nvoc_thunk_OBJIOVASPACE_vaspaceFree(struct OBJVASPACE * pVAS,NvU64 vAddr)77 static NV_STATUS __nvoc_thunk_OBJIOVASPACE_vaspaceFree(struct OBJVASPACE *pVAS, NvU64 vAddr) {
78     return iovaspaceFree((struct OBJIOVASPACE *)(((unsigned char *)pVAS) - __nvoc_rtti_OBJIOVASPACE_OBJVASPACE.offset), vAddr);
79 }
80 
__nvoc_thunk_OBJIOVASPACE_vaspaceApplyDefaultAlignment(struct OBJVASPACE * pVAS,const FB_ALLOC_INFO * pAllocInfo,NvU64 * pAlign,NvU64 * pSize,NvU64 * pPageSizeLockMask)81 static NV_STATUS __nvoc_thunk_OBJIOVASPACE_vaspaceApplyDefaultAlignment(struct OBJVASPACE *pVAS, const FB_ALLOC_INFO *pAllocInfo, NvU64 *pAlign, NvU64 *pSize, NvU64 *pPageSizeLockMask) {
82     return iovaspaceApplyDefaultAlignment((struct OBJIOVASPACE *)(((unsigned char *)pVAS) - __nvoc_rtti_OBJIOVASPACE_OBJVASPACE.offset), pAllocInfo, pAlign, pSize, pPageSizeLockMask);
83 }
84 
__nvoc_thunk_OBJIOVASPACE_vaspaceIncAllocRefCnt(struct OBJVASPACE * pVAS,NvU64 vAddr)85 static NV_STATUS __nvoc_thunk_OBJIOVASPACE_vaspaceIncAllocRefCnt(struct OBJVASPACE *pVAS, NvU64 vAddr) {
86     return iovaspaceIncAllocRefCnt((struct OBJIOVASPACE *)(((unsigned char *)pVAS) - __nvoc_rtti_OBJIOVASPACE_OBJVASPACE.offset), vAddr);
87 }
88 
__nvoc_thunk_OBJIOVASPACE_vaspaceGetVaStart(struct OBJVASPACE * pVAS)89 static NvU64 __nvoc_thunk_OBJIOVASPACE_vaspaceGetVaStart(struct OBJVASPACE *pVAS) {
90     return iovaspaceGetVaStart((struct OBJIOVASPACE *)(((unsigned char *)pVAS) - __nvoc_rtti_OBJIOVASPACE_OBJVASPACE.offset));
91 }
92 
__nvoc_thunk_OBJIOVASPACE_vaspaceGetVaLimit(struct OBJVASPACE * pVAS)93 static NvU64 __nvoc_thunk_OBJIOVASPACE_vaspaceGetVaLimit(struct OBJVASPACE *pVAS) {
94     return iovaspaceGetVaLimit((struct OBJIOVASPACE *)(((unsigned char *)pVAS) - __nvoc_rtti_OBJIOVASPACE_OBJVASPACE.offset));
95 }
96 
__nvoc_thunk_OBJIOVASPACE_vaspaceGetVasInfo(struct OBJVASPACE * pVAS,NV0080_CTRL_DMA_ADV_SCHED_GET_VA_CAPS_PARAMS * pParams)97 static NV_STATUS __nvoc_thunk_OBJIOVASPACE_vaspaceGetVasInfo(struct OBJVASPACE *pVAS, NV0080_CTRL_DMA_ADV_SCHED_GET_VA_CAPS_PARAMS *pParams) {
98     return iovaspaceGetVasInfo((struct OBJIOVASPACE *)(((unsigned char *)pVAS) - __nvoc_rtti_OBJIOVASPACE_OBJVASPACE.offset), pParams);
99 }
100 
__nvoc_thunk_OBJVASPACE_iovaspaceIsMirrored(struct OBJIOVASPACE * pVAS)101 static NvBool __nvoc_thunk_OBJVASPACE_iovaspaceIsMirrored(struct OBJIOVASPACE *pVAS) {
102     return vaspaceIsMirrored((struct OBJVASPACE *)(((unsigned char *)pVAS) + __nvoc_rtti_OBJIOVASPACE_OBJVASPACE.offset));
103 }
104 
__nvoc_thunk_OBJVASPACE_iovaspaceIsExternallyOwned(struct OBJIOVASPACE * pVAS)105 static NvBool __nvoc_thunk_OBJVASPACE_iovaspaceIsExternallyOwned(struct OBJIOVASPACE *pVAS) {
106     return vaspaceIsExternallyOwned((struct OBJVASPACE *)(((unsigned char *)pVAS) + __nvoc_rtti_OBJIOVASPACE_OBJVASPACE.offset));
107 }
108 
__nvoc_thunk_OBJVASPACE_iovaspaceGetFlags(struct OBJIOVASPACE * pVAS)109 static NvU32 __nvoc_thunk_OBJVASPACE_iovaspaceGetFlags(struct OBJIOVASPACE *pVAS) {
110     return vaspaceGetFlags((struct OBJVASPACE *)(((unsigned char *)pVAS) + __nvoc_rtti_OBJIOVASPACE_OBJVASPACE.offset));
111 }
112 
__nvoc_thunk_OBJVASPACE_iovaspaceIsAtsEnabled(struct OBJIOVASPACE * pVAS)113 static NvBool __nvoc_thunk_OBJVASPACE_iovaspaceIsAtsEnabled(struct OBJIOVASPACE *pVAS) {
114     return vaspaceIsAtsEnabled((struct OBJVASPACE *)(((unsigned char *)pVAS) + __nvoc_rtti_OBJIOVASPACE_OBJVASPACE.offset));
115 }
116 
__nvoc_thunk_OBJVASPACE_iovaspaceGetBigPageSize(struct OBJIOVASPACE * pVAS)117 static NvU64 __nvoc_thunk_OBJVASPACE_iovaspaceGetBigPageSize(struct OBJIOVASPACE *pVAS) {
118     return vaspaceGetBigPageSize((struct OBJVASPACE *)(((unsigned char *)pVAS) + __nvoc_rtti_OBJIOVASPACE_OBJVASPACE.offset));
119 }
120 
__nvoc_thunk_OBJVASPACE_iovaspaceGetPteInfo(struct OBJIOVASPACE * pVAS,struct OBJGPU * pGpu,NV0080_CTRL_DMA_GET_PTE_INFO_PARAMS * pParams,RmPhysAddr * pPhysAddr)121 static NV_STATUS __nvoc_thunk_OBJVASPACE_iovaspaceGetPteInfo(struct OBJIOVASPACE *pVAS, struct OBJGPU *pGpu, NV0080_CTRL_DMA_GET_PTE_INFO_PARAMS *pParams, RmPhysAddr *pPhysAddr) {
122     return vaspaceGetPteInfo((struct OBJVASPACE *)(((unsigned char *)pVAS) + __nvoc_rtti_OBJIOVASPACE_OBJVASPACE.offset), pGpu, pParams, pPhysAddr);
123 }
124 
__nvoc_thunk_OBJVASPACE_iovaspaceGetPageDirBase(struct OBJIOVASPACE * pVAS,struct OBJGPU * pGpu)125 static PMEMORY_DESCRIPTOR __nvoc_thunk_OBJVASPACE_iovaspaceGetPageDirBase(struct OBJIOVASPACE *pVAS, struct OBJGPU *pGpu) {
126     return vaspaceGetPageDirBase((struct OBJVASPACE *)(((unsigned char *)pVAS) + __nvoc_rtti_OBJIOVASPACE_OBJVASPACE.offset), pGpu);
127 }
128 
__nvoc_thunk_OBJVASPACE_iovaspaceGetKernelPageDirBase(struct OBJIOVASPACE * pVAS,struct OBJGPU * pGpu)129 static PMEMORY_DESCRIPTOR __nvoc_thunk_OBJVASPACE_iovaspaceGetKernelPageDirBase(struct OBJIOVASPACE *pVAS, struct OBJGPU *pGpu) {
130     return vaspaceGetKernelPageDirBase((struct OBJVASPACE *)(((unsigned char *)pVAS) + __nvoc_rtti_OBJIOVASPACE_OBJVASPACE.offset), pGpu);
131 }
132 
__nvoc_thunk_OBJVASPACE_iovaspaceGetMapPageSize(struct OBJIOVASPACE * pVAS,struct OBJGPU * pGpu,struct EMEMBLOCK * pMemBlock)133 static NvU64 __nvoc_thunk_OBJVASPACE_iovaspaceGetMapPageSize(struct OBJIOVASPACE *pVAS, struct OBJGPU *pGpu, struct EMEMBLOCK *pMemBlock) {
134     return vaspaceGetMapPageSize((struct OBJVASPACE *)(((unsigned char *)pVAS) + __nvoc_rtti_OBJIOVASPACE_OBJVASPACE.offset), pGpu, pMemBlock);
135 }
136 
__nvoc_thunk_OBJVASPACE_iovaspaceGetHeap(struct OBJIOVASPACE * pVAS)137 static struct OBJEHEAP *__nvoc_thunk_OBJVASPACE_iovaspaceGetHeap(struct OBJIOVASPACE *pVAS) {
138     return vaspaceGetHeap((struct OBJVASPACE *)(((unsigned char *)pVAS) + __nvoc_rtti_OBJIOVASPACE_OBJVASPACE.offset));
139 }
140 
__nvoc_thunk_OBJVASPACE_iovaspaceIsFaultCapable(struct OBJIOVASPACE * pVAS)141 static NvBool __nvoc_thunk_OBJVASPACE_iovaspaceIsFaultCapable(struct OBJIOVASPACE *pVAS) {
142     return vaspaceIsFaultCapable((struct OBJVASPACE *)(((unsigned char *)pVAS) + __nvoc_rtti_OBJIOVASPACE_OBJVASPACE.offset));
143 }
144 
__nvoc_thunk_OBJVASPACE_iovaspaceUnmap(struct OBJIOVASPACE * pVAS,struct OBJGPU * pGpu,const NvU64 vaLo,const NvU64 vaHi)145 static void __nvoc_thunk_OBJVASPACE_iovaspaceUnmap(struct OBJIOVASPACE *pVAS, struct OBJGPU *pGpu, const NvU64 vaLo, const NvU64 vaHi) {
146     vaspaceUnmap((struct OBJVASPACE *)(((unsigned char *)pVAS) + __nvoc_rtti_OBJIOVASPACE_OBJVASPACE.offset), pGpu, vaLo, vaHi);
147 }
148 
__nvoc_thunk_OBJVASPACE_iovaspaceInvalidateTlb(struct OBJIOVASPACE * pVAS,struct OBJGPU * pGpu,VAS_PTE_UPDATE_TYPE type)149 static void __nvoc_thunk_OBJVASPACE_iovaspaceInvalidateTlb(struct OBJIOVASPACE *pVAS, struct OBJGPU *pGpu, VAS_PTE_UPDATE_TYPE type) {
150     vaspaceInvalidateTlb((struct OBJVASPACE *)(((unsigned char *)pVAS) + __nvoc_rtti_OBJIOVASPACE_OBJVASPACE.offset), pGpu, type);
151 }
152 
__nvoc_thunk_OBJVASPACE_iovaspacePinRootPageDir(struct OBJIOVASPACE * pVAS,struct OBJGPU * pGpu)153 static NV_STATUS __nvoc_thunk_OBJVASPACE_iovaspacePinRootPageDir(struct OBJIOVASPACE *pVAS, struct OBJGPU *pGpu) {
154     return vaspacePinRootPageDir((struct OBJVASPACE *)(((unsigned char *)pVAS) + __nvoc_rtti_OBJIOVASPACE_OBJVASPACE.offset), pGpu);
155 }
156 
__nvoc_thunk_OBJVASPACE_iovaspaceUnpinRootPageDir(struct OBJIOVASPACE * pVAS,struct OBJGPU * pGpu)157 static void __nvoc_thunk_OBJVASPACE_iovaspaceUnpinRootPageDir(struct OBJIOVASPACE *pVAS, struct OBJGPU *pGpu) {
158     vaspaceUnpinRootPageDir((struct OBJVASPACE *)(((unsigned char *)pVAS) + __nvoc_rtti_OBJIOVASPACE_OBJVASPACE.offset), pGpu);
159 }
160 
__nvoc_thunk_OBJVASPACE_iovaspaceSetPteInfo(struct OBJIOVASPACE * pVAS,struct OBJGPU * pGpu,NV0080_CTRL_DMA_SET_PTE_INFO_PARAMS * pParams)161 static NV_STATUS __nvoc_thunk_OBJVASPACE_iovaspaceSetPteInfo(struct OBJIOVASPACE *pVAS, struct OBJGPU *pGpu, NV0080_CTRL_DMA_SET_PTE_INFO_PARAMS *pParams) {
162     return vaspaceSetPteInfo((struct OBJVASPACE *)(((unsigned char *)pVAS) + __nvoc_rtti_OBJIOVASPACE_OBJVASPACE.offset), pGpu, pParams);
163 }
164 
__nvoc_thunk_OBJVASPACE_iovaspaceFreeV2(struct OBJIOVASPACE * pVAS,NvU64 vAddr,NvU64 * pSize)165 static NV_STATUS __nvoc_thunk_OBJVASPACE_iovaspaceFreeV2(struct OBJIOVASPACE *pVAS, NvU64 vAddr, NvU64 *pSize) {
166     return vaspaceFreeV2((struct OBJVASPACE *)(((unsigned char *)pVAS) + __nvoc_rtti_OBJIOVASPACE_OBJVASPACE.offset), vAddr, pSize);
167 }
168 
__nvoc_thunk_OBJVASPACE_iovaspaceGetPasid(struct OBJIOVASPACE * pVAS,NvU32 * pPasid)169 static NV_STATUS __nvoc_thunk_OBJVASPACE_iovaspaceGetPasid(struct OBJIOVASPACE *pVAS, NvU32 *pPasid) {
170     return vaspaceGetPasid((struct OBJVASPACE *)(((unsigned char *)pVAS) + __nvoc_rtti_OBJIOVASPACE_OBJVASPACE.offset), pPasid);
171 }
172 
__nvoc_thunk_OBJVASPACE_iovaspaceGetPageTableInfo(struct OBJIOVASPACE * pVAS,NV0080_CTRL_DMA_GET_PDE_INFO_PARAMS * pParams)173 static NV_STATUS __nvoc_thunk_OBJVASPACE_iovaspaceGetPageTableInfo(struct OBJIOVASPACE *pVAS, NV0080_CTRL_DMA_GET_PDE_INFO_PARAMS *pParams) {
174     return vaspaceGetPageTableInfo((struct OBJVASPACE *)(((unsigned char *)pVAS) + __nvoc_rtti_OBJIOVASPACE_OBJVASPACE.offset), pParams);
175 }
176 
__nvoc_thunk_OBJVASPACE_iovaspaceReserveMempool(struct OBJIOVASPACE * pVAS,struct OBJGPU * pGpu,struct Device * pDevice,NvU64 size,NvU64 pageSizeLockMask,NvU32 flags)177 static NV_STATUS __nvoc_thunk_OBJVASPACE_iovaspaceReserveMempool(struct OBJIOVASPACE *pVAS, struct OBJGPU *pGpu, struct Device *pDevice, NvU64 size, NvU64 pageSizeLockMask, NvU32 flags) {
178     return vaspaceReserveMempool((struct OBJVASPACE *)(((unsigned char *)pVAS) + __nvoc_rtti_OBJIOVASPACE_OBJVASPACE.offset), pGpu, pDevice, size, pageSizeLockMask, flags);
179 }
180 
__nvoc_thunk_OBJVASPACE_iovaspaceMap(struct OBJIOVASPACE * pVAS,struct OBJGPU * pGpu,const NvU64 vaLo,const NvU64 vaHi,const MMU_MAP_TARGET * pTarget,const VAS_MAP_FLAGS flags)181 static NV_STATUS __nvoc_thunk_OBJVASPACE_iovaspaceMap(struct OBJIOVASPACE *pVAS, struct OBJGPU *pGpu, const NvU64 vaLo, const NvU64 vaHi, const MMU_MAP_TARGET *pTarget, const VAS_MAP_FLAGS flags) {
182     return vaspaceMap((struct OBJVASPACE *)(((unsigned char *)pVAS) + __nvoc_rtti_OBJIOVASPACE_OBJVASPACE.offset), pGpu, vaLo, vaHi, pTarget, flags);
183 }
184 
185 const struct NVOC_EXPORT_INFO __nvoc_export_info_OBJIOVASPACE =
186 {
187     /*numEntries=*/     0,
188     /*pExportEntries=*/  0
189 };
190 
191 void __nvoc_dtor_OBJVASPACE(OBJVASPACE*);
__nvoc_dtor_OBJIOVASPACE(OBJIOVASPACE * pThis)192 void __nvoc_dtor_OBJIOVASPACE(OBJIOVASPACE *pThis) {
193     __nvoc_iovaspaceDestruct(pThis);
194     __nvoc_dtor_OBJVASPACE(&pThis->__nvoc_base_OBJVASPACE);
195     PORT_UNREFERENCED_VARIABLE(pThis);
196 }
197 
__nvoc_init_dataField_OBJIOVASPACE(OBJIOVASPACE * pThis)198 void __nvoc_init_dataField_OBJIOVASPACE(OBJIOVASPACE *pThis) {
199     PORT_UNREFERENCED_VARIABLE(pThis);
200 }
201 
202 NV_STATUS __nvoc_ctor_OBJVASPACE(OBJVASPACE* );
__nvoc_ctor_OBJIOVASPACE(OBJIOVASPACE * pThis)203 NV_STATUS __nvoc_ctor_OBJIOVASPACE(OBJIOVASPACE *pThis) {
204     NV_STATUS status = NV_OK;
205     status = __nvoc_ctor_OBJVASPACE(&pThis->__nvoc_base_OBJVASPACE);
206     if (status != NV_OK) goto __nvoc_ctor_OBJIOVASPACE_fail_OBJVASPACE;
207     __nvoc_init_dataField_OBJIOVASPACE(pThis);
208     goto __nvoc_ctor_OBJIOVASPACE_exit; // Success
209 
210 __nvoc_ctor_OBJIOVASPACE_fail_OBJVASPACE:
211 __nvoc_ctor_OBJIOVASPACE_exit:
212 
213     return status;
214 }
215 
__nvoc_init_funcTable_OBJIOVASPACE_1(OBJIOVASPACE * pThis)216 static void __nvoc_init_funcTable_OBJIOVASPACE_1(OBJIOVASPACE *pThis) {
217     PORT_UNREFERENCED_VARIABLE(pThis);
218 
219     pThis->__iovaspaceConstruct___ = &iovaspaceConstruct__IMPL;
220 
221     pThis->__iovaspaceAlloc__ = &iovaspaceAlloc_IMPL;
222 
223     pThis->__iovaspaceFree__ = &iovaspaceFree_IMPL;
224 
225     pThis->__iovaspaceApplyDefaultAlignment__ = &iovaspaceApplyDefaultAlignment_IMPL;
226 
227     pThis->__iovaspaceIncAllocRefCnt__ = &iovaspaceIncAllocRefCnt_IMPL;
228 
229     pThis->__iovaspaceGetVaStart__ = &iovaspaceGetVaStart_IMPL;
230 
231     pThis->__iovaspaceGetVaLimit__ = &iovaspaceGetVaLimit_IMPL;
232 
233     pThis->__iovaspaceGetVasInfo__ = &iovaspaceGetVasInfo_IMPL;
234 
235     pThis->__nvoc_base_OBJVASPACE.__vaspaceConstruct___ = &__nvoc_thunk_OBJIOVASPACE_vaspaceConstruct_;
236 
237     pThis->__nvoc_base_OBJVASPACE.__vaspaceAlloc__ = &__nvoc_thunk_OBJIOVASPACE_vaspaceAlloc;
238 
239     pThis->__nvoc_base_OBJVASPACE.__vaspaceFree__ = &__nvoc_thunk_OBJIOVASPACE_vaspaceFree;
240 
241     pThis->__nvoc_base_OBJVASPACE.__vaspaceApplyDefaultAlignment__ = &__nvoc_thunk_OBJIOVASPACE_vaspaceApplyDefaultAlignment;
242 
243     pThis->__nvoc_base_OBJVASPACE.__vaspaceIncAllocRefCnt__ = &__nvoc_thunk_OBJIOVASPACE_vaspaceIncAllocRefCnt;
244 
245     pThis->__nvoc_base_OBJVASPACE.__vaspaceGetVaStart__ = &__nvoc_thunk_OBJIOVASPACE_vaspaceGetVaStart;
246 
247     pThis->__nvoc_base_OBJVASPACE.__vaspaceGetVaLimit__ = &__nvoc_thunk_OBJIOVASPACE_vaspaceGetVaLimit;
248 
249     pThis->__nvoc_base_OBJVASPACE.__vaspaceGetVasInfo__ = &__nvoc_thunk_OBJIOVASPACE_vaspaceGetVasInfo;
250 
251     pThis->__iovaspaceIsMirrored__ = &__nvoc_thunk_OBJVASPACE_iovaspaceIsMirrored;
252 
253     pThis->__iovaspaceIsExternallyOwned__ = &__nvoc_thunk_OBJVASPACE_iovaspaceIsExternallyOwned;
254 
255     pThis->__iovaspaceGetFlags__ = &__nvoc_thunk_OBJVASPACE_iovaspaceGetFlags;
256 
257     pThis->__iovaspaceIsAtsEnabled__ = &__nvoc_thunk_OBJVASPACE_iovaspaceIsAtsEnabled;
258 
259     pThis->__iovaspaceGetBigPageSize__ = &__nvoc_thunk_OBJVASPACE_iovaspaceGetBigPageSize;
260 
261     pThis->__iovaspaceGetPteInfo__ = &__nvoc_thunk_OBJVASPACE_iovaspaceGetPteInfo;
262 
263     pThis->__iovaspaceGetPageDirBase__ = &__nvoc_thunk_OBJVASPACE_iovaspaceGetPageDirBase;
264 
265     pThis->__iovaspaceGetKernelPageDirBase__ = &__nvoc_thunk_OBJVASPACE_iovaspaceGetKernelPageDirBase;
266 
267     pThis->__iovaspaceGetMapPageSize__ = &__nvoc_thunk_OBJVASPACE_iovaspaceGetMapPageSize;
268 
269     pThis->__iovaspaceGetHeap__ = &__nvoc_thunk_OBJVASPACE_iovaspaceGetHeap;
270 
271     pThis->__iovaspaceIsFaultCapable__ = &__nvoc_thunk_OBJVASPACE_iovaspaceIsFaultCapable;
272 
273     pThis->__iovaspaceUnmap__ = &__nvoc_thunk_OBJVASPACE_iovaspaceUnmap;
274 
275     pThis->__iovaspaceInvalidateTlb__ = &__nvoc_thunk_OBJVASPACE_iovaspaceInvalidateTlb;
276 
277     pThis->__iovaspacePinRootPageDir__ = &__nvoc_thunk_OBJVASPACE_iovaspacePinRootPageDir;
278 
279     pThis->__iovaspaceUnpinRootPageDir__ = &__nvoc_thunk_OBJVASPACE_iovaspaceUnpinRootPageDir;
280 
281     pThis->__iovaspaceSetPteInfo__ = &__nvoc_thunk_OBJVASPACE_iovaspaceSetPteInfo;
282 
283     pThis->__iovaspaceFreeV2__ = &__nvoc_thunk_OBJVASPACE_iovaspaceFreeV2;
284 
285     pThis->__iovaspaceGetPasid__ = &__nvoc_thunk_OBJVASPACE_iovaspaceGetPasid;
286 
287     pThis->__iovaspaceGetPageTableInfo__ = &__nvoc_thunk_OBJVASPACE_iovaspaceGetPageTableInfo;
288 
289     pThis->__iovaspaceReserveMempool__ = &__nvoc_thunk_OBJVASPACE_iovaspaceReserveMempool;
290 
291     pThis->__iovaspaceMap__ = &__nvoc_thunk_OBJVASPACE_iovaspaceMap;
292 }
293 
__nvoc_init_funcTable_OBJIOVASPACE(OBJIOVASPACE * pThis)294 void __nvoc_init_funcTable_OBJIOVASPACE(OBJIOVASPACE *pThis) {
295     __nvoc_init_funcTable_OBJIOVASPACE_1(pThis);
296 }
297 
298 void __nvoc_init_OBJVASPACE(OBJVASPACE*);
__nvoc_init_OBJIOVASPACE(OBJIOVASPACE * pThis)299 void __nvoc_init_OBJIOVASPACE(OBJIOVASPACE *pThis) {
300     pThis->__nvoc_pbase_OBJIOVASPACE = pThis;
301     pThis->__nvoc_pbase_Object = &pThis->__nvoc_base_OBJVASPACE.__nvoc_base_Object;
302     pThis->__nvoc_pbase_OBJVASPACE = &pThis->__nvoc_base_OBJVASPACE;
303     __nvoc_init_OBJVASPACE(&pThis->__nvoc_base_OBJVASPACE);
304     __nvoc_init_funcTable_OBJIOVASPACE(pThis);
305 }
306 
__nvoc_objCreate_OBJIOVASPACE(OBJIOVASPACE ** ppThis,Dynamic * pParent,NvU32 createFlags)307 NV_STATUS __nvoc_objCreate_OBJIOVASPACE(OBJIOVASPACE **ppThis, Dynamic *pParent, NvU32 createFlags)
308 {
309     NV_STATUS status;
310     Object *pParentObj = NULL;
311     OBJIOVASPACE *pThis;
312 
313     // Assign `pThis`, allocating memory unless suppressed by flag.
314     status = __nvoc_handleObjCreateMemAlloc(createFlags, sizeof(OBJIOVASPACE), (void**)&pThis, (void**)ppThis);
315     if (status != NV_OK)
316         return status;
317 
318     // Zero is the initial value for everything.
319     portMemSet(pThis, 0, sizeof(OBJIOVASPACE));
320 
321     // Initialize runtime type information.
322     __nvoc_initRtti(staticCast(pThis, Dynamic), &__nvoc_class_def_OBJIOVASPACE);
323 
324     pThis->__nvoc_base_OBJVASPACE.__nvoc_base_Object.createFlags = createFlags;
325 
326     // Link the child into the parent if there is one unless flagged not to do so.
327     if (pParent != NULL && !(createFlags & NVOC_OBJ_CREATE_FLAGS_PARENT_HALSPEC_ONLY))
328     {
329         pParentObj = dynamicCast(pParent, Object);
330         objAddChild(pParentObj, &pThis->__nvoc_base_OBJVASPACE.__nvoc_base_Object);
331     }
332     else
333     {
334         pThis->__nvoc_base_OBJVASPACE.__nvoc_base_Object.pParent = NULL;
335     }
336 
337     __nvoc_init_OBJIOVASPACE(pThis);
338     status = __nvoc_ctor_OBJIOVASPACE(pThis);
339     if (status != NV_OK) goto __nvoc_objCreate_OBJIOVASPACE_cleanup;
340 
341     // Assignment has no effect if NVOC_OBJ_CREATE_FLAGS_IN_PLACE_CONSTRUCT is set.
342     *ppThis = pThis;
343 
344     return NV_OK;
345 
346 __nvoc_objCreate_OBJIOVASPACE_cleanup:
347 
348     // Unlink the child from the parent if it was linked above.
349     if (pParentObj != NULL)
350         objRemoveChild(pParentObj, &pThis->__nvoc_base_OBJVASPACE.__nvoc_base_Object);
351 
352     // Do not call destructors here since the constructor already called them.
353     if (createFlags & NVOC_OBJ_CREATE_FLAGS_IN_PLACE_CONSTRUCT)
354         portMemSet(pThis, 0, sizeof(OBJIOVASPACE));
355     else
356     {
357         portMemFree(pThis);
358         *ppThis = NULL;
359     }
360 
361     // coverity[leaked_storage:FALSE]
362     return status;
363 }
364 
__nvoc_objCreateDynamic_OBJIOVASPACE(OBJIOVASPACE ** ppThis,Dynamic * pParent,NvU32 createFlags,va_list args)365 NV_STATUS __nvoc_objCreateDynamic_OBJIOVASPACE(OBJIOVASPACE **ppThis, Dynamic *pParent, NvU32 createFlags, va_list args) {
366     NV_STATUS status;
367 
368     status = __nvoc_objCreate_OBJIOVASPACE(ppThis, pParent, createFlags);
369 
370     return status;
371 }
372 
373