1 #define NVOC_UVM_SW_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_uvm_sw_nvoc.h" 9 10 #ifdef DEBUG 11 char __nvoc_class_id_uniqueness_check_0xc35503 = 1; 12 #endif 13 14 extern const struct NVOC_CLASS_DEF __nvoc_class_def_UvmSwObject; 15 16 extern const struct NVOC_CLASS_DEF __nvoc_class_def_Object; 17 18 extern const struct NVOC_CLASS_DEF __nvoc_class_def_RsResource; 19 20 extern const struct NVOC_CLASS_DEF __nvoc_class_def_RmResourceCommon; 21 22 extern const struct NVOC_CLASS_DEF __nvoc_class_def_RmResource; 23 24 extern const struct NVOC_CLASS_DEF __nvoc_class_def_GpuResource; 25 26 extern const struct NVOC_CLASS_DEF __nvoc_class_def_INotifier; 27 28 extern const struct NVOC_CLASS_DEF __nvoc_class_def_Notifier; 29 30 extern const struct NVOC_CLASS_DEF __nvoc_class_def_ChannelDescendant; 31 32 void __nvoc_init_UvmSwObject(UvmSwObject*, RmHalspecOwner* ); 33 void __nvoc_init_funcTable_UvmSwObject(UvmSwObject*, RmHalspecOwner* ); 34 NV_STATUS __nvoc_ctor_UvmSwObject(UvmSwObject*, RmHalspecOwner* , struct CALL_CONTEXT * arg_pCallContext, struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams); 35 void __nvoc_init_dataField_UvmSwObject(UvmSwObject*, RmHalspecOwner* ); 36 void __nvoc_dtor_UvmSwObject(UvmSwObject*); 37 extern const struct NVOC_EXPORT_INFO __nvoc_export_info_UvmSwObject; 38 39 static const struct NVOC_RTTI __nvoc_rtti_UvmSwObject_UvmSwObject = { 40 /*pClassDef=*/ &__nvoc_class_def_UvmSwObject, 41 /*dtor=*/ (NVOC_DYNAMIC_DTOR) &__nvoc_dtor_UvmSwObject, 42 /*offset=*/ 0, 43 }; 44 45 static const struct NVOC_RTTI __nvoc_rtti_UvmSwObject_Object = { 46 /*pClassDef=*/ &__nvoc_class_def_Object, 47 /*dtor=*/ &__nvoc_destructFromBase, 48 /*offset=*/ NV_OFFSETOF(UvmSwObject, __nvoc_base_ChannelDescendant.__nvoc_base_GpuResource.__nvoc_base_RmResource.__nvoc_base_RsResource.__nvoc_base_Object), 49 }; 50 51 static const struct NVOC_RTTI __nvoc_rtti_UvmSwObject_RsResource = { 52 /*pClassDef=*/ &__nvoc_class_def_RsResource, 53 /*dtor=*/ &__nvoc_destructFromBase, 54 /*offset=*/ NV_OFFSETOF(UvmSwObject, __nvoc_base_ChannelDescendant.__nvoc_base_GpuResource.__nvoc_base_RmResource.__nvoc_base_RsResource), 55 }; 56 57 static const struct NVOC_RTTI __nvoc_rtti_UvmSwObject_RmResourceCommon = { 58 /*pClassDef=*/ &__nvoc_class_def_RmResourceCommon, 59 /*dtor=*/ &__nvoc_destructFromBase, 60 /*offset=*/ NV_OFFSETOF(UvmSwObject, __nvoc_base_ChannelDescendant.__nvoc_base_GpuResource.__nvoc_base_RmResource.__nvoc_base_RmResourceCommon), 61 }; 62 63 static const struct NVOC_RTTI __nvoc_rtti_UvmSwObject_RmResource = { 64 /*pClassDef=*/ &__nvoc_class_def_RmResource, 65 /*dtor=*/ &__nvoc_destructFromBase, 66 /*offset=*/ NV_OFFSETOF(UvmSwObject, __nvoc_base_ChannelDescendant.__nvoc_base_GpuResource.__nvoc_base_RmResource), 67 }; 68 69 static const struct NVOC_RTTI __nvoc_rtti_UvmSwObject_GpuResource = { 70 /*pClassDef=*/ &__nvoc_class_def_GpuResource, 71 /*dtor=*/ &__nvoc_destructFromBase, 72 /*offset=*/ NV_OFFSETOF(UvmSwObject, __nvoc_base_ChannelDescendant.__nvoc_base_GpuResource), 73 }; 74 75 static const struct NVOC_RTTI __nvoc_rtti_UvmSwObject_INotifier = { 76 /*pClassDef=*/ &__nvoc_class_def_INotifier, 77 /*dtor=*/ &__nvoc_destructFromBase, 78 /*offset=*/ NV_OFFSETOF(UvmSwObject, __nvoc_base_ChannelDescendant.__nvoc_base_Notifier.__nvoc_base_INotifier), 79 }; 80 81 static const struct NVOC_RTTI __nvoc_rtti_UvmSwObject_Notifier = { 82 /*pClassDef=*/ &__nvoc_class_def_Notifier, 83 /*dtor=*/ &__nvoc_destructFromBase, 84 /*offset=*/ NV_OFFSETOF(UvmSwObject, __nvoc_base_ChannelDescendant.__nvoc_base_Notifier), 85 }; 86 87 static const struct NVOC_RTTI __nvoc_rtti_UvmSwObject_ChannelDescendant = { 88 /*pClassDef=*/ &__nvoc_class_def_ChannelDescendant, 89 /*dtor=*/ &__nvoc_destructFromBase, 90 /*offset=*/ NV_OFFSETOF(UvmSwObject, __nvoc_base_ChannelDescendant), 91 }; 92 93 static const struct NVOC_CASTINFO __nvoc_castinfo_UvmSwObject = { 94 /*numRelatives=*/ 9, 95 /*relatives=*/ { 96 &__nvoc_rtti_UvmSwObject_UvmSwObject, 97 &__nvoc_rtti_UvmSwObject_ChannelDescendant, 98 &__nvoc_rtti_UvmSwObject_Notifier, 99 &__nvoc_rtti_UvmSwObject_INotifier, 100 &__nvoc_rtti_UvmSwObject_GpuResource, 101 &__nvoc_rtti_UvmSwObject_RmResource, 102 &__nvoc_rtti_UvmSwObject_RmResourceCommon, 103 &__nvoc_rtti_UvmSwObject_RsResource, 104 &__nvoc_rtti_UvmSwObject_Object, 105 }, 106 }; 107 108 const struct NVOC_CLASS_DEF __nvoc_class_def_UvmSwObject = 109 { 110 /*classInfo=*/ { 111 /*size=*/ sizeof(UvmSwObject), 112 /*classId=*/ classId(UvmSwObject), 113 /*providerId=*/ &__nvoc_rtti_provider, 114 #if NV_PRINTF_STRINGS_ALLOWED 115 /*name=*/ "UvmSwObject", 116 #endif 117 }, 118 /*objCreatefn=*/ (NVOC_DYNAMIC_OBJ_CREATE) &__nvoc_objCreateDynamic_UvmSwObject, 119 /*pCastInfo=*/ &__nvoc_castinfo_UvmSwObject, 120 /*pExportInfo=*/ &__nvoc_export_info_UvmSwObject 121 }; 122 123 static NV_STATUS __nvoc_thunk_UvmSwObject_chandesGetSwMethods(struct ChannelDescendant *pUvmSw, const METHOD **ppMethods, NvU32 *pNumMethods) { 124 return uvmswGetSwMethods((struct UvmSwObject *)(((unsigned char *)pUvmSw) - __nvoc_rtti_UvmSwObject_ChannelDescendant.offset), ppMethods, pNumMethods); 125 } 126 127 static NV_STATUS __nvoc_thunk_ChannelDescendant_uvmswCheckMemInterUnmap(struct UvmSwObject *pChannelDescendant, NvBool bSubdeviceHandleProvided) { 128 return chandesCheckMemInterUnmap((struct ChannelDescendant *)(((unsigned char *)pChannelDescendant) + __nvoc_rtti_UvmSwObject_ChannelDescendant.offset), bSubdeviceHandleProvided); 129 } 130 131 static NvBool __nvoc_thunk_GpuResource_uvmswShareCallback(struct UvmSwObject *pGpuResource, struct RsClient *pInvokingClient, struct RsResourceRef *pParentRef, RS_SHARE_POLICY *pSharePolicy) { 132 return gpuresShareCallback((struct GpuResource *)(((unsigned char *)pGpuResource) + __nvoc_rtti_UvmSwObject_GpuResource.offset), pInvokingClient, pParentRef, pSharePolicy); 133 } 134 135 static NvBool __nvoc_thunk_RmResource_uvmswAccessCallback(struct UvmSwObject *pResource, struct RsClient *pInvokingClient, void *pAllocParams, RsAccessRight accessRight) { 136 return rmresAccessCallback((struct RmResource *)(((unsigned char *)pResource) + __nvoc_rtti_UvmSwObject_RmResource.offset), pInvokingClient, pAllocParams, accessRight); 137 } 138 139 static NV_STATUS __nvoc_thunk_RsResource_uvmswMapTo(struct UvmSwObject *pResource, RS_RES_MAP_TO_PARAMS *pParams) { 140 return resMapTo((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_UvmSwObject_RsResource.offset), pParams); 141 } 142 143 static NV_STATUS __nvoc_thunk_GpuResource_uvmswGetMapAddrSpace(struct UvmSwObject *pGpuResource, struct CALL_CONTEXT *pCallContext, NvU32 mapFlags, NV_ADDRESS_SPACE *pAddrSpace) { 144 return gpuresGetMapAddrSpace((struct GpuResource *)(((unsigned char *)pGpuResource) + __nvoc_rtti_UvmSwObject_GpuResource.offset), pCallContext, mapFlags, pAddrSpace); 145 } 146 147 static void __nvoc_thunk_Notifier_uvmswSetNotificationShare(struct UvmSwObject *pNotifier, struct NotifShare *pNotifShare) { 148 notifySetNotificationShare((struct Notifier *)(((unsigned char *)pNotifier) + __nvoc_rtti_UvmSwObject_Notifier.offset), pNotifShare); 149 } 150 151 static NvU32 __nvoc_thunk_RsResource_uvmswGetRefCount(struct UvmSwObject *pResource) { 152 return resGetRefCount((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_UvmSwObject_RsResource.offset)); 153 } 154 155 static void __nvoc_thunk_RsResource_uvmswAddAdditionalDependants(struct RsClient *pClient, struct UvmSwObject *pResource, RsResourceRef *pReference) { 156 resAddAdditionalDependants(pClient, (struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_UvmSwObject_RsResource.offset), pReference); 157 } 158 159 static NV_STATUS __nvoc_thunk_RmResource_uvmswControl_Prologue(struct UvmSwObject *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) { 160 return rmresControl_Prologue((struct RmResource *)(((unsigned char *)pResource) + __nvoc_rtti_UvmSwObject_RmResource.offset), pCallContext, pParams); 161 } 162 163 static NV_STATUS __nvoc_thunk_GpuResource_uvmswGetRegBaseOffsetAndSize(struct UvmSwObject *pGpuResource, struct OBJGPU *pGpu, NvU32 *pOffset, NvU32 *pSize) { 164 return gpuresGetRegBaseOffsetAndSize((struct GpuResource *)(((unsigned char *)pGpuResource) + __nvoc_rtti_UvmSwObject_GpuResource.offset), pGpu, pOffset, pSize); 165 } 166 167 static NV_STATUS __nvoc_thunk_GpuResource_uvmswInternalControlForward(struct UvmSwObject *pGpuResource, NvU32 command, void *pParams, NvU32 size) { 168 return gpuresInternalControlForward((struct GpuResource *)(((unsigned char *)pGpuResource) + __nvoc_rtti_UvmSwObject_GpuResource.offset), command, pParams, size); 169 } 170 171 static NV_STATUS __nvoc_thunk_RsResource_uvmswUnmapFrom(struct UvmSwObject *pResource, RS_RES_UNMAP_FROM_PARAMS *pParams) { 172 return resUnmapFrom((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_UvmSwObject_RsResource.offset), pParams); 173 } 174 175 static void __nvoc_thunk_RmResource_uvmswControl_Epilogue(struct UvmSwObject *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) { 176 rmresControl_Epilogue((struct RmResource *)(((unsigned char *)pResource) + __nvoc_rtti_UvmSwObject_RmResource.offset), pCallContext, pParams); 177 } 178 179 static NV_STATUS __nvoc_thunk_RsResource_uvmswControlLookup(struct UvmSwObject *pResource, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams, const struct NVOC_EXPORTED_METHOD_DEF **ppEntry) { 180 return resControlLookup((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_UvmSwObject_RsResource.offset), pParams, ppEntry); 181 } 182 183 static NvHandle __nvoc_thunk_GpuResource_uvmswGetInternalObjectHandle(struct UvmSwObject *pGpuResource) { 184 return gpuresGetInternalObjectHandle((struct GpuResource *)(((unsigned char *)pGpuResource) + __nvoc_rtti_UvmSwObject_GpuResource.offset)); 185 } 186 187 static NV_STATUS __nvoc_thunk_GpuResource_uvmswControl(struct UvmSwObject *pGpuResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) { 188 return gpuresControl((struct GpuResource *)(((unsigned char *)pGpuResource) + __nvoc_rtti_UvmSwObject_GpuResource.offset), pCallContext, pParams); 189 } 190 191 static NV_STATUS __nvoc_thunk_GpuResource_uvmswUnmap(struct UvmSwObject *pGpuResource, struct CALL_CONTEXT *pCallContext, struct RsCpuMapping *pCpuMapping) { 192 return gpuresUnmap((struct GpuResource *)(((unsigned char *)pGpuResource) + __nvoc_rtti_UvmSwObject_GpuResource.offset), pCallContext, pCpuMapping); 193 } 194 195 static NV_STATUS __nvoc_thunk_RmResource_uvmswGetMemInterMapParams(struct UvmSwObject *pRmResource, RMRES_MEM_INTER_MAP_PARAMS *pParams) { 196 return rmresGetMemInterMapParams((struct RmResource *)(((unsigned char *)pRmResource) + __nvoc_rtti_UvmSwObject_RmResource.offset), pParams); 197 } 198 199 static NV_STATUS __nvoc_thunk_RmResource_uvmswGetMemoryMappingDescriptor(struct UvmSwObject *pRmResource, struct MEMORY_DESCRIPTOR **ppMemDesc) { 200 return rmresGetMemoryMappingDescriptor((struct RmResource *)(((unsigned char *)pRmResource) + __nvoc_rtti_UvmSwObject_RmResource.offset), ppMemDesc); 201 } 202 203 static NvBool __nvoc_thunk_ChannelDescendant_uvmswIsSwMethodStalling(struct UvmSwObject *pChannelDescendant, NvU32 hHandle) { 204 return chandesIsSwMethodStalling((struct ChannelDescendant *)(((unsigned char *)pChannelDescendant) + __nvoc_rtti_UvmSwObject_ChannelDescendant.offset), hHandle); 205 } 206 207 static NV_STATUS __nvoc_thunk_RsResource_uvmswControlFilter(struct UvmSwObject *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) { 208 return resControlFilter((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_UvmSwObject_RsResource.offset), pCallContext, pParams); 209 } 210 211 static NV_STATUS __nvoc_thunk_Notifier_uvmswUnregisterEvent(struct UvmSwObject *pNotifier, NvHandle hNotifierClient, NvHandle hNotifierResource, NvHandle hEventClient, NvHandle hEvent) { 212 return notifyUnregisterEvent((struct Notifier *)(((unsigned char *)pNotifier) + __nvoc_rtti_UvmSwObject_Notifier.offset), hNotifierClient, hNotifierResource, hEventClient, hEvent); 213 } 214 215 static NV_STATUS __nvoc_thunk_RmResource_uvmswControlSerialization_Prologue(struct UvmSwObject *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) { 216 return rmresControlSerialization_Prologue((struct RmResource *)(((unsigned char *)pResource) + __nvoc_rtti_UvmSwObject_RmResource.offset), pCallContext, pParams); 217 } 218 219 static NvBool __nvoc_thunk_RsResource_uvmswCanCopy(struct UvmSwObject *pResource) { 220 return resCanCopy((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_UvmSwObject_RsResource.offset)); 221 } 222 223 static void __nvoc_thunk_RsResource_uvmswPreDestruct(struct UvmSwObject *pResource) { 224 resPreDestruct((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_UvmSwObject_RsResource.offset)); 225 } 226 227 static NV_STATUS __nvoc_thunk_RsResource_uvmswIsDuplicate(struct UvmSwObject *pResource, NvHandle hMemory, NvBool *pDuplicate) { 228 return resIsDuplicate((struct RsResource *)(((unsigned char *)pResource) + __nvoc_rtti_UvmSwObject_RsResource.offset), hMemory, pDuplicate); 229 } 230 231 static void __nvoc_thunk_RmResource_uvmswControlSerialization_Epilogue(struct UvmSwObject *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) { 232 rmresControlSerialization_Epilogue((struct RmResource *)(((unsigned char *)pResource) + __nvoc_rtti_UvmSwObject_RmResource.offset), pCallContext, pParams); 233 } 234 235 static PEVENTNOTIFICATION *__nvoc_thunk_Notifier_uvmswGetNotificationListPtr(struct UvmSwObject *pNotifier) { 236 return notifyGetNotificationListPtr((struct Notifier *)(((unsigned char *)pNotifier) + __nvoc_rtti_UvmSwObject_Notifier.offset)); 237 } 238 239 static struct NotifShare *__nvoc_thunk_Notifier_uvmswGetNotificationShare(struct UvmSwObject *pNotifier) { 240 return notifyGetNotificationShare((struct Notifier *)(((unsigned char *)pNotifier) + __nvoc_rtti_UvmSwObject_Notifier.offset)); 241 } 242 243 static NV_STATUS __nvoc_thunk_GpuResource_uvmswMap(struct UvmSwObject *pGpuResource, struct CALL_CONTEXT *pCallContext, struct RS_CPU_MAP_PARAMS *pParams, struct RsCpuMapping *pCpuMapping) { 244 return gpuresMap((struct GpuResource *)(((unsigned char *)pGpuResource) + __nvoc_rtti_UvmSwObject_GpuResource.offset), pCallContext, pParams, pCpuMapping); 245 } 246 247 static NV_STATUS __nvoc_thunk_Notifier_uvmswGetOrAllocNotifShare(struct UvmSwObject *pNotifier, NvHandle hNotifierClient, NvHandle hNotifierResource, struct NotifShare **ppNotifShare) { 248 return notifyGetOrAllocNotifShare((struct Notifier *)(((unsigned char *)pNotifier) + __nvoc_rtti_UvmSwObject_Notifier.offset), hNotifierClient, hNotifierResource, ppNotifShare); 249 } 250 251 const struct NVOC_EXPORT_INFO __nvoc_export_info_UvmSwObject = 252 { 253 /*numEntries=*/ 0, 254 /*pExportEntries=*/ 0 255 }; 256 257 void __nvoc_dtor_ChannelDescendant(ChannelDescendant*); 258 void __nvoc_dtor_UvmSwObject(UvmSwObject *pThis) { 259 __nvoc_uvmswDestruct(pThis); 260 __nvoc_dtor_ChannelDescendant(&pThis->__nvoc_base_ChannelDescendant); 261 PORT_UNREFERENCED_VARIABLE(pThis); 262 } 263 264 void __nvoc_init_dataField_UvmSwObject(UvmSwObject *pThis, RmHalspecOwner *pRmhalspecowner) { 265 RmVariantHal *rmVariantHal = &pRmhalspecowner->rmVariantHal; 266 const unsigned long rmVariantHal_HalVarIdx = (unsigned long)rmVariantHal->__nvoc_HalVarIdx; 267 PORT_UNREFERENCED_VARIABLE(pThis); 268 PORT_UNREFERENCED_VARIABLE(pRmhalspecowner); 269 PORT_UNREFERENCED_VARIABLE(rmVariantHal); 270 PORT_UNREFERENCED_VARIABLE(rmVariantHal_HalVarIdx); 271 } 272 273 NV_STATUS __nvoc_ctor_ChannelDescendant(ChannelDescendant* , RmHalspecOwner* , struct CALL_CONTEXT *, struct RS_RES_ALLOC_PARAMS_INTERNAL *, PARAM_TO_ENGDESC_FUNCTION *); 274 NV_STATUS __nvoc_ctor_UvmSwObject(UvmSwObject *pThis, RmHalspecOwner *pRmhalspecowner, struct CALL_CONTEXT * arg_pCallContext, struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams) { 275 NV_STATUS status = NV_OK; 276 status = __nvoc_ctor_ChannelDescendant(&pThis->__nvoc_base_ChannelDescendant, pRmhalspecowner, arg_pCallContext, arg_pParams, ((void *)0)); 277 if (status != NV_OK) goto __nvoc_ctor_UvmSwObject_fail_ChannelDescendant; 278 __nvoc_init_dataField_UvmSwObject(pThis, pRmhalspecowner); 279 280 status = __nvoc_uvmswConstruct(pThis, arg_pCallContext, arg_pParams); 281 if (status != NV_OK) goto __nvoc_ctor_UvmSwObject_fail__init; 282 goto __nvoc_ctor_UvmSwObject_exit; // Success 283 284 __nvoc_ctor_UvmSwObject_fail__init: 285 __nvoc_dtor_ChannelDescendant(&pThis->__nvoc_base_ChannelDescendant); 286 __nvoc_ctor_UvmSwObject_fail_ChannelDescendant: 287 __nvoc_ctor_UvmSwObject_exit: 288 289 return status; 290 } 291 292 static void __nvoc_init_funcTable_UvmSwObject_1(UvmSwObject *pThis, RmHalspecOwner *pRmhalspecowner) { 293 RmVariantHal *rmVariantHal = &pRmhalspecowner->rmVariantHal; 294 const unsigned long rmVariantHal_HalVarIdx = (unsigned long)rmVariantHal->__nvoc_HalVarIdx; 295 PORT_UNREFERENCED_VARIABLE(pThis); 296 PORT_UNREFERENCED_VARIABLE(pRmhalspecowner); 297 PORT_UNREFERENCED_VARIABLE(rmVariantHal); 298 PORT_UNREFERENCED_VARIABLE(rmVariantHal_HalVarIdx); 299 300 // Hal function -- uvmswGetSwMethods 301 if (( ((rmVariantHal_HalVarIdx >> 5) == 0UL) && ((1UL << (rmVariantHal_HalVarIdx & 0x1f)) & 0x00000002UL) )) /* RmVariantHal: PF_KERNEL_ONLY */ 302 { 303 pThis->__uvmswGetSwMethods__ = &uvmswGetSwMethods_56cd7a; 304 } 305 306 pThis->__nvoc_base_ChannelDescendant.__chandesGetSwMethods__ = &__nvoc_thunk_UvmSwObject_chandesGetSwMethods; 307 308 pThis->__uvmswCheckMemInterUnmap__ = &__nvoc_thunk_ChannelDescendant_uvmswCheckMemInterUnmap; 309 310 pThis->__uvmswShareCallback__ = &__nvoc_thunk_GpuResource_uvmswShareCallback; 311 312 pThis->__uvmswAccessCallback__ = &__nvoc_thunk_RmResource_uvmswAccessCallback; 313 314 pThis->__uvmswMapTo__ = &__nvoc_thunk_RsResource_uvmswMapTo; 315 316 pThis->__uvmswGetMapAddrSpace__ = &__nvoc_thunk_GpuResource_uvmswGetMapAddrSpace; 317 318 pThis->__uvmswSetNotificationShare__ = &__nvoc_thunk_Notifier_uvmswSetNotificationShare; 319 320 pThis->__uvmswGetRefCount__ = &__nvoc_thunk_RsResource_uvmswGetRefCount; 321 322 pThis->__uvmswAddAdditionalDependants__ = &__nvoc_thunk_RsResource_uvmswAddAdditionalDependants; 323 324 pThis->__uvmswControl_Prologue__ = &__nvoc_thunk_RmResource_uvmswControl_Prologue; 325 326 pThis->__uvmswGetRegBaseOffsetAndSize__ = &__nvoc_thunk_GpuResource_uvmswGetRegBaseOffsetAndSize; 327 328 pThis->__uvmswInternalControlForward__ = &__nvoc_thunk_GpuResource_uvmswInternalControlForward; 329 330 pThis->__uvmswUnmapFrom__ = &__nvoc_thunk_RsResource_uvmswUnmapFrom; 331 332 pThis->__uvmswControl_Epilogue__ = &__nvoc_thunk_RmResource_uvmswControl_Epilogue; 333 334 pThis->__uvmswControlLookup__ = &__nvoc_thunk_RsResource_uvmswControlLookup; 335 336 pThis->__uvmswGetInternalObjectHandle__ = &__nvoc_thunk_GpuResource_uvmswGetInternalObjectHandle; 337 338 pThis->__uvmswControl__ = &__nvoc_thunk_GpuResource_uvmswControl; 339 340 pThis->__uvmswUnmap__ = &__nvoc_thunk_GpuResource_uvmswUnmap; 341 342 pThis->__uvmswGetMemInterMapParams__ = &__nvoc_thunk_RmResource_uvmswGetMemInterMapParams; 343 344 pThis->__uvmswGetMemoryMappingDescriptor__ = &__nvoc_thunk_RmResource_uvmswGetMemoryMappingDescriptor; 345 346 pThis->__uvmswIsSwMethodStalling__ = &__nvoc_thunk_ChannelDescendant_uvmswIsSwMethodStalling; 347 348 pThis->__uvmswControlFilter__ = &__nvoc_thunk_RsResource_uvmswControlFilter; 349 350 pThis->__uvmswUnregisterEvent__ = &__nvoc_thunk_Notifier_uvmswUnregisterEvent; 351 352 pThis->__uvmswControlSerialization_Prologue__ = &__nvoc_thunk_RmResource_uvmswControlSerialization_Prologue; 353 354 pThis->__uvmswCanCopy__ = &__nvoc_thunk_RsResource_uvmswCanCopy; 355 356 pThis->__uvmswPreDestruct__ = &__nvoc_thunk_RsResource_uvmswPreDestruct; 357 358 pThis->__uvmswIsDuplicate__ = &__nvoc_thunk_RsResource_uvmswIsDuplicate; 359 360 pThis->__uvmswControlSerialization_Epilogue__ = &__nvoc_thunk_RmResource_uvmswControlSerialization_Epilogue; 361 362 pThis->__uvmswGetNotificationListPtr__ = &__nvoc_thunk_Notifier_uvmswGetNotificationListPtr; 363 364 pThis->__uvmswGetNotificationShare__ = &__nvoc_thunk_Notifier_uvmswGetNotificationShare; 365 366 pThis->__uvmswMap__ = &__nvoc_thunk_GpuResource_uvmswMap; 367 368 pThis->__uvmswGetOrAllocNotifShare__ = &__nvoc_thunk_Notifier_uvmswGetOrAllocNotifShare; 369 } 370 371 void __nvoc_init_funcTable_UvmSwObject(UvmSwObject *pThis, RmHalspecOwner *pRmhalspecowner) { 372 __nvoc_init_funcTable_UvmSwObject_1(pThis, pRmhalspecowner); 373 } 374 375 void __nvoc_init_ChannelDescendant(ChannelDescendant*, RmHalspecOwner* ); 376 void __nvoc_init_UvmSwObject(UvmSwObject *pThis, RmHalspecOwner *pRmhalspecowner) { 377 pThis->__nvoc_pbase_UvmSwObject = pThis; 378 pThis->__nvoc_pbase_Object = &pThis->__nvoc_base_ChannelDescendant.__nvoc_base_GpuResource.__nvoc_base_RmResource.__nvoc_base_RsResource.__nvoc_base_Object; 379 pThis->__nvoc_pbase_RsResource = &pThis->__nvoc_base_ChannelDescendant.__nvoc_base_GpuResource.__nvoc_base_RmResource.__nvoc_base_RsResource; 380 pThis->__nvoc_pbase_RmResourceCommon = &pThis->__nvoc_base_ChannelDescendant.__nvoc_base_GpuResource.__nvoc_base_RmResource.__nvoc_base_RmResourceCommon; 381 pThis->__nvoc_pbase_RmResource = &pThis->__nvoc_base_ChannelDescendant.__nvoc_base_GpuResource.__nvoc_base_RmResource; 382 pThis->__nvoc_pbase_GpuResource = &pThis->__nvoc_base_ChannelDescendant.__nvoc_base_GpuResource; 383 pThis->__nvoc_pbase_INotifier = &pThis->__nvoc_base_ChannelDescendant.__nvoc_base_Notifier.__nvoc_base_INotifier; 384 pThis->__nvoc_pbase_Notifier = &pThis->__nvoc_base_ChannelDescendant.__nvoc_base_Notifier; 385 pThis->__nvoc_pbase_ChannelDescendant = &pThis->__nvoc_base_ChannelDescendant; 386 __nvoc_init_ChannelDescendant(&pThis->__nvoc_base_ChannelDescendant, pRmhalspecowner); 387 __nvoc_init_funcTable_UvmSwObject(pThis, pRmhalspecowner); 388 } 389 390 NV_STATUS __nvoc_objCreate_UvmSwObject(UvmSwObject **ppThis, Dynamic *pParent, NvU32 createFlags, struct CALL_CONTEXT * arg_pCallContext, struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams) { 391 NV_STATUS status; 392 Object *pParentObj; 393 UvmSwObject *pThis; 394 RmHalspecOwner *pRmhalspecowner; 395 396 status = __nvoc_handleObjCreateMemAlloc(createFlags, sizeof(UvmSwObject), (void**)&pThis, (void**)ppThis); 397 if (status != NV_OK) 398 return status; 399 400 portMemSet(pThis, 0, sizeof(UvmSwObject)); 401 402 __nvoc_initRtti(staticCast(pThis, Dynamic), &__nvoc_class_def_UvmSwObject); 403 404 pThis->__nvoc_base_ChannelDescendant.__nvoc_base_GpuResource.__nvoc_base_RmResource.__nvoc_base_RsResource.__nvoc_base_Object.createFlags = createFlags; 405 406 if (pParent != NULL && !(createFlags & NVOC_OBJ_CREATE_FLAGS_PARENT_HALSPEC_ONLY)) 407 { 408 pParentObj = dynamicCast(pParent, Object); 409 objAddChild(pParentObj, &pThis->__nvoc_base_ChannelDescendant.__nvoc_base_GpuResource.__nvoc_base_RmResource.__nvoc_base_RsResource.__nvoc_base_Object); 410 } 411 else 412 { 413 pThis->__nvoc_base_ChannelDescendant.__nvoc_base_GpuResource.__nvoc_base_RmResource.__nvoc_base_RsResource.__nvoc_base_Object.pParent = NULL; 414 } 415 416 if ((pRmhalspecowner = dynamicCast(pParent, RmHalspecOwner)) == NULL) 417 pRmhalspecowner = objFindAncestorOfType(RmHalspecOwner, pParent); 418 NV_ASSERT_OR_RETURN(pRmhalspecowner != NULL, NV_ERR_INVALID_ARGUMENT); 419 420 __nvoc_init_UvmSwObject(pThis, pRmhalspecowner); 421 status = __nvoc_ctor_UvmSwObject(pThis, pRmhalspecowner, arg_pCallContext, arg_pParams); 422 if (status != NV_OK) goto __nvoc_objCreate_UvmSwObject_cleanup; 423 424 *ppThis = pThis; 425 426 return NV_OK; 427 428 __nvoc_objCreate_UvmSwObject_cleanup: 429 // do not call destructors here since the constructor already called them 430 if (createFlags & NVOC_OBJ_CREATE_FLAGS_IN_PLACE_CONSTRUCT) 431 portMemSet(pThis, 0, sizeof(UvmSwObject)); 432 else 433 portMemFree(pThis); 434 435 // coverity[leaked_storage:FALSE] 436 return status; 437 } 438 439 NV_STATUS __nvoc_objCreateDynamic_UvmSwObject(UvmSwObject **ppThis, Dynamic *pParent, NvU32 createFlags, va_list args) { 440 NV_STATUS status; 441 struct CALL_CONTEXT * arg_pCallContext = va_arg(args, struct CALL_CONTEXT *); 442 struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams = va_arg(args, struct RS_RES_ALLOC_PARAMS_INTERNAL *); 443 444 status = __nvoc_objCreate_UvmSwObject(ppThis, pParent, createFlags, arg_pCallContext, arg_pParams); 445 446 return status; 447 } 448 449