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