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 
__nvoc_thunk_KernelMemorySystem_engstateConstructEngine(OBJGPU * pGpu,struct OBJENGSTATE * pKernelMemorySystem,ENGDESCRIPTOR arg0)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 
__nvoc_thunk_KernelMemorySystem_engstateStateInitLocked(OBJGPU * pGpu,struct OBJENGSTATE * pKernelMemorySystem)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 
__nvoc_thunk_KernelMemorySystem_engstateStatePreLoad(OBJGPU * pGpu,struct OBJENGSTATE * pKernelMemorySystem,NvU32 flags)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 
__nvoc_thunk_KernelMemorySystem_engstateStatePostLoad(OBJGPU * pGpu,struct OBJENGSTATE * pKernelMemorySystem,NvU32 flags)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 
__nvoc_thunk_KernelMemorySystem_engstateStateLoad(OBJGPU * pGpu,struct OBJENGSTATE * pKernelMemorySystem,NvU32 flags)85 static NV_STATUS __nvoc_thunk_KernelMemorySystem_engstateStateLoad(OBJGPU *pGpu, struct OBJENGSTATE *pKernelMemorySystem, NvU32 flags) {
86     return kmemsysStateLoad(pGpu, (struct KernelMemorySystem *)(((unsigned char *)pKernelMemorySystem) - __nvoc_rtti_KernelMemorySystem_OBJENGSTATE.offset), flags);
87 }
88 
__nvoc_thunk_KernelMemorySystem_engstateStatePreUnload(OBJGPU * pGpu,struct OBJENGSTATE * pKernelMemorySystem,NvU32 flags)89 static NV_STATUS __nvoc_thunk_KernelMemorySystem_engstateStatePreUnload(OBJGPU *pGpu, struct OBJENGSTATE *pKernelMemorySystem, NvU32 flags) {
90     return kmemsysStatePreUnload(pGpu, (struct KernelMemorySystem *)(((unsigned char *)pKernelMemorySystem) - __nvoc_rtti_KernelMemorySystem_OBJENGSTATE.offset), flags);
91 }
92 
__nvoc_thunk_KernelMemorySystem_engstateStateUnload(OBJGPU * pGpu,struct OBJENGSTATE * pKernelMemorySystem,NvU32 flags)93 static NV_STATUS __nvoc_thunk_KernelMemorySystem_engstateStateUnload(OBJGPU *pGpu, struct OBJENGSTATE *pKernelMemorySystem, NvU32 flags) {
94     return kmemsysStateUnload(pGpu, (struct KernelMemorySystem *)(((unsigned char *)pKernelMemorySystem) - __nvoc_rtti_KernelMemorySystem_OBJENGSTATE.offset), flags);
95 }
96 
__nvoc_thunk_KernelMemorySystem_engstateStateDestroy(OBJGPU * pGpu,struct OBJENGSTATE * pKernelMemorySystem)97 static void __nvoc_thunk_KernelMemorySystem_engstateStateDestroy(OBJGPU *pGpu, struct OBJENGSTATE *pKernelMemorySystem) {
98     kmemsysStateDestroy(pGpu, (struct KernelMemorySystem *)(((unsigned char *)pKernelMemorySystem) - __nvoc_rtti_KernelMemorySystem_OBJENGSTATE.offset));
99 }
100 
__nvoc_thunk_OBJENGSTATE_kmemsysStatePostUnload(POBJGPU pGpu,struct KernelMemorySystem * pEngstate,NvU32 arg0)101 static NV_STATUS __nvoc_thunk_OBJENGSTATE_kmemsysStatePostUnload(POBJGPU pGpu, struct KernelMemorySystem *pEngstate, NvU32 arg0) {
102     return engstateStatePostUnload(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelMemorySystem_OBJENGSTATE.offset), arg0);
103 }
104 
__nvoc_thunk_OBJENGSTATE_kmemsysStateInitUnlocked(POBJGPU pGpu,struct KernelMemorySystem * pEngstate)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 
__nvoc_thunk_OBJENGSTATE_kmemsysInitMissing(POBJGPU pGpu,struct KernelMemorySystem * pEngstate)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 
__nvoc_thunk_OBJENGSTATE_kmemsysStatePreInitLocked(POBJGPU pGpu,struct KernelMemorySystem * pEngstate)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 
__nvoc_thunk_OBJENGSTATE_kmemsysStatePreInitUnlocked(POBJGPU pGpu,struct KernelMemorySystem * pEngstate)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 
__nvoc_thunk_OBJENGSTATE_kmemsysIsPresent(POBJGPU pGpu,struct KernelMemorySystem * pEngstate)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*);
__nvoc_dtor_KernelMemorySystem(KernelMemorySystem * pThis)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 
__nvoc_init_dataField_KernelMemorySystem(KernelMemorySystem * pThis,RmHalspecOwner * pRmhalspecowner)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 -- l2WriteMode
172     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 */
173     {
174         pThis->l2WriteMode = FB_CACHE_WRITE_MODE_WRITETHROUGH;
175     }
176 
177     // Hal field -- bPreserveComptagBackingStoreOnSuspend
178     pThis->bPreserveComptagBackingStoreOnSuspend = ((NvBool)(0 != 0));
179 
180     // Hal field -- bBug3656943WAR
181     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000000UL) )) /* ChipHal: GH100 */
182     {
183         pThis->bBug3656943WAR = ((NvBool)(0 == 0));
184     }
185     // default
186     else
187     {
188         pThis->bBug3656943WAR = ((NvBool)(0 != 0));
189     }
190 
191     // Hal field -- overrideToGMK
192     pThis->overrideToGMK = 0;
193 
194     // Hal field -- bDisablePlcForCertainOffsetsBug3046774
195     if (( ((rmVariantHal_HalVarIdx >> 5) == 0UL) && ((1UL << (rmVariantHal_HalVarIdx & 0x1f)) & 0x00000001UL) )) /* RmVariantHal: VF */
196     {
197         pThis->bDisablePlcForCertainOffsetsBug3046774 = ((NvBool)(0 != 0));
198     }
199     else if (( ((rmVariantHal_HalVarIdx >> 5) == 0UL) && ((1UL << (rmVariantHal_HalVarIdx & 0x1f)) & 0x00000002UL) )) /* RmVariantHal: PF_KERNEL_ONLY */
200     {
201         pThis->bDisablePlcForCertainOffsetsBug3046774 = ((NvBool)(0 != 0));
202     }
203 }
204 
205 NV_STATUS __nvoc_ctor_OBJENGSTATE(OBJENGSTATE* );
__nvoc_ctor_KernelMemorySystem(KernelMemorySystem * pThis,RmHalspecOwner * pRmhalspecowner)206 NV_STATUS __nvoc_ctor_KernelMemorySystem(KernelMemorySystem *pThis, RmHalspecOwner *pRmhalspecowner) {
207     NV_STATUS status = NV_OK;
208     status = __nvoc_ctor_OBJENGSTATE(&pThis->__nvoc_base_OBJENGSTATE);
209     if (status != NV_OK) goto __nvoc_ctor_KernelMemorySystem_fail_OBJENGSTATE;
210     __nvoc_init_dataField_KernelMemorySystem(pThis, pRmhalspecowner);
211     goto __nvoc_ctor_KernelMemorySystem_exit; // Success
212 
213 __nvoc_ctor_KernelMemorySystem_fail_OBJENGSTATE:
214 __nvoc_ctor_KernelMemorySystem_exit:
215 
216     return status;
217 }
218 
__nvoc_init_funcTable_KernelMemorySystem_1(KernelMemorySystem * pThis,RmHalspecOwner * pRmhalspecowner)219 static void __nvoc_init_funcTable_KernelMemorySystem_1(KernelMemorySystem *pThis, RmHalspecOwner *pRmhalspecowner) {
220     ChipHal *chipHal = &pRmhalspecowner->chipHal;
221     const unsigned long chipHal_HalVarIdx = (unsigned long)chipHal->__nvoc_HalVarIdx;
222     RmVariantHal *rmVariantHal = &pRmhalspecowner->rmVariantHal;
223     const unsigned long rmVariantHal_HalVarIdx = (unsigned long)rmVariantHal->__nvoc_HalVarIdx;
224     PORT_UNREFERENCED_VARIABLE(pThis);
225     PORT_UNREFERENCED_VARIABLE(pRmhalspecowner);
226     PORT_UNREFERENCED_VARIABLE(chipHal);
227     PORT_UNREFERENCED_VARIABLE(chipHal_HalVarIdx);
228     PORT_UNREFERENCED_VARIABLE(rmVariantHal);
229     PORT_UNREFERENCED_VARIABLE(rmVariantHal_HalVarIdx);
230 
231     pThis->__kmemsysConstructEngine__ = &kmemsysConstructEngine_IMPL;
232 
233     pThis->__kmemsysStateInitLocked__ = &kmemsysStateInitLocked_IMPL;
234 
235     pThis->__kmemsysStatePreLoad__ = &kmemsysStatePreLoad_IMPL;
236 
237     pThis->__kmemsysStatePostLoad__ = &kmemsysStatePostLoad_IMPL;
238 
239     // Hal function -- kmemsysStateLoad
240     if (( ((rmVariantHal_HalVarIdx >> 5) == 0UL) && ((1UL << (rmVariantHal_HalVarIdx & 0x1f)) & 0x00000001UL) )) /* RmVariantHal: VF */
241     {
242         pThis->__kmemsysStateLoad__ = &kmemsysStateLoad_VF;
243     }
244     // default
245     else
246     {
247         pThis->__kmemsysStateLoad__ = &kmemsysStateLoad_ac1694;
248     }
249 
250     pThis->__kmemsysStatePreUnload__ = &kmemsysStatePreUnload_IMPL;
251 
252     // Hal function -- kmemsysStateUnload
253     if (( ((rmVariantHal_HalVarIdx >> 5) == 0UL) && ((1UL << (rmVariantHal_HalVarIdx & 0x1f)) & 0x00000001UL) )) /* RmVariantHal: VF */
254     {
255         pThis->__kmemsysStateUnload__ = &kmemsysStateUnload_VF;
256     }
257     // default
258     else
259     {
260         pThis->__kmemsysStateUnload__ = &kmemsysStateUnload_ac1694;
261     }
262 
263     pThis->__kmemsysStateDestroy__ = &kmemsysStateDestroy_IMPL;
264 
265     // Hal function -- kmemsysGetFbNumaInfo
266     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x000003e0UL) )) /* ChipHal: TU102 | TU104 | TU106 | TU116 | TU117 */
267     {
268         pThis->__kmemsysGetFbNumaInfo__ = &kmemsysGetFbNumaInfo_56cd7a;
269     }
270     else
271     {
272         pThis->__kmemsysGetFbNumaInfo__ = &kmemsysGetFbNumaInfo_GV100;
273     }
274 
275     // Hal function -- kmemsysReadUsableFbSize
276     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x000007e0UL) )) /* ChipHal: TU102 | TU104 | TU106 | TU116 | TU117 | GA100 */
277     {
278         pThis->__kmemsysReadUsableFbSize__ = &kmemsysReadUsableFbSize_GP102;
279     }
280     else
281     {
282         pThis->__kmemsysReadUsableFbSize__ = &kmemsysReadUsableFbSize_GA102;
283     }
284 
285     // Hal function -- kmemsysGetUsableFbSize
286     if (( ((rmVariantHal_HalVarIdx >> 5) == 0UL) && ((1UL << (rmVariantHal_HalVarIdx & 0x1f)) & 0x00000001UL) )) /* RmVariantHal: VF */
287     {
288         pThis->__kmemsysGetUsableFbSize__ = &kmemsysGetUsableFbSize_5baef9;
289     }
290     else
291     {
292         pThis->__kmemsysGetUsableFbSize__ = &kmemsysGetUsableFbSize_KERNEL;
293     }
294 
295     // Hal function -- kmemsysCacheOp
296     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000000UL) )) /* ChipHal: GH100 */
297     {
298         pThis->__kmemsysCacheOp__ = &kmemsysCacheOp_GH100;
299     }
300     else
301     {
302         pThis->__kmemsysCacheOp__ = &kmemsysCacheOp_GM200;
303     }
304 
305     // Hal function -- kmemsysDoCacheOp
306     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000000UL) )) /* ChipHal: GH100 */
307     {
308         pThis->__kmemsysDoCacheOp__ = &kmemsysDoCacheOp_GH100;
309     }
310     else
311     {
312         pThis->__kmemsysDoCacheOp__ = &kmemsysDoCacheOp_GM107;
313     }
314 
315     // Hal function -- kmemsysReadL2SysmemInvalidateReg
316     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000000UL) )) /* ChipHal: GH100 */
317     {
318         pThis->__kmemsysReadL2SysmemInvalidateReg__ = &kmemsysReadL2SysmemInvalidateReg_68b109;
319     }
320     else
321     {
322         pThis->__kmemsysReadL2SysmemInvalidateReg__ = &kmemsysReadL2SysmemInvalidateReg_TU102;
323     }
324 
325     // Hal function -- kmemsysWriteL2SysmemInvalidateReg
326     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000000UL) )) /* ChipHal: GH100 */
327     {
328         pThis->__kmemsysWriteL2SysmemInvalidateReg__ = &kmemsysWriteL2SysmemInvalidateReg_f2d351;
329     }
330     else
331     {
332         pThis->__kmemsysWriteL2SysmemInvalidateReg__ = &kmemsysWriteL2SysmemInvalidateReg_TU102;
333     }
334 
335     // Hal function -- kmemsysReadL2PeermemInvalidateReg
336     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000000UL) )) /* ChipHal: GH100 */
337     {
338         pThis->__kmemsysReadL2PeermemInvalidateReg__ = &kmemsysReadL2PeermemInvalidateReg_68b109;
339     }
340     else
341     {
342         pThis->__kmemsysReadL2PeermemInvalidateReg__ = &kmemsysReadL2PeermemInvalidateReg_TU102;
343     }
344 
345     // Hal function -- kmemsysWriteL2PeermemInvalidateReg
346     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000000UL) )) /* ChipHal: GH100 */
347     {
348         pThis->__kmemsysWriteL2PeermemInvalidateReg__ = &kmemsysWriteL2PeermemInvalidateReg_f2d351;
349     }
350     else
351     {
352         pThis->__kmemsysWriteL2PeermemInvalidateReg__ = &kmemsysWriteL2PeermemInvalidateReg_TU102;
353     }
354 
355     // Hal function -- kmemsysInitFlushSysmemBuffer
356     if (( ((rmVariantHal_HalVarIdx >> 5) == 0UL) && ((1UL << (rmVariantHal_HalVarIdx & 0x1f)) & 0x00000001UL) )) /* RmVariantHal: VF */
357     {
358         pThis->__kmemsysInitFlushSysmemBuffer__ = &kmemsysInitFlushSysmemBuffer_56cd7a;
359     }
360     else
361     {
362         if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x000003e0UL) )) /* ChipHal: TU102 | TU104 | TU106 | TU116 | TU117 */
363         {
364             pThis->__kmemsysInitFlushSysmemBuffer__ = &kmemsysInitFlushSysmemBuffer_GM107;
365         }
366         else
367         {
368             pThis->__kmemsysInitFlushSysmemBuffer__ = &kmemsysInitFlushSysmemBuffer_GA100;
369         }
370     }
371 
372     // Hal function -- kmemsysProgramSysmemFlushBuffer
373     if (( ((rmVariantHal_HalVarIdx >> 5) == 0UL) && ((1UL << (rmVariantHal_HalVarIdx & 0x1f)) & 0x00000001UL) )) /* RmVariantHal: VF */
374     {
375         pThis->__kmemsysProgramSysmemFlushBuffer__ = &kmemsysProgramSysmemFlushBuffer_b3696a;
376     }
377     else
378     {
379         if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000000UL) )) /* ChipHal: GH100 */
380         {
381             pThis->__kmemsysProgramSysmemFlushBuffer__ = &kmemsysProgramSysmemFlushBuffer_GH100;
382         }
383         else if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x000003e0UL) )) /* ChipHal: TU102 | TU104 | TU106 | TU116 | TU117 */
384         {
385             pThis->__kmemsysProgramSysmemFlushBuffer__ = &kmemsysProgramSysmemFlushBuffer_GM107;
386         }
387         else
388         {
389             pThis->__kmemsysProgramSysmemFlushBuffer__ = &kmemsysProgramSysmemFlushBuffer_GA100;
390         }
391     }
392 
393     // Hal function -- kmemsysGetFlushSysmemBufferAddrShift
394     if (( ((rmVariantHal_HalVarIdx >> 5) == 0UL) && ((1UL << (rmVariantHal_HalVarIdx & 0x1f)) & 0x00000001UL) )) /* RmVariantHal: VF */
395     {
396         pThis->__kmemsysGetFlushSysmemBufferAddrShift__ = &kmemsysGetFlushSysmemBufferAddrShift_4a4dee;
397     }
398     else
399     {
400         pThis->__kmemsysGetFlushSysmemBufferAddrShift__ = &kmemsysGetFlushSysmemBufferAddrShift_GM107;
401     }
402 
403     // Hal function -- kmemsysIsPagePLCable
404     if (( ((rmVariantHal_HalVarIdx >> 5) == 0UL) && ((1UL << (rmVariantHal_HalVarIdx & 0x1f)) & 0x00000001UL) )) /* RmVariantHal: VF */
405     {
406         pThis->__kmemsysIsPagePLCable__ = &kmemsysIsPagePLCable_cbe027;
407     }
408     else
409     {
410         if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x00000400UL) )) /* ChipHal: GA100 */
411         {
412             pThis->__kmemsysIsPagePLCable__ = &kmemsysIsPagePLCable_GA100;
413         }
414         else if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x0000f800UL) )) /* ChipHal: GA102 | GA103 | GA104 | GA106 | GA107 */
415         {
416             pThis->__kmemsysIsPagePLCable__ = &kmemsysIsPagePLCable_GA102;
417         }
418         // default
419         else
420         {
421             pThis->__kmemsysIsPagePLCable__ = &kmemsysIsPagePLCable_510167;
422         }
423     }
424 
425     // Hal function -- kmemsysReadMIGMemoryCfg
426     if (( ((rmVariantHal_HalVarIdx >> 5) == 0UL) && ((1UL << (rmVariantHal_HalVarIdx & 0x1f)) & 0x00000001UL) )) /* RmVariantHal: VF */
427     {
428         pThis->__kmemsysReadMIGMemoryCfg__ = &kmemsysReadMIGMemoryCfg_46f6a7;
429     }
430     else
431     {
432         if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x11f0fc00UL) )) /* ChipHal: GA100 | GA102 | GA103 | GA104 | GA106 | GA107 | AD102 | AD103 | AD104 | AD106 | AD107 | GH100 */
433         {
434             pThis->__kmemsysReadMIGMemoryCfg__ = &kmemsysReadMIGMemoryCfg_GA100;
435         }
436         // default
437         else
438         {
439             pThis->__kmemsysReadMIGMemoryCfg__ = &kmemsysReadMIGMemoryCfg_46f6a7;
440         }
441     }
442 
443     // Hal function -- kmemsysInitMIGMemoryPartitionTable
444     if (( ((rmVariantHal_HalVarIdx >> 5) == 0UL) && ((1UL << (rmVariantHal_HalVarIdx & 0x1f)) & 0x00000001UL) )) /* RmVariantHal: VF */
445     {
446         pThis->__kmemsysInitMIGMemoryPartitionTable__ = &kmemsysInitMIGMemoryPartitionTable_56cd7a;
447     }
448     else
449     {
450         if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x00000400UL) )) /* ChipHal: GA100 */
451         {
452             pThis->__kmemsysInitMIGMemoryPartitionTable__ = &kmemsysInitMIGMemoryPartitionTable_GA100;
453         }
454         // default
455         else
456         {
457             pThis->__kmemsysInitMIGMemoryPartitionTable__ = &kmemsysInitMIGMemoryPartitionTable_56cd7a;
458         }
459     }
460 
461     // Hal function -- kmemsysSwizzIdToVmmuSegmentsRange
462     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000000UL) )) /* ChipHal: GH100 */
463     {
464         pThis->__kmemsysSwizzIdToVmmuSegmentsRange__ = &kmemsysSwizzIdToVmmuSegmentsRange_GH100;
465     }
466     else
467     {
468         pThis->__kmemsysSwizzIdToVmmuSegmentsRange__ = &kmemsysSwizzIdToVmmuSegmentsRange_GA100;
469     }
470 
471     // Hal function -- kmemsysNumaAddMemory
472     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000000UL) )) /* ChipHal: GH100 */
473     {
474         pThis->__kmemsysNumaAddMemory__ = &kmemsysNumaAddMemory_GH100;
475     }
476     // default
477     else
478     {
479         pThis->__kmemsysNumaAddMemory__ = &kmemsysNumaAddMemory_56cd7a;
480     }
481 
482     // Hal function -- kmemsysNumaRemoveMemory
483     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000000UL) )) /* ChipHal: GH100 */
484     {
485         pThis->__kmemsysNumaRemoveMemory__ = &kmemsysNumaRemoveMemory_GH100;
486     }
487     // default
488     else
489     {
490         pThis->__kmemsysNumaRemoveMemory__ = &kmemsysNumaRemoveMemory_b3696a;
491     }
492 
493     // Hal function -- kmemsysNumaRemoveAllMemory
494     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000000UL) )) /* ChipHal: GH100 */
495     {
496         pThis->__kmemsysNumaRemoveAllMemory__ = &kmemsysNumaRemoveAllMemory_GH100;
497     }
498     // default
499     else
500     {
501         pThis->__kmemsysNumaRemoveAllMemory__ = &kmemsysNumaRemoveAllMemory_b3696a;
502     }
503 
504     // Hal function -- kmemsysPopulateMIGGPUInstanceMemConfig
505     if (( ((rmVariantHal_HalVarIdx >> 5) == 0UL) && ((1UL << (rmVariantHal_HalVarIdx & 0x1f)) & 0x00000001UL) )) /* RmVariantHal: VF */
506     {
507         pThis->__kmemsysPopulateMIGGPUInstanceMemConfig__ = &kmemsysPopulateMIGGPUInstanceMemConfig_56cd7a;
508     }
509     else
510     {
511         // default
512         pThis->__kmemsysPopulateMIGGPUInstanceMemConfig__ = &kmemsysPopulateMIGGPUInstanceMemConfig_KERNEL;
513     }
514 
515     // Hal function -- kmemsysSetupAllAtsPeers
516     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x000003e0UL) )) /* ChipHal: TU102 | TU104 | TU106 | TU116 | TU117 */
517     {
518         pThis->__kmemsysSetupAllAtsPeers__ = &kmemsysSetupAllAtsPeers_46f6a7;
519     }
520     else
521     {
522         pThis->__kmemsysSetupAllAtsPeers__ = &kmemsysSetupAllAtsPeers_GV100;
523     }
524 
525     // Hal function -- kmemsysRemoveAllAtsPeers
526     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x000003e0UL) )) /* ChipHal: TU102 | TU104 | TU106 | TU116 | TU117 */
527     {
528         pThis->__kmemsysRemoveAllAtsPeers__ = &kmemsysRemoveAllAtsPeers_b3696a;
529     }
530     else
531     {
532         pThis->__kmemsysRemoveAllAtsPeers__ = &kmemsysRemoveAllAtsPeers_GV100;
533     }
534 
535     // Hal function -- kmemsysAssertFbAckTimeoutPending
536     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000000UL) )) /* ChipHal: GH100 */
537     {
538         pThis->__kmemsysAssertFbAckTimeoutPending__ = &kmemsysAssertFbAckTimeoutPending_GH100;
539     }
540     // default
541     else
542     {
543         pThis->__kmemsysAssertFbAckTimeoutPending__ = &kmemsysAssertFbAckTimeoutPending_491d52;
544     }
545 
546     // Hal function -- kmemsysGetMaxFbpas
547     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000400UL) )) /* ChipHal: GA100 | GH100 */
548     {
549         pThis->__kmemsysGetMaxFbpas__ = &kmemsysGetMaxFbpas_GA100;
550     }
551     else if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x000003e0UL) )) /* ChipHal: TU102 | TU104 | TU106 | TU116 | TU117 */
552     {
553         pThis->__kmemsysGetMaxFbpas__ = &kmemsysGetMaxFbpas_TU102;
554     }
555     // default
556     else
557     {
558         pThis->__kmemsysGetMaxFbpas__ = &kmemsysGetMaxFbpas_4a4dee;
559     }
560 
561     // Hal function -- kmemsysGetEccDedCountSize
562     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000000UL) )) /* ChipHal: GH100 */
563     {
564         pThis->__kmemsysGetEccDedCountSize__ = &kmemsysGetEccDedCountSize_GH100;
565     }
566     else
567     {
568         pThis->__kmemsysGetEccDedCountSize__ = &kmemsysGetEccDedCountSize_TU102;
569     }
570 
571     // Hal function -- kmemsysGetEccDedCountRegAddr
572     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000000UL) )) /* ChipHal: GH100 */
573     {
574         pThis->__kmemsysGetEccDedCountRegAddr__ = &kmemsysGetEccDedCountRegAddr_GH100;
575     }
576     else
577     {
578         pThis->__kmemsysGetEccDedCountRegAddr__ = &kmemsysGetEccDedCountRegAddr_TU102;
579     }
580 
581     // Hal function -- kmemsysGetMaximumBlacklistPages
582     if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x000003e0UL) )) /* ChipHal: TU102 | TU104 | TU106 | TU116 | TU117 */
583     {
584         pThis->__kmemsysGetMaximumBlacklistPages__ = &kmemsysGetMaximumBlacklistPages_GM107;
585     }
586     else
587     {
588         pThis->__kmemsysGetMaximumBlacklistPages__ = &kmemsysGetMaximumBlacklistPages_GA100;
589     }
590 
591     // Hal function -- kmemsysGetFbInfos
592     if (( ((rmVariantHal_HalVarIdx >> 5) == 0UL) && ((1UL << (rmVariantHal_HalVarIdx & 0x1f)) & 0x00000001UL) )) /* RmVariantHal: VF */
593     {
594         pThis->__kmemsysGetFbInfos__ = &kmemsysGetFbInfos_VF;
595     }
596     else
597     {
598         pThis->__kmemsysGetFbInfos__ = &kmemsysGetFbInfos_ac1694;
599     }
600 
601     pThis->__nvoc_base_OBJENGSTATE.__engstateConstructEngine__ = &__nvoc_thunk_KernelMemorySystem_engstateConstructEngine;
602 
603     pThis->__nvoc_base_OBJENGSTATE.__engstateStateInitLocked__ = &__nvoc_thunk_KernelMemorySystem_engstateStateInitLocked;
604 
605     pThis->__nvoc_base_OBJENGSTATE.__engstateStatePreLoad__ = &__nvoc_thunk_KernelMemorySystem_engstateStatePreLoad;
606 
607     pThis->__nvoc_base_OBJENGSTATE.__engstateStatePostLoad__ = &__nvoc_thunk_KernelMemorySystem_engstateStatePostLoad;
608 
609     pThis->__nvoc_base_OBJENGSTATE.__engstateStateLoad__ = &__nvoc_thunk_KernelMemorySystem_engstateStateLoad;
610 
611     pThis->__nvoc_base_OBJENGSTATE.__engstateStatePreUnload__ = &__nvoc_thunk_KernelMemorySystem_engstateStatePreUnload;
612 
613     pThis->__nvoc_base_OBJENGSTATE.__engstateStateUnload__ = &__nvoc_thunk_KernelMemorySystem_engstateStateUnload;
614 
615     pThis->__nvoc_base_OBJENGSTATE.__engstateStateDestroy__ = &__nvoc_thunk_KernelMemorySystem_engstateStateDestroy;
616 
617     pThis->__kmemsysStatePostUnload__ = &__nvoc_thunk_OBJENGSTATE_kmemsysStatePostUnload;
618 
619     pThis->__kmemsysStateInitUnlocked__ = &__nvoc_thunk_OBJENGSTATE_kmemsysStateInitUnlocked;
620 
621     pThis->__kmemsysInitMissing__ = &__nvoc_thunk_OBJENGSTATE_kmemsysInitMissing;
622 
623     pThis->__kmemsysStatePreInitLocked__ = &__nvoc_thunk_OBJENGSTATE_kmemsysStatePreInitLocked;
624 
625     pThis->__kmemsysStatePreInitUnlocked__ = &__nvoc_thunk_OBJENGSTATE_kmemsysStatePreInitUnlocked;
626 
627     pThis->__kmemsysIsPresent__ = &__nvoc_thunk_OBJENGSTATE_kmemsysIsPresent;
628 }
629 
__nvoc_init_funcTable_KernelMemorySystem(KernelMemorySystem * pThis,RmHalspecOwner * pRmhalspecowner)630 void __nvoc_init_funcTable_KernelMemorySystem(KernelMemorySystem *pThis, RmHalspecOwner *pRmhalspecowner) {
631     __nvoc_init_funcTable_KernelMemorySystem_1(pThis, pRmhalspecowner);
632 }
633 
634 void __nvoc_init_OBJENGSTATE(OBJENGSTATE*);
__nvoc_init_KernelMemorySystem(KernelMemorySystem * pThis,RmHalspecOwner * pRmhalspecowner)635 void __nvoc_init_KernelMemorySystem(KernelMemorySystem *pThis, RmHalspecOwner *pRmhalspecowner) {
636     pThis->__nvoc_pbase_KernelMemorySystem = pThis;
637     pThis->__nvoc_pbase_Object = &pThis->__nvoc_base_OBJENGSTATE.__nvoc_base_Object;
638     pThis->__nvoc_pbase_OBJENGSTATE = &pThis->__nvoc_base_OBJENGSTATE;
639     __nvoc_init_OBJENGSTATE(&pThis->__nvoc_base_OBJENGSTATE);
640     __nvoc_init_funcTable_KernelMemorySystem(pThis, pRmhalspecowner);
641 }
642 
__nvoc_objCreate_KernelMemorySystem(KernelMemorySystem ** ppThis,Dynamic * pParent,NvU32 createFlags)643 NV_STATUS __nvoc_objCreate_KernelMemorySystem(KernelMemorySystem **ppThis, Dynamic *pParent, NvU32 createFlags)
644 {
645     NV_STATUS status;
646     Object *pParentObj = NULL;
647     KernelMemorySystem *pThis;
648     RmHalspecOwner *pRmhalspecowner;
649 
650     // Assign `pThis`, allocating memory unless suppressed by flag.
651     status = __nvoc_handleObjCreateMemAlloc(createFlags, sizeof(KernelMemorySystem), (void**)&pThis, (void**)ppThis);
652     if (status != NV_OK)
653         return status;
654 
655     // Zero is the initial value for everything.
656     portMemSet(pThis, 0, sizeof(KernelMemorySystem));
657 
658     // Initialize runtime type information.
659     __nvoc_initRtti(staticCast(pThis, Dynamic), &__nvoc_class_def_KernelMemorySystem);
660 
661     pThis->__nvoc_base_OBJENGSTATE.__nvoc_base_Object.createFlags = createFlags;
662 
663     // pParent must be a valid object that derives from a halspec owner class.
664     NV_ASSERT_OR_RETURN(pParent != NULL, NV_ERR_INVALID_ARGUMENT);
665 
666     // Link the child into the parent unless flagged not to do so.
667     if (!(createFlags & NVOC_OBJ_CREATE_FLAGS_PARENT_HALSPEC_ONLY))
668     {
669         pParentObj = dynamicCast(pParent, Object);
670         objAddChild(pParentObj, &pThis->__nvoc_base_OBJENGSTATE.__nvoc_base_Object);
671     }
672     else
673     {
674         pThis->__nvoc_base_OBJENGSTATE.__nvoc_base_Object.pParent = NULL;
675     }
676 
677     if ((pRmhalspecowner = dynamicCast(pParent, RmHalspecOwner)) == NULL)
678         pRmhalspecowner = objFindAncestorOfType(RmHalspecOwner, pParent);
679     NV_ASSERT_OR_RETURN(pRmhalspecowner != NULL, NV_ERR_INVALID_ARGUMENT);
680 
681     __nvoc_init_KernelMemorySystem(pThis, pRmhalspecowner);
682     status = __nvoc_ctor_KernelMemorySystem(pThis, pRmhalspecowner);
683     if (status != NV_OK) goto __nvoc_objCreate_KernelMemorySystem_cleanup;
684 
685     // Assignment has no effect if NVOC_OBJ_CREATE_FLAGS_IN_PLACE_CONSTRUCT is set.
686     *ppThis = pThis;
687 
688     return NV_OK;
689 
690 __nvoc_objCreate_KernelMemorySystem_cleanup:
691 
692     // Unlink the child from the parent if it was linked above.
693     if (pParentObj != NULL)
694         objRemoveChild(pParentObj, &pThis->__nvoc_base_OBJENGSTATE.__nvoc_base_Object);
695 
696     // Do not call destructors here since the constructor already called them.
697     if (createFlags & NVOC_OBJ_CREATE_FLAGS_IN_PLACE_CONSTRUCT)
698         portMemSet(pThis, 0, sizeof(KernelMemorySystem));
699     else
700     {
701         portMemFree(pThis);
702         *ppThis = NULL;
703     }
704 
705     // coverity[leaked_storage:FALSE]
706     return status;
707 }
708 
__nvoc_objCreateDynamic_KernelMemorySystem(KernelMemorySystem ** ppThis,Dynamic * pParent,NvU32 createFlags,va_list args)709 NV_STATUS __nvoc_objCreateDynamic_KernelMemorySystem(KernelMemorySystem **ppThis, Dynamic *pParent, NvU32 createFlags, va_list args) {
710     NV_STATUS status;
711 
712     status = __nvoc_objCreate_KernelMemorySystem(ppThis, pParent, createFlags);
713 
714     return status;
715 }
716 
717