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