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