1 #define NVOC_KERNEL_GRAPHICS_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_kernel_graphics_nvoc.h" 9 10 #ifdef DEBUG 11 char __nvoc_class_id_uniqueness_check_0xea3fa9 = 1; 12 #endif 13 14 extern const struct NVOC_CLASS_DEF __nvoc_class_def_KernelGraphics; 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 extern const struct NVOC_CLASS_DEF __nvoc_class_def_IntrService; 21 22 void __nvoc_init_KernelGraphics(KernelGraphics*, RmHalspecOwner* ); 23 void __nvoc_init_funcTable_KernelGraphics(KernelGraphics*, RmHalspecOwner* ); 24 NV_STATUS __nvoc_ctor_KernelGraphics(KernelGraphics*, RmHalspecOwner* ); 25 void __nvoc_init_dataField_KernelGraphics(KernelGraphics*, RmHalspecOwner* ); 26 void __nvoc_dtor_KernelGraphics(KernelGraphics*); 27 extern const struct NVOC_EXPORT_INFO __nvoc_export_info_KernelGraphics; 28 29 static const struct NVOC_RTTI __nvoc_rtti_KernelGraphics_KernelGraphics = { 30 /*pClassDef=*/ &__nvoc_class_def_KernelGraphics, 31 /*dtor=*/ (NVOC_DYNAMIC_DTOR) &__nvoc_dtor_KernelGraphics, 32 /*offset=*/ 0, 33 }; 34 35 static const struct NVOC_RTTI __nvoc_rtti_KernelGraphics_Object = { 36 /*pClassDef=*/ &__nvoc_class_def_Object, 37 /*dtor=*/ &__nvoc_destructFromBase, 38 /*offset=*/ NV_OFFSETOF(KernelGraphics, __nvoc_base_OBJENGSTATE.__nvoc_base_Object), 39 }; 40 41 static const struct NVOC_RTTI __nvoc_rtti_KernelGraphics_OBJENGSTATE = { 42 /*pClassDef=*/ &__nvoc_class_def_OBJENGSTATE, 43 /*dtor=*/ &__nvoc_destructFromBase, 44 /*offset=*/ NV_OFFSETOF(KernelGraphics, __nvoc_base_OBJENGSTATE), 45 }; 46 47 static const struct NVOC_RTTI __nvoc_rtti_KernelGraphics_IntrService = { 48 /*pClassDef=*/ &__nvoc_class_def_IntrService, 49 /*dtor=*/ &__nvoc_destructFromBase, 50 /*offset=*/ NV_OFFSETOF(KernelGraphics, __nvoc_base_IntrService), 51 }; 52 53 static const struct NVOC_CASTINFO __nvoc_castinfo_KernelGraphics = { 54 /*numRelatives=*/ 4, 55 /*relatives=*/ { 56 &__nvoc_rtti_KernelGraphics_KernelGraphics, 57 &__nvoc_rtti_KernelGraphics_IntrService, 58 &__nvoc_rtti_KernelGraphics_OBJENGSTATE, 59 &__nvoc_rtti_KernelGraphics_Object, 60 }, 61 }; 62 63 const struct NVOC_CLASS_DEF __nvoc_class_def_KernelGraphics = 64 { 65 /*classInfo=*/ { 66 /*size=*/ sizeof(KernelGraphics), 67 /*classId=*/ classId(KernelGraphics), 68 /*providerId=*/ &__nvoc_rtti_provider, 69 #if NV_PRINTF_STRINGS_ALLOWED 70 /*name=*/ "KernelGraphics", 71 #endif 72 }, 73 /*objCreatefn=*/ (NVOC_DYNAMIC_OBJ_CREATE) &__nvoc_objCreateDynamic_KernelGraphics, 74 /*pCastInfo=*/ &__nvoc_castinfo_KernelGraphics, 75 /*pExportInfo=*/ &__nvoc_export_info_KernelGraphics 76 }; 77 78 static NV_STATUS __nvoc_thunk_KernelGraphics_engstateConstructEngine(OBJGPU *arg0, struct OBJENGSTATE *arg1, ENGDESCRIPTOR arg2) { 79 return kgraphicsConstructEngine(arg0, (struct KernelGraphics *)(((unsigned char *)arg1) - __nvoc_rtti_KernelGraphics_OBJENGSTATE.offset), arg2); 80 } 81 82 static NV_STATUS __nvoc_thunk_KernelGraphics_engstateStateInitLocked(OBJGPU *arg0, struct OBJENGSTATE *arg1) { 83 return kgraphicsStateInitLocked(arg0, (struct KernelGraphics *)(((unsigned char *)arg1) - __nvoc_rtti_KernelGraphics_OBJENGSTATE.offset)); 84 } 85 86 static NV_STATUS __nvoc_thunk_KernelGraphics_engstateStateLoad(OBJGPU *arg0, struct OBJENGSTATE *arg1, NvU32 flags) { 87 return kgraphicsStateLoad(arg0, (struct KernelGraphics *)(((unsigned char *)arg1) - __nvoc_rtti_KernelGraphics_OBJENGSTATE.offset), flags); 88 } 89 90 static NV_STATUS __nvoc_thunk_KernelGraphics_engstateStatePreUnload(OBJGPU *pGpu, struct OBJENGSTATE *arg0, NvU32 flags) { 91 return kgraphicsStatePreUnload(pGpu, (struct KernelGraphics *)(((unsigned char *)arg0) - __nvoc_rtti_KernelGraphics_OBJENGSTATE.offset), flags); 92 } 93 94 static NV_STATUS __nvoc_thunk_KernelGraphics_engstateStateUnload(OBJGPU *arg0, struct OBJENGSTATE *arg1, NvU32 flags) { 95 return kgraphicsStateUnload(arg0, (struct KernelGraphics *)(((unsigned char *)arg1) - __nvoc_rtti_KernelGraphics_OBJENGSTATE.offset), flags); 96 } 97 98 static void __nvoc_thunk_KernelGraphics_engstateStateDestroy(OBJGPU *arg0, struct OBJENGSTATE *arg1) { 99 kgraphicsStateDestroy(arg0, (struct KernelGraphics *)(((unsigned char *)arg1) - __nvoc_rtti_KernelGraphics_OBJENGSTATE.offset)); 100 } 101 102 static NvBool __nvoc_thunk_KernelGraphics_engstateIsPresent(OBJGPU *arg0, struct OBJENGSTATE *arg1) { 103 return kgraphicsIsPresent(arg0, (struct KernelGraphics *)(((unsigned char *)arg1) - __nvoc_rtti_KernelGraphics_OBJENGSTATE.offset)); 104 } 105 106 static NV_STATUS __nvoc_thunk_KernelGraphics_engstateStatePostLoad(OBJGPU *arg0, struct OBJENGSTATE *arg1, NvU32 flags) { 107 return kgraphicsStatePostLoad(arg0, (struct KernelGraphics *)(((unsigned char *)arg1) - __nvoc_rtti_KernelGraphics_OBJENGSTATE.offset), flags); 108 } 109 110 static void __nvoc_thunk_KernelGraphics_intrservRegisterIntrService(OBJGPU *arg0, struct IntrService *arg1, IntrServiceRecord arg2[168]) { 111 kgraphicsRegisterIntrService(arg0, (struct KernelGraphics *)(((unsigned char *)arg1) - __nvoc_rtti_KernelGraphics_IntrService.offset), arg2); 112 } 113 114 static NV_STATUS __nvoc_thunk_KernelGraphics_intrservServiceNotificationInterrupt(OBJGPU *arg0, struct IntrService *arg1, IntrServiceServiceNotificationInterruptArguments *arg2) { 115 return kgraphicsServiceNotificationInterrupt(arg0, (struct KernelGraphics *)(((unsigned char *)arg1) - __nvoc_rtti_KernelGraphics_IntrService.offset), arg2); 116 } 117 118 static NvBool __nvoc_thunk_KernelGraphics_intrservClearInterrupt(OBJGPU *arg0, struct IntrService *arg1, IntrServiceClearInterruptArguments *arg2) { 119 return kgraphicsClearInterrupt(arg0, (struct KernelGraphics *)(((unsigned char *)arg1) - __nvoc_rtti_KernelGraphics_IntrService.offset), arg2); 120 } 121 122 static NvU32 __nvoc_thunk_KernelGraphics_intrservServiceInterrupt(OBJGPU *arg0, struct IntrService *arg1, IntrServiceServiceInterruptArguments *arg2) { 123 return kgraphicsServiceInterrupt(arg0, (struct KernelGraphics *)(((unsigned char *)arg1) - __nvoc_rtti_KernelGraphics_IntrService.offset), arg2); 124 } 125 126 static NV_STATUS __nvoc_thunk_OBJENGSTATE_kgraphicsStatePreLoad(POBJGPU pGpu, struct KernelGraphics *pEngstate, NvU32 arg0) { 127 return engstateStatePreLoad(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelGraphics_OBJENGSTATE.offset), arg0); 128 } 129 130 static NV_STATUS __nvoc_thunk_OBJENGSTATE_kgraphicsStatePostUnload(POBJGPU pGpu, struct KernelGraphics *pEngstate, NvU32 arg0) { 131 return engstateStatePostUnload(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelGraphics_OBJENGSTATE.offset), arg0); 132 } 133 134 static NV_STATUS __nvoc_thunk_OBJENGSTATE_kgraphicsStateInitUnlocked(POBJGPU pGpu, struct KernelGraphics *pEngstate) { 135 return engstateStateInitUnlocked(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelGraphics_OBJENGSTATE.offset)); 136 } 137 138 static void __nvoc_thunk_OBJENGSTATE_kgraphicsInitMissing(POBJGPU pGpu, struct KernelGraphics *pEngstate) { 139 engstateInitMissing(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelGraphics_OBJENGSTATE.offset)); 140 } 141 142 static NV_STATUS __nvoc_thunk_OBJENGSTATE_kgraphicsStatePreInitLocked(POBJGPU pGpu, struct KernelGraphics *pEngstate) { 143 return engstateStatePreInitLocked(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelGraphics_OBJENGSTATE.offset)); 144 } 145 146 static NV_STATUS __nvoc_thunk_OBJENGSTATE_kgraphicsStatePreInitUnlocked(POBJGPU pGpu, struct KernelGraphics *pEngstate) { 147 return engstateStatePreInitUnlocked(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelGraphics_OBJENGSTATE.offset)); 148 } 149 150 const struct NVOC_EXPORT_INFO __nvoc_export_info_KernelGraphics = 151 { 152 /*numEntries=*/ 0, 153 /*pExportEntries=*/ 0 154 }; 155 156 void __nvoc_dtor_OBJENGSTATE(OBJENGSTATE*); 157 void __nvoc_dtor_IntrService(IntrService*); 158 void __nvoc_dtor_KernelGraphics(KernelGraphics *pThis) { 159 __nvoc_kgraphicsDestruct(pThis); 160 __nvoc_dtor_OBJENGSTATE(&pThis->__nvoc_base_OBJENGSTATE); 161 __nvoc_dtor_IntrService(&pThis->__nvoc_base_IntrService); 162 PORT_UNREFERENCED_VARIABLE(pThis); 163 } 164 165 void __nvoc_init_dataField_KernelGraphics(KernelGraphics *pThis, RmHalspecOwner *pRmhalspecowner) { 166 ChipHal *chipHal = &pRmhalspecowner->chipHal; 167 const unsigned long chipHal_HalVarIdx = (unsigned long)chipHal->__nvoc_HalVarIdx; 168 RmVariantHal *rmVariantHal = &pRmhalspecowner->rmVariantHal; 169 const unsigned long rmVariantHal_HalVarIdx = (unsigned long)rmVariantHal->__nvoc_HalVarIdx; 170 PORT_UNREFERENCED_VARIABLE(pThis); 171 PORT_UNREFERENCED_VARIABLE(pRmhalspecowner); 172 PORT_UNREFERENCED_VARIABLE(chipHal); 173 PORT_UNREFERENCED_VARIABLE(chipHal_HalVarIdx); 174 PORT_UNREFERENCED_VARIABLE(rmVariantHal); 175 PORT_UNREFERENCED_VARIABLE(rmVariantHal_HalVarIdx); 176 177 // Hal field -- bCtxswLoggingSupported 178 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 */ 179 { 180 pThis->bCtxswLoggingSupported = ((NvBool)(0 == 0)); 181 } 182 183 // Hal field -- bDeferContextInit 184 if (( ((rmVariantHal_HalVarIdx >> 5) == 0UL) && ((1UL << (rmVariantHal_HalVarIdx & 0x1f)) & 0x00000002UL) )) /* RmVariantHal: PF_KERNEL_ONLY */ 185 { 186 pThis->bDeferContextInit = ((NvBool)(0 != 0)); 187 } 188 189 // Hal field -- bPerSubcontextContextHeaderSupported 190 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 */ 191 { 192 pThis->bPerSubcontextContextHeaderSupported = ((NvBool)(0 == 0)); 193 } 194 195 // Hal field -- bSetContextBuffersGPUPrivileged 196 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 */ 197 { 198 pThis->bSetContextBuffersGPUPrivileged = ((NvBool)(0 == 0)); 199 } 200 201 // Hal field -- bUcodeSupportsPrivAccessMap 202 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 */ 203 { 204 pThis->bUcodeSupportsPrivAccessMap = ((NvBool)(0 == 0)); 205 } 206 207 // Hal field -- bRtvCbSupported 208 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 */ 209 { 210 pThis->bRtvCbSupported = ((NvBool)(0 == 0)); 211 } 212 213 // Hal field -- bFecsRecordUcodeSeqnoSupported 214 if (( ((rmVariantHal_HalVarIdx >> 5) == 0UL) && ((1UL << (rmVariantHal_HalVarIdx & 0x1f)) & 0x00000002UL) )) /* RmVariantHal: PF_KERNEL_ONLY */ 215 { 216 if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000000UL) )) /* ChipHal: GH100 */ 217 { 218 pThis->bFecsRecordUcodeSeqnoSupported = ((NvBool)(0 == 0)); 219 } 220 // default 221 else 222 { 223 pThis->bFecsRecordUcodeSeqnoSupported = ((NvBool)(0 != 0)); 224 } 225 } 226 } 227 228 NV_STATUS __nvoc_ctor_OBJENGSTATE(OBJENGSTATE* ); 229 NV_STATUS __nvoc_ctor_IntrService(IntrService* ); 230 NV_STATUS __nvoc_ctor_KernelGraphics(KernelGraphics *pThis, RmHalspecOwner *pRmhalspecowner) { 231 NV_STATUS status = NV_OK; 232 status = __nvoc_ctor_OBJENGSTATE(&pThis->__nvoc_base_OBJENGSTATE); 233 if (status != NV_OK) goto __nvoc_ctor_KernelGraphics_fail_OBJENGSTATE; 234 status = __nvoc_ctor_IntrService(&pThis->__nvoc_base_IntrService); 235 if (status != NV_OK) goto __nvoc_ctor_KernelGraphics_fail_IntrService; 236 __nvoc_init_dataField_KernelGraphics(pThis, pRmhalspecowner); 237 goto __nvoc_ctor_KernelGraphics_exit; // Success 238 239 __nvoc_ctor_KernelGraphics_fail_IntrService: 240 __nvoc_dtor_OBJENGSTATE(&pThis->__nvoc_base_OBJENGSTATE); 241 __nvoc_ctor_KernelGraphics_fail_OBJENGSTATE: 242 __nvoc_ctor_KernelGraphics_exit: 243 244 return status; 245 } 246 247 static void __nvoc_init_funcTable_KernelGraphics_1(KernelGraphics *pThis, RmHalspecOwner *pRmhalspecowner) { 248 ChipHal *chipHal = &pRmhalspecowner->chipHal; 249 const unsigned long chipHal_HalVarIdx = (unsigned long)chipHal->__nvoc_HalVarIdx; 250 RmVariantHal *rmVariantHal = &pRmhalspecowner->rmVariantHal; 251 const unsigned long rmVariantHal_HalVarIdx = (unsigned long)rmVariantHal->__nvoc_HalVarIdx; 252 PORT_UNREFERENCED_VARIABLE(pThis); 253 PORT_UNREFERENCED_VARIABLE(pRmhalspecowner); 254 PORT_UNREFERENCED_VARIABLE(chipHal); 255 PORT_UNREFERENCED_VARIABLE(chipHal_HalVarIdx); 256 PORT_UNREFERENCED_VARIABLE(rmVariantHal); 257 PORT_UNREFERENCED_VARIABLE(rmVariantHal_HalVarIdx); 258 259 pThis->__kgraphicsConstructEngine__ = &kgraphicsConstructEngine_IMPL; 260 261 pThis->__kgraphicsStateInitLocked__ = &kgraphicsStateInitLocked_IMPL; 262 263 pThis->__kgraphicsStateLoad__ = &kgraphicsStateLoad_IMPL; 264 265 pThis->__kgraphicsStatePreUnload__ = &kgraphicsStatePreUnload_IMPL; 266 267 pThis->__kgraphicsStateUnload__ = &kgraphicsStateUnload_IMPL; 268 269 pThis->__kgraphicsStateDestroy__ = &kgraphicsStateDestroy_IMPL; 270 271 pThis->__kgraphicsIsPresent__ = &kgraphicsIsPresent_IMPL; 272 273 pThis->__kgraphicsStatePostLoad__ = &kgraphicsStatePostLoad_IMPL; 274 275 pThis->__kgraphicsRegisterIntrService__ = &kgraphicsRegisterIntrService_IMPL; 276 277 pThis->__kgraphicsServiceNotificationInterrupt__ = &kgraphicsServiceNotificationInterrupt_IMPL; 278 279 // Hal function -- kgraphicsClearInterrupt 280 pThis->__kgraphicsClearInterrupt__ = &kgraphicsClearInterrupt_GP100; 281 282 // Hal function -- kgraphicsServiceInterrupt 283 pThis->__kgraphicsServiceInterrupt__ = &kgraphicsServiceInterrupt_GP100; 284 285 pThis->__nvoc_base_OBJENGSTATE.__engstateConstructEngine__ = &__nvoc_thunk_KernelGraphics_engstateConstructEngine; 286 287 pThis->__nvoc_base_OBJENGSTATE.__engstateStateInitLocked__ = &__nvoc_thunk_KernelGraphics_engstateStateInitLocked; 288 289 pThis->__nvoc_base_OBJENGSTATE.__engstateStateLoad__ = &__nvoc_thunk_KernelGraphics_engstateStateLoad; 290 291 pThis->__nvoc_base_OBJENGSTATE.__engstateStatePreUnload__ = &__nvoc_thunk_KernelGraphics_engstateStatePreUnload; 292 293 pThis->__nvoc_base_OBJENGSTATE.__engstateStateUnload__ = &__nvoc_thunk_KernelGraphics_engstateStateUnload; 294 295 pThis->__nvoc_base_OBJENGSTATE.__engstateStateDestroy__ = &__nvoc_thunk_KernelGraphics_engstateStateDestroy; 296 297 pThis->__nvoc_base_OBJENGSTATE.__engstateIsPresent__ = &__nvoc_thunk_KernelGraphics_engstateIsPresent; 298 299 pThis->__nvoc_base_OBJENGSTATE.__engstateStatePostLoad__ = &__nvoc_thunk_KernelGraphics_engstateStatePostLoad; 300 301 pThis->__nvoc_base_IntrService.__intrservRegisterIntrService__ = &__nvoc_thunk_KernelGraphics_intrservRegisterIntrService; 302 303 pThis->__nvoc_base_IntrService.__intrservServiceNotificationInterrupt__ = &__nvoc_thunk_KernelGraphics_intrservServiceNotificationInterrupt; 304 305 pThis->__nvoc_base_IntrService.__intrservClearInterrupt__ = &__nvoc_thunk_KernelGraphics_intrservClearInterrupt; 306 307 pThis->__nvoc_base_IntrService.__intrservServiceInterrupt__ = &__nvoc_thunk_KernelGraphics_intrservServiceInterrupt; 308 309 pThis->__kgraphicsStatePreLoad__ = &__nvoc_thunk_OBJENGSTATE_kgraphicsStatePreLoad; 310 311 pThis->__kgraphicsStatePostUnload__ = &__nvoc_thunk_OBJENGSTATE_kgraphicsStatePostUnload; 312 313 pThis->__kgraphicsStateInitUnlocked__ = &__nvoc_thunk_OBJENGSTATE_kgraphicsStateInitUnlocked; 314 315 pThis->__kgraphicsInitMissing__ = &__nvoc_thunk_OBJENGSTATE_kgraphicsInitMissing; 316 317 pThis->__kgraphicsStatePreInitLocked__ = &__nvoc_thunk_OBJENGSTATE_kgraphicsStatePreInitLocked; 318 319 pThis->__kgraphicsStatePreInitUnlocked__ = &__nvoc_thunk_OBJENGSTATE_kgraphicsStatePreInitUnlocked; 320 } 321 322 void __nvoc_init_funcTable_KernelGraphics(KernelGraphics *pThis, RmHalspecOwner *pRmhalspecowner) { 323 __nvoc_init_funcTable_KernelGraphics_1(pThis, pRmhalspecowner); 324 } 325 326 void __nvoc_init_OBJENGSTATE(OBJENGSTATE*); 327 void __nvoc_init_IntrService(IntrService*); 328 void __nvoc_init_KernelGraphics(KernelGraphics *pThis, RmHalspecOwner *pRmhalspecowner) { 329 pThis->__nvoc_pbase_KernelGraphics = pThis; 330 pThis->__nvoc_pbase_Object = &pThis->__nvoc_base_OBJENGSTATE.__nvoc_base_Object; 331 pThis->__nvoc_pbase_OBJENGSTATE = &pThis->__nvoc_base_OBJENGSTATE; 332 pThis->__nvoc_pbase_IntrService = &pThis->__nvoc_base_IntrService; 333 __nvoc_init_OBJENGSTATE(&pThis->__nvoc_base_OBJENGSTATE); 334 __nvoc_init_IntrService(&pThis->__nvoc_base_IntrService); 335 __nvoc_init_funcTable_KernelGraphics(pThis, pRmhalspecowner); 336 } 337 338 NV_STATUS __nvoc_objCreate_KernelGraphics(KernelGraphics **ppThis, Dynamic *pParent, NvU32 createFlags) { 339 NV_STATUS status; 340 Object *pParentObj; 341 KernelGraphics *pThis; 342 RmHalspecOwner *pRmhalspecowner; 343 344 status = __nvoc_handleObjCreateMemAlloc(createFlags, sizeof(KernelGraphics), (void**)&pThis, (void**)ppThis); 345 if (status != NV_OK) 346 return status; 347 348 portMemSet(pThis, 0, sizeof(KernelGraphics)); 349 350 __nvoc_initRtti(staticCast(pThis, Dynamic), &__nvoc_class_def_KernelGraphics); 351 352 pThis->__nvoc_base_OBJENGSTATE.__nvoc_base_Object.createFlags = createFlags; 353 354 if (pParent != NULL && !(createFlags & NVOC_OBJ_CREATE_FLAGS_PARENT_HALSPEC_ONLY)) 355 { 356 pParentObj = dynamicCast(pParent, Object); 357 objAddChild(pParentObj, &pThis->__nvoc_base_OBJENGSTATE.__nvoc_base_Object); 358 } 359 else 360 { 361 pThis->__nvoc_base_OBJENGSTATE.__nvoc_base_Object.pParent = NULL; 362 } 363 364 if ((pRmhalspecowner = dynamicCast(pParent, RmHalspecOwner)) == NULL) 365 pRmhalspecowner = objFindAncestorOfType(RmHalspecOwner, pParent); 366 NV_ASSERT_OR_RETURN(pRmhalspecowner != NULL, NV_ERR_INVALID_ARGUMENT); 367 368 __nvoc_init_KernelGraphics(pThis, pRmhalspecowner); 369 status = __nvoc_ctor_KernelGraphics(pThis, pRmhalspecowner); 370 if (status != NV_OK) goto __nvoc_objCreate_KernelGraphics_cleanup; 371 372 *ppThis = pThis; 373 374 return NV_OK; 375 376 __nvoc_objCreate_KernelGraphics_cleanup: 377 // do not call destructors here since the constructor already called them 378 if (createFlags & NVOC_OBJ_CREATE_FLAGS_IN_PLACE_CONSTRUCT) 379 portMemSet(pThis, 0, sizeof(KernelGraphics)); 380 else 381 portMemFree(pThis); 382 383 // coverity[leaked_storage:FALSE] 384 return status; 385 } 386 387 NV_STATUS __nvoc_objCreateDynamic_KernelGraphics(KernelGraphics **ppThis, Dynamic *pParent, NvU32 createFlags, va_list args) { 388 NV_STATUS status; 389 390 status = __nvoc_objCreate_KernelGraphics(ppThis, pParent, createFlags); 391 392 return status; 393 } 394 395