1 #define NVOC_KERN_MEM_SYS_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_kern_mem_sys_nvoc.h"
9 
10 #ifdef DEBUG
11 char __nvoc_class_id_uniqueness_check_0x7faff1 = 1;
12 #endif
13 
14 extern const struct NVOC_CLASS_DEF __nvoc_class_def_KernelMemorySystem;
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_KernelMemorySystem(KernelMemorySystem*, RmHalspecOwner* );
21 void __nvoc_init_funcTable_KernelMemorySystem(KernelMemorySystem*, RmHalspecOwner* );
22 NV_STATUS __nvoc_ctor_KernelMemorySystem(KernelMemorySystem*, RmHalspecOwner* );
23 void __nvoc_init_dataField_KernelMemorySystem(KernelMemorySystem*, RmHalspecOwner* );
24 void __nvoc_dtor_KernelMemorySystem(KernelMemorySystem*);
25 extern const struct NVOC_EXPORT_INFO __nvoc_export_info_KernelMemorySystem;
26 
27 static const struct NVOC_RTTI __nvoc_rtti_KernelMemorySystem_KernelMemorySystem = {
28     /*pClassDef=*/          &__nvoc_class_def_KernelMemorySystem,
29     /*dtor=*/               (NVOC_DYNAMIC_DTOR) &__nvoc_dtor_KernelMemorySystem,
30     /*offset=*/             0,
31 };
32 
33 static const struct NVOC_RTTI __nvoc_rtti_KernelMemorySystem_Object = {
34     /*pClassDef=*/          &__nvoc_class_def_Object,
35     /*dtor=*/               &__nvoc_destructFromBase,
36     /*offset=*/             NV_OFFSETOF(KernelMemorySystem, __nvoc_base_OBJENGSTATE.__nvoc_base_Object),
37 };
38 
39 static const struct NVOC_RTTI __nvoc_rtti_KernelMemorySystem_OBJENGSTATE = {
40     /*pClassDef=*/          &__nvoc_class_def_OBJENGSTATE,
41     /*dtor=*/               &__nvoc_destructFromBase,
42     /*offset=*/             NV_OFFSETOF(KernelMemorySystem, __nvoc_base_OBJENGSTATE),
43 };
44 
45 static const struct NVOC_CASTINFO __nvoc_castinfo_KernelMemorySystem = {
46     /*numRelatives=*/       3,
47     /*relatives=*/ {
48         &__nvoc_rtti_KernelMemorySystem_KernelMemorySystem,
49         &__nvoc_rtti_KernelMemorySystem_OBJENGSTATE,
50         &__nvoc_rtti_KernelMemorySystem_Object,
51     },
52 };
53 
54 const struct NVOC_CLASS_DEF __nvoc_class_def_KernelMemorySystem =
55 {
56     /*classInfo=*/ {
57         /*size=*/               sizeof(KernelMemorySystem),
58         /*classId=*/            classId(KernelMemorySystem),
59         /*providerId=*/         &__nvoc_rtti_provider,
60 #if NV_PRINTF_STRINGS_ALLOWED
61         /*name=*/               "KernelMemorySystem",
62 #endif
63     },
64     /*objCreatefn=*/        (NVOC_DYNAMIC_OBJ_CREATE) &__nvoc_objCreateDynamic_KernelMemorySystem,
65     /*pCastInfo=*/          &__nvoc_castinfo_KernelMemorySystem,
66     /*pExportInfo=*/        &__nvoc_export_info_KernelMemorySystem
67 };
68 
69 static NV_STATUS __nvoc_thunk_KernelMemorySystem_engstateConstructEngine(OBJGPU *pGpu, struct OBJENGSTATE *pKernelMemorySystem, ENGDESCRIPTOR arg0) {
70     return kmemsysConstructEngine(pGpu, (struct KernelMemorySystem *)(((unsigned char *)pKernelMemorySystem) - __nvoc_rtti_KernelMemorySystem_OBJENGSTATE.offset), arg0);
71 }
72 
73 static NV_STATUS __nvoc_thunk_KernelMemorySystem_engstateStateInitLocked(OBJGPU *pGpu, struct OBJENGSTATE *pKernelMemorySystem) {
74     return kmemsysStateInitLocked(pGpu, (struct KernelMemorySystem *)(((unsigned char *)pKernelMemorySystem) - __nvoc_rtti_KernelMemorySystem_OBJENGSTATE.offset));
75 }
76 
77 static NV_STATUS __nvoc_thunk_KernelMemorySystem_engstateStatePreLoad(OBJGPU *pGpu, struct OBJENGSTATE *pKernelMemorySystem, NvU32 flags) {
78     return kmemsysStatePreLoad(pGpu, (struct KernelMemorySystem *)(((unsigned char *)pKernelMemorySystem) - __nvoc_rtti_KernelMemorySystem_OBJENGSTATE.offset), flags);
79 }
80 
81 static NV_STATUS __nvoc_thunk_KernelMemorySystem_engstateStatePostLoad(OBJGPU *pGpu, struct OBJENGSTATE *pKernelMemorySystem, NvU32 flags) {
82     return kmemsysStatePostLoad(pGpu, (struct KernelMemorySystem *)(((unsigned char *)pKernelMemorySystem) - __nvoc_rtti_KernelMemorySystem_OBJENGSTATE.offset), flags);
83 }
84 
85 static void __nvoc_thunk_KernelMemorySystem_engstateStateDestroy(OBJGPU *pGpu, struct OBJENGSTATE *pKernelMemorySystem) {
86     kmemsysStateDestroy(pGpu, (struct KernelMemorySystem *)(((unsigned char *)pKernelMemorySystem) - __nvoc_rtti_KernelMemorySystem_OBJENGSTATE.offset));
87 }
88 
89 static NV_STATUS __nvoc_thunk_OBJENGSTATE_kmemsysStateLoad(POBJGPU pGpu, struct KernelMemorySystem *pEngstate, NvU32 arg0) {
90     return engstateStateLoad(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelMemorySystem_OBJENGSTATE.offset), arg0);
91 }
92 
93 static NV_STATUS __nvoc_thunk_OBJENGSTATE_kmemsysStateUnload(POBJGPU pGpu, struct KernelMemorySystem *pEngstate, NvU32 arg0) {
94     return engstateStateUnload(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelMemorySystem_OBJENGSTATE.offset), arg0);
95 }
96 
97 static NV_STATUS __nvoc_thunk_OBJENGSTATE_kmemsysStatePostUnload(POBJGPU pGpu, struct KernelMemorySystem *pEngstate, NvU32 arg0) {
98     return engstateStatePostUnload(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelMemorySystem_OBJENGSTATE.offset), arg0);
99 }
100 
101 static NV_STATUS __nvoc_thunk_OBJENGSTATE_kmemsysStatePreUnload(POBJGPU pGpu, struct KernelMemorySystem *pEngstate, NvU32 arg0) {
102     return engstateStatePreUnload(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelMemorySystem_OBJENGSTATE.offset), arg0);
103 }
104 
105 static NV_STATUS __nvoc_thunk_OBJENGSTATE_kmemsysStateInitUnlocked(POBJGPU pGpu, struct KernelMemorySystem *pEngstate) {
106     return engstateStateInitUnlocked(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelMemorySystem_OBJENGSTATE.offset));
107 }
108 
109 static void __nvoc_thunk_OBJENGSTATE_kmemsysInitMissing(POBJGPU pGpu, struct KernelMemorySystem *pEngstate) {
110     engstateInitMissing(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelMemorySystem_OBJENGSTATE.offset));
111 }
112 
113 static NV_STATUS __nvoc_thunk_OBJENGSTATE_kmemsysStatePreInitLocked(POBJGPU pGpu, struct KernelMemorySystem *pEngstate) {
114     return engstateStatePreInitLocked(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelMemorySystem_OBJENGSTATE.offset));
115 }
116 
117 static NV_STATUS __nvoc_thunk_OBJENGSTATE_kmemsysStatePreInitUnlocked(POBJGPU pGpu, struct KernelMemorySystem *pEngstate) {
118     return engstateStatePreInitUnlocked(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelMemorySystem_OBJENGSTATE.offset));
119 }
120 
121 static NvBool __nvoc_thunk_OBJENGSTATE_kmemsysIsPresent(POBJGPU pGpu, struct KernelMemorySystem *pEngstate) {
122     return engstateIsPresent(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelMemorySystem_OBJENGSTATE.offset));
123 }
124 
125 const struct NVOC_EXPORT_INFO __nvoc_export_info_KernelMemorySystem =
126 {
127     /*numEntries=*/     0,
128     /*pExportEntries=*/  0
129 };
130 
131 void __nvoc_dtor_OBJENGSTATE(OBJENGSTATE*);
132 void __nvoc_dtor_KernelMemorySystem(KernelMemorySystem *pThis) {
133     __nvoc_kmemsysDestruct(pThis);
134     __nvoc_dtor_OBJENGSTATE(&pThis->__nvoc_base_OBJENGSTATE);
135     PORT_UNREFERENCED_VARIABLE(pThis);
136 }
137 
138 void __nvoc_init_dataField_KernelMemorySystem(KernelMemorySystem *pThis, RmHalspecOwner *pRmhalspecowner) {
139     ChipHal *chipHal = &pRmhalspecowner->chipHal;
140     const unsigned long chipHal_HalVarIdx = (unsigned long)chipHal->__nvoc_HalVarIdx;
141     RmVariantHal *rmVariantHal = &pRmhalspecowner->rmVariantHal;
142     const unsigned long rmVariantHal_HalVarIdx = (unsigned long)rmVariantHal->__nvoc_HalVarIdx;
143     PORT_UNREFERENCED_VARIABLE(pThis);
144     PORT_UNREFERENCED_VARIABLE(pRmhalspecowner);
145     PORT_UNREFERENCED_VARIABLE(chipHal);
146     PORT_UNREFERENCED_VARIABLE(chipHal_HalVarIdx);
147     PORT_UNREFERENCED_VARIABLE(rmVariantHal);
148     PORT_UNREFERENCED_VARIABLE(rmVariantHal_HalVarIdx);
149 
150     // Hal field -- bDisableTiledCachingInvalidatesWithEccBug1521641
151     // default
152     {
153         pThis->bDisableTiledCachingInvalidatesWithEccBug1521641 = ((NvBool)(0 != 0));
154     }
155 
156     // Hal field -- bGpuCacheEnable
157     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x11f0ffe0UL) )) /* ChipHal: TU102 | TU104 | TU106 | TU116 | TU117 | GA100 | GA102 | GA103 | GA104 | GA106 | GA107 | AD102 | AD103 | AD104 | AD106 | AD107 | GH100 */
158     {
159         pThis->bGpuCacheEnable = ((NvBool)(0 == 0));
160     }
161 
162     // Hal field -- bNumaNodesAdded
163     pThis->bNumaNodesAdded = ((NvBool)(0 != 0));
164 
165     // Hal field -- bL2CleanFbPull
166     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x11f0ffe0UL) )) /* ChipHal: TU102 | TU104 | TU106 | TU116 | TU117 | GA100 | GA102 | GA103 | GA104 | GA106 | GA107 | AD102 | AD103 | AD104 | AD106 | AD107 | GH100 */
167     {
168         pThis->bL2CleanFbPull = ((NvBool)(0 == 0));
169     }
170 
171     // Hal field -- bPreserveComptagBackingStoreOnSuspend
172     pThis->bPreserveComptagBackingStoreOnSuspend = ((NvBool)(0 != 0));
173 
174     // Hal field -- bBug3656943WAR
175     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000000UL) )) /* ChipHal: GH100 */
176     {
177         pThis->bBug3656943WAR = ((NvBool)(0 == 0));
178     }
179     // default
180     else
181     {
182         pThis->bBug3656943WAR = ((NvBool)(0 != 0));
183     }
184 }
185 
186 NV_STATUS __nvoc_ctor_OBJENGSTATE(OBJENGSTATE* );
187 NV_STATUS __nvoc_ctor_KernelMemorySystem(KernelMemorySystem *pThis, RmHalspecOwner *pRmhalspecowner) {
188     NV_STATUS status = NV_OK;
189     status = __nvoc_ctor_OBJENGSTATE(&pThis->__nvoc_base_OBJENGSTATE);
190     if (status != NV_OK) goto __nvoc_ctor_KernelMemorySystem_fail_OBJENGSTATE;
191     __nvoc_init_dataField_KernelMemorySystem(pThis, pRmhalspecowner);
192     goto __nvoc_ctor_KernelMemorySystem_exit; // Success
193 
194 __nvoc_ctor_KernelMemorySystem_fail_OBJENGSTATE:
195 __nvoc_ctor_KernelMemorySystem_exit:
196 
197     return status;
198 }
199 
200 static void __nvoc_init_funcTable_KernelMemorySystem_1(KernelMemorySystem *pThis, RmHalspecOwner *pRmhalspecowner) {
201     ChipHal *chipHal = &pRmhalspecowner->chipHal;
202     const unsigned long chipHal_HalVarIdx = (unsigned long)chipHal->__nvoc_HalVarIdx;
203     RmVariantHal *rmVariantHal = &pRmhalspecowner->rmVariantHal;
204     const unsigned long rmVariantHal_HalVarIdx = (unsigned long)rmVariantHal->__nvoc_HalVarIdx;
205     PORT_UNREFERENCED_VARIABLE(pThis);
206     PORT_UNREFERENCED_VARIABLE(pRmhalspecowner);
207     PORT_UNREFERENCED_VARIABLE(chipHal);
208     PORT_UNREFERENCED_VARIABLE(chipHal_HalVarIdx);
209     PORT_UNREFERENCED_VARIABLE(rmVariantHal);
210     PORT_UNREFERENCED_VARIABLE(rmVariantHal_HalVarIdx);
211 
212     pThis->__kmemsysConstructEngine__ = &kmemsysConstructEngine_IMPL;
213 
214     pThis->__kmemsysStateInitLocked__ = &kmemsysStateInitLocked_IMPL;
215 
216     pThis->__kmemsysStatePreLoad__ = &kmemsysStatePreLoad_IMPL;
217 
218     pThis->__kmemsysStatePostLoad__ = &kmemsysStatePostLoad_IMPL;
219 
220     pThis->__kmemsysStateDestroy__ = &kmemsysStateDestroy_IMPL;
221 
222     // Hal function -- kmemsysGetFbNumaInfo
223     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x000003e0UL) )) /* ChipHal: TU102 | TU104 | TU106 | TU116 | TU117 */
224     {
225         pThis->__kmemsysGetFbNumaInfo__ = &kmemsysGetFbNumaInfo_56cd7a;
226     }
227     else
228     {
229         pThis->__kmemsysGetFbNumaInfo__ = &kmemsysGetFbNumaInfo_GV100;
230     }
231 
232     // Hal function -- kmemsysReadUsableFbSize
233     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x000007e0UL) )) /* ChipHal: TU102 | TU104 | TU106 | TU116 | TU117 | GA100 */
234     {
235         pThis->__kmemsysReadUsableFbSize__ = &kmemsysReadUsableFbSize_GP102;
236     }
237     else
238     {
239         pThis->__kmemsysReadUsableFbSize__ = &kmemsysReadUsableFbSize_GA102;
240     }
241 
242     // Hal function -- kmemsysCacheOp
243     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000000UL) )) /* ChipHal: GH100 */
244     {
245         pThis->__kmemsysCacheOp__ = &kmemsysCacheOp_GH100;
246     }
247     else
248     {
249         pThis->__kmemsysCacheOp__ = &kmemsysCacheOp_GM200;
250     }
251 
252     // Hal function -- kmemsysDoCacheOp
253     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000000UL) )) /* ChipHal: GH100 */
254     {
255         pThis->__kmemsysDoCacheOp__ = &kmemsysDoCacheOp_GH100;
256     }
257     else
258     {
259         pThis->__kmemsysDoCacheOp__ = &kmemsysDoCacheOp_GM107;
260     }
261 
262     // Hal function -- kmemsysReadL2SysmemInvalidateReg
263     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000000UL) )) /* ChipHal: GH100 */
264     {
265         pThis->__kmemsysReadL2SysmemInvalidateReg__ = &kmemsysReadL2SysmemInvalidateReg_68b109;
266     }
267     else
268     {
269         pThis->__kmemsysReadL2SysmemInvalidateReg__ = &kmemsysReadL2SysmemInvalidateReg_TU102;
270     }
271 
272     // Hal function -- kmemsysWriteL2SysmemInvalidateReg
273     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000000UL) )) /* ChipHal: GH100 */
274     {
275         pThis->__kmemsysWriteL2SysmemInvalidateReg__ = &kmemsysWriteL2SysmemInvalidateReg_f2d351;
276     }
277     else
278     {
279         pThis->__kmemsysWriteL2SysmemInvalidateReg__ = &kmemsysWriteL2SysmemInvalidateReg_TU102;
280     }
281 
282     // Hal function -- kmemsysReadL2PeermemInvalidateReg
283     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000000UL) )) /* ChipHal: GH100 */
284     {
285         pThis->__kmemsysReadL2PeermemInvalidateReg__ = &kmemsysReadL2PeermemInvalidateReg_68b109;
286     }
287     else
288     {
289         pThis->__kmemsysReadL2PeermemInvalidateReg__ = &kmemsysReadL2PeermemInvalidateReg_TU102;
290     }
291 
292     // Hal function -- kmemsysWriteL2PeermemInvalidateReg
293     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000000UL) )) /* ChipHal: GH100 */
294     {
295         pThis->__kmemsysWriteL2PeermemInvalidateReg__ = &kmemsysWriteL2PeermemInvalidateReg_f2d351;
296     }
297     else
298     {
299         pThis->__kmemsysWriteL2PeermemInvalidateReg__ = &kmemsysWriteL2PeermemInvalidateReg_TU102;
300     }
301 
302     // Hal function -- kmemsysInitFlushSysmemBuffer
303     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x000003e0UL) )) /* ChipHal: TU102 | TU104 | TU106 | TU116 | TU117 */
304     {
305         pThis->__kmemsysInitFlushSysmemBuffer__ = &kmemsysInitFlushSysmemBuffer_GM107;
306     }
307     else
308     {
309         pThis->__kmemsysInitFlushSysmemBuffer__ = &kmemsysInitFlushSysmemBuffer_GA100;
310     }
311 
312     // Hal function -- kmemsysProgramSysmemFlushBuffer
313     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000000UL) )) /* ChipHal: GH100 */
314     {
315         pThis->__kmemsysProgramSysmemFlushBuffer__ = &kmemsysProgramSysmemFlushBuffer_GH100;
316     }
317     else if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x000003e0UL) )) /* ChipHal: TU102 | TU104 | TU106 | TU116 | TU117 */
318     {
319         pThis->__kmemsysProgramSysmemFlushBuffer__ = &kmemsysProgramSysmemFlushBuffer_GM107;
320     }
321     else
322     {
323         pThis->__kmemsysProgramSysmemFlushBuffer__ = &kmemsysProgramSysmemFlushBuffer_GA100;
324     }
325 
326     // Hal function -- kmemsysIsPagePLCable
327     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x00000400UL) )) /* ChipHal: GA100 */
328     {
329         pThis->__kmemsysIsPagePLCable__ = &kmemsysIsPagePLCable_GA100;
330     }
331     else if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x0000f800UL) )) /* ChipHal: GA102 | GA103 | GA104 | GA106 | GA107 */
332     {
333         pThis->__kmemsysIsPagePLCable__ = &kmemsysIsPagePLCable_GA102;
334     }
335     // default
336     else
337     {
338         pThis->__kmemsysIsPagePLCable__ = &kmemsysIsPagePLCable_510167;
339     }
340 
341     // Hal function -- kmemsysReadMIGMemoryCfg
342     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x11f0fc00UL) )) /* ChipHal: GA100 | GA102 | GA103 | GA104 | GA106 | GA107 | AD102 | AD103 | AD104 | AD106 | AD107 | GH100 */
343     {
344         pThis->__kmemsysReadMIGMemoryCfg__ = &kmemsysReadMIGMemoryCfg_GA100;
345     }
346     // default
347     else
348     {
349         pThis->__kmemsysReadMIGMemoryCfg__ = &kmemsysReadMIGMemoryCfg_46f6a7;
350     }
351 
352     // Hal function -- kmemsysInitMIGMemoryPartitionTable
353     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x00000400UL) )) /* ChipHal: GA100 */
354     {
355         pThis->__kmemsysInitMIGMemoryPartitionTable__ = &kmemsysInitMIGMemoryPartitionTable_GA100;
356     }
357     // default
358     else
359     {
360         pThis->__kmemsysInitMIGMemoryPartitionTable__ = &kmemsysInitMIGMemoryPartitionTable_56cd7a;
361     }
362 
363     // Hal function -- kmemsysSwizzIdToVmmuSegmentsRange
364     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000000UL) )) /* ChipHal: GH100 */
365     {
366         pThis->__kmemsysSwizzIdToVmmuSegmentsRange__ = &kmemsysSwizzIdToVmmuSegmentsRange_GH100;
367     }
368     else
369     {
370         pThis->__kmemsysSwizzIdToVmmuSegmentsRange__ = &kmemsysSwizzIdToVmmuSegmentsRange_GA100;
371     }
372 
373     // Hal function -- kmemsysNumaAddMemory
374     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000000UL) )) /* ChipHal: GH100 */
375     {
376         pThis->__kmemsysNumaAddMemory__ = &kmemsysNumaAddMemory_GH100;
377     }
378     // default
379     else
380     {
381         pThis->__kmemsysNumaAddMemory__ = &kmemsysNumaAddMemory_56cd7a;
382     }
383 
384     // Hal function -- kmemsysNumaRemoveMemory
385     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000000UL) )) /* ChipHal: GH100 */
386     {
387         pThis->__kmemsysNumaRemoveMemory__ = &kmemsysNumaRemoveMemory_GH100;
388     }
389     // default
390     else
391     {
392         pThis->__kmemsysNumaRemoveMemory__ = &kmemsysNumaRemoveMemory_b3696a;
393     }
394 
395     // Hal function -- kmemsysNumaRemoveAllMemory
396     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000000UL) )) /* ChipHal: GH100 */
397     {
398         pThis->__kmemsysNumaRemoveAllMemory__ = &kmemsysNumaRemoveAllMemory_GH100;
399     }
400     // default
401     else
402     {
403         pThis->__kmemsysNumaRemoveAllMemory__ = &kmemsysNumaRemoveAllMemory_b3696a;
404     }
405 
406     // Hal function -- kmemsysSetupAllAtsPeers
407     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x000003e0UL) )) /* ChipHal: TU102 | TU104 | TU106 | TU116 | TU117 */
408     {
409         pThis->__kmemsysSetupAllAtsPeers__ = &kmemsysSetupAllAtsPeers_46f6a7;
410     }
411     else
412     {
413         pThis->__kmemsysSetupAllAtsPeers__ = &kmemsysSetupAllAtsPeers_GV100;
414     }
415 
416     pThis->__nvoc_base_OBJENGSTATE.__engstateConstructEngine__ = &__nvoc_thunk_KernelMemorySystem_engstateConstructEngine;
417 
418     pThis->__nvoc_base_OBJENGSTATE.__engstateStateInitLocked__ = &__nvoc_thunk_KernelMemorySystem_engstateStateInitLocked;
419 
420     pThis->__nvoc_base_OBJENGSTATE.__engstateStatePreLoad__ = &__nvoc_thunk_KernelMemorySystem_engstateStatePreLoad;
421 
422     pThis->__nvoc_base_OBJENGSTATE.__engstateStatePostLoad__ = &__nvoc_thunk_KernelMemorySystem_engstateStatePostLoad;
423 
424     pThis->__nvoc_base_OBJENGSTATE.__engstateStateDestroy__ = &__nvoc_thunk_KernelMemorySystem_engstateStateDestroy;
425 
426     pThis->__kmemsysStateLoad__ = &__nvoc_thunk_OBJENGSTATE_kmemsysStateLoad;
427 
428     pThis->__kmemsysStateUnload__ = &__nvoc_thunk_OBJENGSTATE_kmemsysStateUnload;
429 
430     pThis->__kmemsysStatePostUnload__ = &__nvoc_thunk_OBJENGSTATE_kmemsysStatePostUnload;
431 
432     pThis->__kmemsysStatePreUnload__ = &__nvoc_thunk_OBJENGSTATE_kmemsysStatePreUnload;
433 
434     pThis->__kmemsysStateInitUnlocked__ = &__nvoc_thunk_OBJENGSTATE_kmemsysStateInitUnlocked;
435 
436     pThis->__kmemsysInitMissing__ = &__nvoc_thunk_OBJENGSTATE_kmemsysInitMissing;
437 
438     pThis->__kmemsysStatePreInitLocked__ = &__nvoc_thunk_OBJENGSTATE_kmemsysStatePreInitLocked;
439 
440     pThis->__kmemsysStatePreInitUnlocked__ = &__nvoc_thunk_OBJENGSTATE_kmemsysStatePreInitUnlocked;
441 
442     pThis->__kmemsysIsPresent__ = &__nvoc_thunk_OBJENGSTATE_kmemsysIsPresent;
443 }
444 
445 void __nvoc_init_funcTable_KernelMemorySystem(KernelMemorySystem *pThis, RmHalspecOwner *pRmhalspecowner) {
446     __nvoc_init_funcTable_KernelMemorySystem_1(pThis, pRmhalspecowner);
447 }
448 
449 void __nvoc_init_OBJENGSTATE(OBJENGSTATE*);
450 void __nvoc_init_KernelMemorySystem(KernelMemorySystem *pThis, RmHalspecOwner *pRmhalspecowner) {
451     pThis->__nvoc_pbase_KernelMemorySystem = pThis;
452     pThis->__nvoc_pbase_Object = &pThis->__nvoc_base_OBJENGSTATE.__nvoc_base_Object;
453     pThis->__nvoc_pbase_OBJENGSTATE = &pThis->__nvoc_base_OBJENGSTATE;
454     __nvoc_init_OBJENGSTATE(&pThis->__nvoc_base_OBJENGSTATE);
455     __nvoc_init_funcTable_KernelMemorySystem(pThis, pRmhalspecowner);
456 }
457 
458 NV_STATUS __nvoc_objCreate_KernelMemorySystem(KernelMemorySystem **ppThis, Dynamic *pParent, NvU32 createFlags) {
459     NV_STATUS status;
460     Object *pParentObj;
461     KernelMemorySystem *pThis;
462     RmHalspecOwner *pRmhalspecowner;
463 
464     status = __nvoc_handleObjCreateMemAlloc(createFlags, sizeof(KernelMemorySystem), (void**)&pThis, (void**)ppThis);
465     if (status != NV_OK)
466         return status;
467 
468     portMemSet(pThis, 0, sizeof(KernelMemorySystem));
469 
470     __nvoc_initRtti(staticCast(pThis, Dynamic), &__nvoc_class_def_KernelMemorySystem);
471 
472     pThis->__nvoc_base_OBJENGSTATE.__nvoc_base_Object.createFlags = createFlags;
473 
474     if (pParent != NULL && !(createFlags & NVOC_OBJ_CREATE_FLAGS_PARENT_HALSPEC_ONLY))
475     {
476         pParentObj = dynamicCast(pParent, Object);
477         objAddChild(pParentObj, &pThis->__nvoc_base_OBJENGSTATE.__nvoc_base_Object);
478     }
479     else
480     {
481         pThis->__nvoc_base_OBJENGSTATE.__nvoc_base_Object.pParent = NULL;
482     }
483 
484     if ((pRmhalspecowner = dynamicCast(pParent, RmHalspecOwner)) == NULL)
485         pRmhalspecowner = objFindAncestorOfType(RmHalspecOwner, pParent);
486     NV_ASSERT_OR_RETURN(pRmhalspecowner != NULL, NV_ERR_INVALID_ARGUMENT);
487 
488     __nvoc_init_KernelMemorySystem(pThis, pRmhalspecowner);
489     status = __nvoc_ctor_KernelMemorySystem(pThis, pRmhalspecowner);
490     if (status != NV_OK) goto __nvoc_objCreate_KernelMemorySystem_cleanup;
491 
492     *ppThis = pThis;
493 
494     return NV_OK;
495 
496 __nvoc_objCreate_KernelMemorySystem_cleanup:
497     // do not call destructors here since the constructor already called them
498     if (createFlags & NVOC_OBJ_CREATE_FLAGS_IN_PLACE_CONSTRUCT)
499         portMemSet(pThis, 0, sizeof(KernelMemorySystem));
500     else
501         portMemFree(pThis);
502 
503     // coverity[leaked_storage:FALSE]
504     return status;
505 }
506 
507 NV_STATUS __nvoc_objCreateDynamic_KernelMemorySystem(KernelMemorySystem **ppThis, Dynamic *pParent, NvU32 createFlags, va_list args) {
508     NV_STATUS status;
509 
510     status = __nvoc_objCreate_KernelMemorySystem(ppThis, pParent, createFlags);
511 
512     return status;
513 }
514 
515