1 
2 #ifndef _G_VIDMEM_ACCESS_BIT_BUFFER_NVOC_H_
3 #define _G_VIDMEM_ACCESS_BIT_BUFFER_NVOC_H_
4 #include "nvoc/runtime.h"
5 
6 // Version of generated metadata structures
7 #ifdef NVOC_METADATA_VERSION
8 #undef NVOC_METADATA_VERSION
9 #endif
10 #define NVOC_METADATA_VERSION 0
11 
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 
16 /*
17  * SPDX-FileCopyrightText: Copyright (c) 2021-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
18  * SPDX-License-Identifier: MIT
19  *
20  * Permission is hereby granted, free of charge, to any person obtaining a
21  * copy of this software and associated documentation files (the "Software"),
22  * to deal in the Software without restriction, including without limitation
23  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
24  * and/or sell copies of the Software, and to permit persons to whom the
25  * Software is furnished to do so, subject to the following conditions:
26  *
27  * The above copyright notice and this permission notice shall be included in
28  * all copies or substantial portions of the Software.
29  *
30  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
31  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
32  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
33  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
34  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
35  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
36  * DEALINGS IN THE SOFTWARE.
37  */
38 
39 #pragma once
40 #include "g_vidmem_access_bit_buffer_nvoc.h"
41 
42 #ifndef VIDMEM_ACCESS_BIT_BUFFER_H
43 #define VIDMEM_ACCESS_BIT_BUFFER_H
44 
45 #include "gpu/gpu.h"
46 #include "gpu/gpu_resource.h"
47 #include "rmapi/event.h"
48 #include "ctrl/ctrlc763.h"
49 
50 typedef struct
51 {
52     NvU8   entrySize;
53     NvU8   entryGranularity;
54     NvU8   trackMode;
55     NvU8   disableMode;
56     NvBool bEnabled;
57     NvBool bFloorswept;
58 }NV_VIDMEM_ACCESS_BIT_BUFFER_HW_ATTR;
59 
60 
61 #define NUM_MMU_TYPES 0x3
62 
63 // This is used to make the conversion from the granularity enum to byte size more readable
64 #define NV_VAB_GRAN_SIZE(gran)      NVBIT64(16 + (NvU64)(gran))
65 
66 #define NV_VAB_SIZE_TO_BIT_COUNT(vabSize)   ((vabSize)*8)
67 #define NV_VAB_SIZE_TO_NVU64_COUNT(vabSize) ((vabSize)/8)
68 
69 
70 /*
71  * Maximum length of access bit mask and access bit buffer in NvU64s. Legacy define used in the old interface. To be deleted once MODS transitions to V2.
72  */
73 #define AMPERE_VIDMEM_BIT_BUF_SIZE 512
74 #define NV_VAB_BUFFER_MAX_NVU64_COUNT NV_VAB_SIZE_TO_NVU64_COUNT(AMPERE_VIDMEM_BIT_BUF_SIZE)
75 
76 /*
77  * These values are returned from gmmuVidmemAccessBitBufferVersion_HAL to indicate
78  * the type of VAB interface supported on the current platform.
79  */
80 #define NV_VAB_VERSION_NONE           0
81 #define NV_VAB_VERSION_SINGLE_RANGE   1
82 #define NV_VAB_VERSION_MULTI_RANGE    2
83 
84 /*!
85  * RM internal class representing VIDMEM_ACCESS_BIT_BUFFER
86  */
87 
88 // Private field names are wrapped in PRIVATE_FIELD, which does nothing for
89 // the matching C source file, but causes diagnostics to be issued if another
90 // source file references the field.
91 #ifdef NVOC_VIDMEM_ACCESS_BIT_BUFFER_H_PRIVATE_ACCESS_ALLOWED
92 #define PRIVATE_FIELD(x) x
93 #else
94 #define PRIVATE_FIELD(x) NVOC_PRIVATE_FIELD(x)
95 #endif
96 
97 
98 struct VidmemAccessBitBuffer {
99 
100     // Metadata
101     const struct NVOC_RTTI *__nvoc_rtti;
102 
103     // Parent (i.e. superclass or base class) object pointers
104     struct GpuResource __nvoc_base_GpuResource;
105     struct Notifier __nvoc_base_Notifier;
106 
107     // Ancestor object pointers for `staticCast` feature
108     struct Object *__nvoc_pbase_Object;    // obj super^4
109     struct RsResource *__nvoc_pbase_RsResource;    // res super^3
110     struct RmResourceCommon *__nvoc_pbase_RmResourceCommon;    // rmrescmn super^3
111     struct RmResource *__nvoc_pbase_RmResource;    // rmres super^2
112     struct GpuResource *__nvoc_pbase_GpuResource;    // gpures super
113     struct INotifier *__nvoc_pbase_INotifier;    // inotify super^2
114     struct Notifier *__nvoc_pbase_Notifier;    // notify super
115     struct VidmemAccessBitBuffer *__nvoc_pbase_VidmemAccessBitBuffer;    // vidmemAccessBitBuf
116 
117     // Vtable with 31 per-object function pointers
118     NV_STATUS (*__vidmemAccessBitBufCtrlCmdVidmemAccessBitDump__)(struct VidmemAccessBitBuffer * /*this*/, NVC763_CTRL_VIDMEM_ACCESS_BIT_BUFFER_DUMP_PARAMS *);  // exported (id=0xc7630103)
119     NV_STATUS (*__vidmemAccessBitBufControl__)(struct VidmemAccessBitBuffer * /*this*/, struct CALL_CONTEXT *, struct RS_RES_CONTROL_PARAMS_INTERNAL *);  // virtual inherited (gpures) base (gpures)
120     NV_STATUS (*__vidmemAccessBitBufMap__)(struct VidmemAccessBitBuffer * /*this*/, struct CALL_CONTEXT *, struct RS_CPU_MAP_PARAMS *, struct RsCpuMapping *);  // virtual inherited (gpures) base (gpures)
121     NV_STATUS (*__vidmemAccessBitBufUnmap__)(struct VidmemAccessBitBuffer * /*this*/, struct CALL_CONTEXT *, struct RsCpuMapping *);  // virtual inherited (gpures) base (gpures)
122     NvBool (*__vidmemAccessBitBufShareCallback__)(struct VidmemAccessBitBuffer * /*this*/, struct RsClient *, struct RsResourceRef *, RS_SHARE_POLICY *);  // virtual inherited (gpures) base (gpures)
123     NV_STATUS (*__vidmemAccessBitBufGetRegBaseOffsetAndSize__)(struct VidmemAccessBitBuffer * /*this*/, struct OBJGPU *, NvU32 *, NvU32 *);  // virtual inherited (gpures) base (gpures)
124     NV_STATUS (*__vidmemAccessBitBufGetMapAddrSpace__)(struct VidmemAccessBitBuffer * /*this*/, struct CALL_CONTEXT *, NvU32, NV_ADDRESS_SPACE *);  // virtual inherited (gpures) base (gpures)
125     NV_STATUS (*__vidmemAccessBitBufInternalControlForward__)(struct VidmemAccessBitBuffer * /*this*/, NvU32, void *, NvU32);  // virtual inherited (gpures) base (gpures)
126     NvHandle (*__vidmemAccessBitBufGetInternalObjectHandle__)(struct VidmemAccessBitBuffer * /*this*/);  // virtual inherited (gpures) base (gpures)
127     NvBool (*__vidmemAccessBitBufAccessCallback__)(struct VidmemAccessBitBuffer * /*this*/, struct RsClient *, void *, RsAccessRight);  // virtual inherited (rmres) base (gpures)
128     NV_STATUS (*__vidmemAccessBitBufGetMemInterMapParams__)(struct VidmemAccessBitBuffer * /*this*/, RMRES_MEM_INTER_MAP_PARAMS *);  // virtual inherited (rmres) base (gpures)
129     NV_STATUS (*__vidmemAccessBitBufCheckMemInterUnmap__)(struct VidmemAccessBitBuffer * /*this*/, NvBool);  // virtual inherited (rmres) base (gpures)
130     NV_STATUS (*__vidmemAccessBitBufGetMemoryMappingDescriptor__)(struct VidmemAccessBitBuffer * /*this*/, struct MEMORY_DESCRIPTOR **);  // virtual inherited (rmres) base (gpures)
131     NV_STATUS (*__vidmemAccessBitBufControlSerialization_Prologue__)(struct VidmemAccessBitBuffer * /*this*/, struct CALL_CONTEXT *, struct RS_RES_CONTROL_PARAMS_INTERNAL *);  // virtual inherited (rmres) base (gpures)
132     void (*__vidmemAccessBitBufControlSerialization_Epilogue__)(struct VidmemAccessBitBuffer * /*this*/, struct CALL_CONTEXT *, struct RS_RES_CONTROL_PARAMS_INTERNAL *);  // virtual inherited (rmres) base (gpures)
133     NV_STATUS (*__vidmemAccessBitBufControl_Prologue__)(struct VidmemAccessBitBuffer * /*this*/, struct CALL_CONTEXT *, struct RS_RES_CONTROL_PARAMS_INTERNAL *);  // virtual inherited (rmres) base (gpures)
134     void (*__vidmemAccessBitBufControl_Epilogue__)(struct VidmemAccessBitBuffer * /*this*/, struct CALL_CONTEXT *, struct RS_RES_CONTROL_PARAMS_INTERNAL *);  // virtual inherited (rmres) base (gpures)
135     NvBool (*__vidmemAccessBitBufCanCopy__)(struct VidmemAccessBitBuffer * /*this*/);  // virtual inherited (res) base (gpures)
136     NV_STATUS (*__vidmemAccessBitBufIsDuplicate__)(struct VidmemAccessBitBuffer * /*this*/, NvHandle, NvBool *);  // virtual inherited (res) base (gpures)
137     void (*__vidmemAccessBitBufPreDestruct__)(struct VidmemAccessBitBuffer * /*this*/);  // virtual inherited (res) base (gpures)
138     NV_STATUS (*__vidmemAccessBitBufControlFilter__)(struct VidmemAccessBitBuffer * /*this*/, struct CALL_CONTEXT *, struct RS_RES_CONTROL_PARAMS_INTERNAL *);  // virtual inherited (res) base (gpures)
139     NvBool (*__vidmemAccessBitBufIsPartialUnmapSupported__)(struct VidmemAccessBitBuffer * /*this*/);  // inline virtual inherited (res) base (gpures) body
140     NV_STATUS (*__vidmemAccessBitBufMapTo__)(struct VidmemAccessBitBuffer * /*this*/, RS_RES_MAP_TO_PARAMS *);  // virtual inherited (res) base (gpures)
141     NV_STATUS (*__vidmemAccessBitBufUnmapFrom__)(struct VidmemAccessBitBuffer * /*this*/, RS_RES_UNMAP_FROM_PARAMS *);  // virtual inherited (res) base (gpures)
142     NvU32 (*__vidmemAccessBitBufGetRefCount__)(struct VidmemAccessBitBuffer * /*this*/);  // virtual inherited (res) base (gpures)
143     void (*__vidmemAccessBitBufAddAdditionalDependants__)(struct RsClient *, struct VidmemAccessBitBuffer * /*this*/, RsResourceRef *);  // virtual inherited (res) base (gpures)
144     PEVENTNOTIFICATION * (*__vidmemAccessBitBufGetNotificationListPtr__)(struct VidmemAccessBitBuffer * /*this*/);  // virtual inherited (notify) base (notify)
145     struct NotifShare * (*__vidmemAccessBitBufGetNotificationShare__)(struct VidmemAccessBitBuffer * /*this*/);  // virtual inherited (notify) base (notify)
146     void (*__vidmemAccessBitBufSetNotificationShare__)(struct VidmemAccessBitBuffer * /*this*/, struct NotifShare *);  // virtual inherited (notify) base (notify)
147     NV_STATUS (*__vidmemAccessBitBufUnregisterEvent__)(struct VidmemAccessBitBuffer * /*this*/, NvHandle, NvHandle, NvHandle, NvHandle);  // virtual inherited (notify) base (notify)
148     NV_STATUS (*__vidmemAccessBitBufGetOrAllocNotifShare__)(struct VidmemAccessBitBuffer * /*this*/, NvHandle, NvHandle, struct NotifShare **);  // virtual inherited (notify) base (notify)
149 };
150 
151 #ifndef __NVOC_CLASS_VidmemAccessBitBuffer_TYPEDEF__
152 #define __NVOC_CLASS_VidmemAccessBitBuffer_TYPEDEF__
153 typedef struct VidmemAccessBitBuffer VidmemAccessBitBuffer;
154 #endif /* __NVOC_CLASS_VidmemAccessBitBuffer_TYPEDEF__ */
155 
156 #ifndef __nvoc_class_id_VidmemAccessBitBuffer
157 #define __nvoc_class_id_VidmemAccessBitBuffer 0xebb6da
158 #endif /* __nvoc_class_id_VidmemAccessBitBuffer */
159 
160 // Casting support
161 extern const struct NVOC_CLASS_DEF __nvoc_class_def_VidmemAccessBitBuffer;
162 
163 #define __staticCast_VidmemAccessBitBuffer(pThis) \
164     ((pThis)->__nvoc_pbase_VidmemAccessBitBuffer)
165 
166 #ifdef __nvoc_vidmem_access_bit_buffer_h_disabled
167 #define __dynamicCast_VidmemAccessBitBuffer(pThis) ((VidmemAccessBitBuffer*)NULL)
168 #else //__nvoc_vidmem_access_bit_buffer_h_disabled
169 #define __dynamicCast_VidmemAccessBitBuffer(pThis) \
170     ((VidmemAccessBitBuffer*)__nvoc_dynamicCast(staticCast((pThis), Dynamic), classInfo(VidmemAccessBitBuffer)))
171 #endif //__nvoc_vidmem_access_bit_buffer_h_disabled
172 
173 NV_STATUS __nvoc_objCreateDynamic_VidmemAccessBitBuffer(VidmemAccessBitBuffer**, Dynamic*, NvU32, va_list);
174 
175 NV_STATUS __nvoc_objCreate_VidmemAccessBitBuffer(VidmemAccessBitBuffer**, Dynamic*, NvU32, CALL_CONTEXT * arg_pCallContext, struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams);
176 #define __objCreate_VidmemAccessBitBuffer(ppNewObj, pParent, createFlags, arg_pCallContext, arg_pParams) \
177     __nvoc_objCreate_VidmemAccessBitBuffer((ppNewObj), staticCast((pParent), Dynamic), (createFlags), arg_pCallContext, arg_pParams)
178 
179 
180 // Wrapper macros
181 #define vidmemAccessBitBufCtrlCmdVidmemAccessBitDump_FNPTR(pVidmemAccessBitBuffer) pVidmemAccessBitBuffer->__vidmemAccessBitBufCtrlCmdVidmemAccessBitDump__
182 #define vidmemAccessBitBufCtrlCmdVidmemAccessBitDump(pVidmemAccessBitBuffer, pParams) vidmemAccessBitBufCtrlCmdVidmemAccessBitDump_DISPATCH(pVidmemAccessBitBuffer, pParams)
183 #define vidmemAccessBitBufControl_FNPTR(pGpuResource) pGpuResource->__nvoc_base_GpuResource.__gpuresControl__
184 #define vidmemAccessBitBufControl(pGpuResource, pCallContext, pParams) vidmemAccessBitBufControl_DISPATCH(pGpuResource, pCallContext, pParams)
185 #define vidmemAccessBitBufMap_FNPTR(pGpuResource) pGpuResource->__nvoc_base_GpuResource.__gpuresMap__
186 #define vidmemAccessBitBufMap(pGpuResource, pCallContext, pParams, pCpuMapping) vidmemAccessBitBufMap_DISPATCH(pGpuResource, pCallContext, pParams, pCpuMapping)
187 #define vidmemAccessBitBufUnmap_FNPTR(pGpuResource) pGpuResource->__nvoc_base_GpuResource.__gpuresUnmap__
188 #define vidmemAccessBitBufUnmap(pGpuResource, pCallContext, pCpuMapping) vidmemAccessBitBufUnmap_DISPATCH(pGpuResource, pCallContext, pCpuMapping)
189 #define vidmemAccessBitBufShareCallback_FNPTR(pGpuResource) pGpuResource->__nvoc_base_GpuResource.__gpuresShareCallback__
190 #define vidmemAccessBitBufShareCallback(pGpuResource, pInvokingClient, pParentRef, pSharePolicy) vidmemAccessBitBufShareCallback_DISPATCH(pGpuResource, pInvokingClient, pParentRef, pSharePolicy)
191 #define vidmemAccessBitBufGetRegBaseOffsetAndSize_FNPTR(pGpuResource) pGpuResource->__nvoc_base_GpuResource.__gpuresGetRegBaseOffsetAndSize__
192 #define vidmemAccessBitBufGetRegBaseOffsetAndSize(pGpuResource, pGpu, pOffset, pSize) vidmemAccessBitBufGetRegBaseOffsetAndSize_DISPATCH(pGpuResource, pGpu, pOffset, pSize)
193 #define vidmemAccessBitBufGetMapAddrSpace_FNPTR(pGpuResource) pGpuResource->__nvoc_base_GpuResource.__gpuresGetMapAddrSpace__
194 #define vidmemAccessBitBufGetMapAddrSpace(pGpuResource, pCallContext, mapFlags, pAddrSpace) vidmemAccessBitBufGetMapAddrSpace_DISPATCH(pGpuResource, pCallContext, mapFlags, pAddrSpace)
195 #define vidmemAccessBitBufInternalControlForward_FNPTR(pGpuResource) pGpuResource->__nvoc_base_GpuResource.__gpuresInternalControlForward__
196 #define vidmemAccessBitBufInternalControlForward(pGpuResource, command, pParams, size) vidmemAccessBitBufInternalControlForward_DISPATCH(pGpuResource, command, pParams, size)
197 #define vidmemAccessBitBufGetInternalObjectHandle_FNPTR(pGpuResource) pGpuResource->__nvoc_base_GpuResource.__gpuresGetInternalObjectHandle__
198 #define vidmemAccessBitBufGetInternalObjectHandle(pGpuResource) vidmemAccessBitBufGetInternalObjectHandle_DISPATCH(pGpuResource)
199 #define vidmemAccessBitBufAccessCallback_FNPTR(pResource) pResource->__nvoc_base_GpuResource.__nvoc_base_RmResource.__rmresAccessCallback__
200 #define vidmemAccessBitBufAccessCallback(pResource, pInvokingClient, pAllocParams, accessRight) vidmemAccessBitBufAccessCallback_DISPATCH(pResource, pInvokingClient, pAllocParams, accessRight)
201 #define vidmemAccessBitBufGetMemInterMapParams_FNPTR(pRmResource) pRmResource->__nvoc_base_GpuResource.__nvoc_base_RmResource.__rmresGetMemInterMapParams__
202 #define vidmemAccessBitBufGetMemInterMapParams(pRmResource, pParams) vidmemAccessBitBufGetMemInterMapParams_DISPATCH(pRmResource, pParams)
203 #define vidmemAccessBitBufCheckMemInterUnmap_FNPTR(pRmResource) pRmResource->__nvoc_base_GpuResource.__nvoc_base_RmResource.__rmresCheckMemInterUnmap__
204 #define vidmemAccessBitBufCheckMemInterUnmap(pRmResource, bSubdeviceHandleProvided) vidmemAccessBitBufCheckMemInterUnmap_DISPATCH(pRmResource, bSubdeviceHandleProvided)
205 #define vidmemAccessBitBufGetMemoryMappingDescriptor_FNPTR(pRmResource) pRmResource->__nvoc_base_GpuResource.__nvoc_base_RmResource.__rmresGetMemoryMappingDescriptor__
206 #define vidmemAccessBitBufGetMemoryMappingDescriptor(pRmResource, ppMemDesc) vidmemAccessBitBufGetMemoryMappingDescriptor_DISPATCH(pRmResource, ppMemDesc)
207 #define vidmemAccessBitBufControlSerialization_Prologue_FNPTR(pResource) pResource->__nvoc_base_GpuResource.__nvoc_base_RmResource.__rmresControlSerialization_Prologue__
208 #define vidmemAccessBitBufControlSerialization_Prologue(pResource, pCallContext, pParams) vidmemAccessBitBufControlSerialization_Prologue_DISPATCH(pResource, pCallContext, pParams)
209 #define vidmemAccessBitBufControlSerialization_Epilogue_FNPTR(pResource) pResource->__nvoc_base_GpuResource.__nvoc_base_RmResource.__rmresControlSerialization_Epilogue__
210 #define vidmemAccessBitBufControlSerialization_Epilogue(pResource, pCallContext, pParams) vidmemAccessBitBufControlSerialization_Epilogue_DISPATCH(pResource, pCallContext, pParams)
211 #define vidmemAccessBitBufControl_Prologue_FNPTR(pResource) pResource->__nvoc_base_GpuResource.__nvoc_base_RmResource.__rmresControl_Prologue__
212 #define vidmemAccessBitBufControl_Prologue(pResource, pCallContext, pParams) vidmemAccessBitBufControl_Prologue_DISPATCH(pResource, pCallContext, pParams)
213 #define vidmemAccessBitBufControl_Epilogue_FNPTR(pResource) pResource->__nvoc_base_GpuResource.__nvoc_base_RmResource.__rmresControl_Epilogue__
214 #define vidmemAccessBitBufControl_Epilogue(pResource, pCallContext, pParams) vidmemAccessBitBufControl_Epilogue_DISPATCH(pResource, pCallContext, pParams)
215 #define vidmemAccessBitBufCanCopy_FNPTR(pResource) pResource->__nvoc_base_GpuResource.__nvoc_base_RmResource.__nvoc_base_RsResource.__resCanCopy__
216 #define vidmemAccessBitBufCanCopy(pResource) vidmemAccessBitBufCanCopy_DISPATCH(pResource)
217 #define vidmemAccessBitBufIsDuplicate_FNPTR(pResource) pResource->__nvoc_base_GpuResource.__nvoc_base_RmResource.__nvoc_base_RsResource.__resIsDuplicate__
218 #define vidmemAccessBitBufIsDuplicate(pResource, hMemory, pDuplicate) vidmemAccessBitBufIsDuplicate_DISPATCH(pResource, hMemory, pDuplicate)
219 #define vidmemAccessBitBufPreDestruct_FNPTR(pResource) pResource->__nvoc_base_GpuResource.__nvoc_base_RmResource.__nvoc_base_RsResource.__resPreDestruct__
220 #define vidmemAccessBitBufPreDestruct(pResource) vidmemAccessBitBufPreDestruct_DISPATCH(pResource)
221 #define vidmemAccessBitBufControlFilter_FNPTR(pResource) pResource->__nvoc_base_GpuResource.__nvoc_base_RmResource.__nvoc_base_RsResource.__resControlFilter__
222 #define vidmemAccessBitBufControlFilter(pResource, pCallContext, pParams) vidmemAccessBitBufControlFilter_DISPATCH(pResource, pCallContext, pParams)
223 #define vidmemAccessBitBufIsPartialUnmapSupported_FNPTR(pResource) pResource->__nvoc_base_GpuResource.__nvoc_base_RmResource.__nvoc_base_RsResource.__resIsPartialUnmapSupported__
224 #define vidmemAccessBitBufIsPartialUnmapSupported(pResource) vidmemAccessBitBufIsPartialUnmapSupported_DISPATCH(pResource)
225 #define vidmemAccessBitBufMapTo_FNPTR(pResource) pResource->__nvoc_base_GpuResource.__nvoc_base_RmResource.__nvoc_base_RsResource.__resMapTo__
226 #define vidmemAccessBitBufMapTo(pResource, pParams) vidmemAccessBitBufMapTo_DISPATCH(pResource, pParams)
227 #define vidmemAccessBitBufUnmapFrom_FNPTR(pResource) pResource->__nvoc_base_GpuResource.__nvoc_base_RmResource.__nvoc_base_RsResource.__resUnmapFrom__
228 #define vidmemAccessBitBufUnmapFrom(pResource, pParams) vidmemAccessBitBufUnmapFrom_DISPATCH(pResource, pParams)
229 #define vidmemAccessBitBufGetRefCount_FNPTR(pResource) pResource->__nvoc_base_GpuResource.__nvoc_base_RmResource.__nvoc_base_RsResource.__resGetRefCount__
230 #define vidmemAccessBitBufGetRefCount(pResource) vidmemAccessBitBufGetRefCount_DISPATCH(pResource)
231 #define vidmemAccessBitBufAddAdditionalDependants_FNPTR(pResource) pResource->__nvoc_base_GpuResource.__nvoc_base_RmResource.__nvoc_base_RsResource.__resAddAdditionalDependants__
232 #define vidmemAccessBitBufAddAdditionalDependants(pClient, pResource, pReference) vidmemAccessBitBufAddAdditionalDependants_DISPATCH(pClient, pResource, pReference)
233 #define vidmemAccessBitBufGetNotificationListPtr_FNPTR(pNotifier) pNotifier->__nvoc_base_Notifier.__notifyGetNotificationListPtr__
234 #define vidmemAccessBitBufGetNotificationListPtr(pNotifier) vidmemAccessBitBufGetNotificationListPtr_DISPATCH(pNotifier)
235 #define vidmemAccessBitBufGetNotificationShare_FNPTR(pNotifier) pNotifier->__nvoc_base_Notifier.__notifyGetNotificationShare__
236 #define vidmemAccessBitBufGetNotificationShare(pNotifier) vidmemAccessBitBufGetNotificationShare_DISPATCH(pNotifier)
237 #define vidmemAccessBitBufSetNotificationShare_FNPTR(pNotifier) pNotifier->__nvoc_base_Notifier.__notifySetNotificationShare__
238 #define vidmemAccessBitBufSetNotificationShare(pNotifier, pNotifShare) vidmemAccessBitBufSetNotificationShare_DISPATCH(pNotifier, pNotifShare)
239 #define vidmemAccessBitBufUnregisterEvent_FNPTR(pNotifier) pNotifier->__nvoc_base_Notifier.__notifyUnregisterEvent__
240 #define vidmemAccessBitBufUnregisterEvent(pNotifier, hNotifierClient, hNotifierResource, hEventClient, hEvent) vidmemAccessBitBufUnregisterEvent_DISPATCH(pNotifier, hNotifierClient, hNotifierResource, hEventClient, hEvent)
241 #define vidmemAccessBitBufGetOrAllocNotifShare_FNPTR(pNotifier) pNotifier->__nvoc_base_Notifier.__notifyGetOrAllocNotifShare__
242 #define vidmemAccessBitBufGetOrAllocNotifShare(pNotifier, hNotifierClient, hNotifierResource, ppNotifShare) vidmemAccessBitBufGetOrAllocNotifShare_DISPATCH(pNotifier, hNotifierClient, hNotifierResource, ppNotifShare)
243 
244 // Dispatch functions
vidmemAccessBitBufCtrlCmdVidmemAccessBitDump_DISPATCH(struct VidmemAccessBitBuffer * pVidmemAccessBitBuffer,NVC763_CTRL_VIDMEM_ACCESS_BIT_BUFFER_DUMP_PARAMS * pParams)245 static inline NV_STATUS vidmemAccessBitBufCtrlCmdVidmemAccessBitDump_DISPATCH(struct VidmemAccessBitBuffer *pVidmemAccessBitBuffer, NVC763_CTRL_VIDMEM_ACCESS_BIT_BUFFER_DUMP_PARAMS *pParams) {
246     return pVidmemAccessBitBuffer->__vidmemAccessBitBufCtrlCmdVidmemAccessBitDump__(pVidmemAccessBitBuffer, pParams);
247 }
248 
vidmemAccessBitBufControl_DISPATCH(struct VidmemAccessBitBuffer * pGpuResource,struct CALL_CONTEXT * pCallContext,struct RS_RES_CONTROL_PARAMS_INTERNAL * pParams)249 static inline NV_STATUS vidmemAccessBitBufControl_DISPATCH(struct VidmemAccessBitBuffer *pGpuResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
250     return pGpuResource->__vidmemAccessBitBufControl__(pGpuResource, pCallContext, pParams);
251 }
252 
vidmemAccessBitBufMap_DISPATCH(struct VidmemAccessBitBuffer * pGpuResource,struct CALL_CONTEXT * pCallContext,struct RS_CPU_MAP_PARAMS * pParams,struct RsCpuMapping * pCpuMapping)253 static inline NV_STATUS vidmemAccessBitBufMap_DISPATCH(struct VidmemAccessBitBuffer *pGpuResource, struct CALL_CONTEXT *pCallContext, struct RS_CPU_MAP_PARAMS *pParams, struct RsCpuMapping *pCpuMapping) {
254     return pGpuResource->__vidmemAccessBitBufMap__(pGpuResource, pCallContext, pParams, pCpuMapping);
255 }
256 
vidmemAccessBitBufUnmap_DISPATCH(struct VidmemAccessBitBuffer * pGpuResource,struct CALL_CONTEXT * pCallContext,struct RsCpuMapping * pCpuMapping)257 static inline NV_STATUS vidmemAccessBitBufUnmap_DISPATCH(struct VidmemAccessBitBuffer *pGpuResource, struct CALL_CONTEXT *pCallContext, struct RsCpuMapping *pCpuMapping) {
258     return pGpuResource->__vidmemAccessBitBufUnmap__(pGpuResource, pCallContext, pCpuMapping);
259 }
260 
vidmemAccessBitBufShareCallback_DISPATCH(struct VidmemAccessBitBuffer * pGpuResource,struct RsClient * pInvokingClient,struct RsResourceRef * pParentRef,RS_SHARE_POLICY * pSharePolicy)261 static inline NvBool vidmemAccessBitBufShareCallback_DISPATCH(struct VidmemAccessBitBuffer *pGpuResource, struct RsClient *pInvokingClient, struct RsResourceRef *pParentRef, RS_SHARE_POLICY *pSharePolicy) {
262     return pGpuResource->__vidmemAccessBitBufShareCallback__(pGpuResource, pInvokingClient, pParentRef, pSharePolicy);
263 }
264 
vidmemAccessBitBufGetRegBaseOffsetAndSize_DISPATCH(struct VidmemAccessBitBuffer * pGpuResource,struct OBJGPU * pGpu,NvU32 * pOffset,NvU32 * pSize)265 static inline NV_STATUS vidmemAccessBitBufGetRegBaseOffsetAndSize_DISPATCH(struct VidmemAccessBitBuffer *pGpuResource, struct OBJGPU *pGpu, NvU32 *pOffset, NvU32 *pSize) {
266     return pGpuResource->__vidmemAccessBitBufGetRegBaseOffsetAndSize__(pGpuResource, pGpu, pOffset, pSize);
267 }
268 
vidmemAccessBitBufGetMapAddrSpace_DISPATCH(struct VidmemAccessBitBuffer * pGpuResource,struct CALL_CONTEXT * pCallContext,NvU32 mapFlags,NV_ADDRESS_SPACE * pAddrSpace)269 static inline NV_STATUS vidmemAccessBitBufGetMapAddrSpace_DISPATCH(struct VidmemAccessBitBuffer *pGpuResource, struct CALL_CONTEXT *pCallContext, NvU32 mapFlags, NV_ADDRESS_SPACE *pAddrSpace) {
270     return pGpuResource->__vidmemAccessBitBufGetMapAddrSpace__(pGpuResource, pCallContext, mapFlags, pAddrSpace);
271 }
272 
vidmemAccessBitBufInternalControlForward_DISPATCH(struct VidmemAccessBitBuffer * pGpuResource,NvU32 command,void * pParams,NvU32 size)273 static inline NV_STATUS vidmemAccessBitBufInternalControlForward_DISPATCH(struct VidmemAccessBitBuffer *pGpuResource, NvU32 command, void *pParams, NvU32 size) {
274     return pGpuResource->__vidmemAccessBitBufInternalControlForward__(pGpuResource, command, pParams, size);
275 }
276 
vidmemAccessBitBufGetInternalObjectHandle_DISPATCH(struct VidmemAccessBitBuffer * pGpuResource)277 static inline NvHandle vidmemAccessBitBufGetInternalObjectHandle_DISPATCH(struct VidmemAccessBitBuffer *pGpuResource) {
278     return pGpuResource->__vidmemAccessBitBufGetInternalObjectHandle__(pGpuResource);
279 }
280 
vidmemAccessBitBufAccessCallback_DISPATCH(struct VidmemAccessBitBuffer * pResource,struct RsClient * pInvokingClient,void * pAllocParams,RsAccessRight accessRight)281 static inline NvBool vidmemAccessBitBufAccessCallback_DISPATCH(struct VidmemAccessBitBuffer *pResource, struct RsClient *pInvokingClient, void *pAllocParams, RsAccessRight accessRight) {
282     return pResource->__vidmemAccessBitBufAccessCallback__(pResource, pInvokingClient, pAllocParams, accessRight);
283 }
284 
vidmemAccessBitBufGetMemInterMapParams_DISPATCH(struct VidmemAccessBitBuffer * pRmResource,RMRES_MEM_INTER_MAP_PARAMS * pParams)285 static inline NV_STATUS vidmemAccessBitBufGetMemInterMapParams_DISPATCH(struct VidmemAccessBitBuffer *pRmResource, RMRES_MEM_INTER_MAP_PARAMS *pParams) {
286     return pRmResource->__vidmemAccessBitBufGetMemInterMapParams__(pRmResource, pParams);
287 }
288 
vidmemAccessBitBufCheckMemInterUnmap_DISPATCH(struct VidmemAccessBitBuffer * pRmResource,NvBool bSubdeviceHandleProvided)289 static inline NV_STATUS vidmemAccessBitBufCheckMemInterUnmap_DISPATCH(struct VidmemAccessBitBuffer *pRmResource, NvBool bSubdeviceHandleProvided) {
290     return pRmResource->__vidmemAccessBitBufCheckMemInterUnmap__(pRmResource, bSubdeviceHandleProvided);
291 }
292 
vidmemAccessBitBufGetMemoryMappingDescriptor_DISPATCH(struct VidmemAccessBitBuffer * pRmResource,struct MEMORY_DESCRIPTOR ** ppMemDesc)293 static inline NV_STATUS vidmemAccessBitBufGetMemoryMappingDescriptor_DISPATCH(struct VidmemAccessBitBuffer *pRmResource, struct MEMORY_DESCRIPTOR **ppMemDesc) {
294     return pRmResource->__vidmemAccessBitBufGetMemoryMappingDescriptor__(pRmResource, ppMemDesc);
295 }
296 
vidmemAccessBitBufControlSerialization_Prologue_DISPATCH(struct VidmemAccessBitBuffer * pResource,struct CALL_CONTEXT * pCallContext,struct RS_RES_CONTROL_PARAMS_INTERNAL * pParams)297 static inline NV_STATUS vidmemAccessBitBufControlSerialization_Prologue_DISPATCH(struct VidmemAccessBitBuffer *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
298     return pResource->__vidmemAccessBitBufControlSerialization_Prologue__(pResource, pCallContext, pParams);
299 }
300 
vidmemAccessBitBufControlSerialization_Epilogue_DISPATCH(struct VidmemAccessBitBuffer * pResource,struct CALL_CONTEXT * pCallContext,struct RS_RES_CONTROL_PARAMS_INTERNAL * pParams)301 static inline void vidmemAccessBitBufControlSerialization_Epilogue_DISPATCH(struct VidmemAccessBitBuffer *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
302     pResource->__vidmemAccessBitBufControlSerialization_Epilogue__(pResource, pCallContext, pParams);
303 }
304 
vidmemAccessBitBufControl_Prologue_DISPATCH(struct VidmemAccessBitBuffer * pResource,struct CALL_CONTEXT * pCallContext,struct RS_RES_CONTROL_PARAMS_INTERNAL * pParams)305 static inline NV_STATUS vidmemAccessBitBufControl_Prologue_DISPATCH(struct VidmemAccessBitBuffer *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
306     return pResource->__vidmemAccessBitBufControl_Prologue__(pResource, pCallContext, pParams);
307 }
308 
vidmemAccessBitBufControl_Epilogue_DISPATCH(struct VidmemAccessBitBuffer * pResource,struct CALL_CONTEXT * pCallContext,struct RS_RES_CONTROL_PARAMS_INTERNAL * pParams)309 static inline void vidmemAccessBitBufControl_Epilogue_DISPATCH(struct VidmemAccessBitBuffer *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
310     pResource->__vidmemAccessBitBufControl_Epilogue__(pResource, pCallContext, pParams);
311 }
312 
vidmemAccessBitBufCanCopy_DISPATCH(struct VidmemAccessBitBuffer * pResource)313 static inline NvBool vidmemAccessBitBufCanCopy_DISPATCH(struct VidmemAccessBitBuffer *pResource) {
314     return pResource->__vidmemAccessBitBufCanCopy__(pResource);
315 }
316 
vidmemAccessBitBufIsDuplicate_DISPATCH(struct VidmemAccessBitBuffer * pResource,NvHandle hMemory,NvBool * pDuplicate)317 static inline NV_STATUS vidmemAccessBitBufIsDuplicate_DISPATCH(struct VidmemAccessBitBuffer *pResource, NvHandle hMemory, NvBool *pDuplicate) {
318     return pResource->__vidmemAccessBitBufIsDuplicate__(pResource, hMemory, pDuplicate);
319 }
320 
vidmemAccessBitBufPreDestruct_DISPATCH(struct VidmemAccessBitBuffer * pResource)321 static inline void vidmemAccessBitBufPreDestruct_DISPATCH(struct VidmemAccessBitBuffer *pResource) {
322     pResource->__vidmemAccessBitBufPreDestruct__(pResource);
323 }
324 
vidmemAccessBitBufControlFilter_DISPATCH(struct VidmemAccessBitBuffer * pResource,struct CALL_CONTEXT * pCallContext,struct RS_RES_CONTROL_PARAMS_INTERNAL * pParams)325 static inline NV_STATUS vidmemAccessBitBufControlFilter_DISPATCH(struct VidmemAccessBitBuffer *pResource, struct CALL_CONTEXT *pCallContext, struct RS_RES_CONTROL_PARAMS_INTERNAL *pParams) {
326     return pResource->__vidmemAccessBitBufControlFilter__(pResource, pCallContext, pParams);
327 }
328 
vidmemAccessBitBufIsPartialUnmapSupported_DISPATCH(struct VidmemAccessBitBuffer * pResource)329 static inline NvBool vidmemAccessBitBufIsPartialUnmapSupported_DISPATCH(struct VidmemAccessBitBuffer *pResource) {
330     return pResource->__vidmemAccessBitBufIsPartialUnmapSupported__(pResource);
331 }
332 
vidmemAccessBitBufMapTo_DISPATCH(struct VidmemAccessBitBuffer * pResource,RS_RES_MAP_TO_PARAMS * pParams)333 static inline NV_STATUS vidmemAccessBitBufMapTo_DISPATCH(struct VidmemAccessBitBuffer *pResource, RS_RES_MAP_TO_PARAMS *pParams) {
334     return pResource->__vidmemAccessBitBufMapTo__(pResource, pParams);
335 }
336 
vidmemAccessBitBufUnmapFrom_DISPATCH(struct VidmemAccessBitBuffer * pResource,RS_RES_UNMAP_FROM_PARAMS * pParams)337 static inline NV_STATUS vidmemAccessBitBufUnmapFrom_DISPATCH(struct VidmemAccessBitBuffer *pResource, RS_RES_UNMAP_FROM_PARAMS *pParams) {
338     return pResource->__vidmemAccessBitBufUnmapFrom__(pResource, pParams);
339 }
340 
vidmemAccessBitBufGetRefCount_DISPATCH(struct VidmemAccessBitBuffer * pResource)341 static inline NvU32 vidmemAccessBitBufGetRefCount_DISPATCH(struct VidmemAccessBitBuffer *pResource) {
342     return pResource->__vidmemAccessBitBufGetRefCount__(pResource);
343 }
344 
vidmemAccessBitBufAddAdditionalDependants_DISPATCH(struct RsClient * pClient,struct VidmemAccessBitBuffer * pResource,RsResourceRef * pReference)345 static inline void vidmemAccessBitBufAddAdditionalDependants_DISPATCH(struct RsClient *pClient, struct VidmemAccessBitBuffer *pResource, RsResourceRef *pReference) {
346     pResource->__vidmemAccessBitBufAddAdditionalDependants__(pClient, pResource, pReference);
347 }
348 
vidmemAccessBitBufGetNotificationListPtr_DISPATCH(struct VidmemAccessBitBuffer * pNotifier)349 static inline PEVENTNOTIFICATION * vidmemAccessBitBufGetNotificationListPtr_DISPATCH(struct VidmemAccessBitBuffer *pNotifier) {
350     return pNotifier->__vidmemAccessBitBufGetNotificationListPtr__(pNotifier);
351 }
352 
vidmemAccessBitBufGetNotificationShare_DISPATCH(struct VidmemAccessBitBuffer * pNotifier)353 static inline struct NotifShare * vidmemAccessBitBufGetNotificationShare_DISPATCH(struct VidmemAccessBitBuffer *pNotifier) {
354     return pNotifier->__vidmemAccessBitBufGetNotificationShare__(pNotifier);
355 }
356 
vidmemAccessBitBufSetNotificationShare_DISPATCH(struct VidmemAccessBitBuffer * pNotifier,struct NotifShare * pNotifShare)357 static inline void vidmemAccessBitBufSetNotificationShare_DISPATCH(struct VidmemAccessBitBuffer *pNotifier, struct NotifShare *pNotifShare) {
358     pNotifier->__vidmemAccessBitBufSetNotificationShare__(pNotifier, pNotifShare);
359 }
360 
vidmemAccessBitBufUnregisterEvent_DISPATCH(struct VidmemAccessBitBuffer * pNotifier,NvHandle hNotifierClient,NvHandle hNotifierResource,NvHandle hEventClient,NvHandle hEvent)361 static inline NV_STATUS vidmemAccessBitBufUnregisterEvent_DISPATCH(struct VidmemAccessBitBuffer *pNotifier, NvHandle hNotifierClient, NvHandle hNotifierResource, NvHandle hEventClient, NvHandle hEvent) {
362     return pNotifier->__vidmemAccessBitBufUnregisterEvent__(pNotifier, hNotifierClient, hNotifierResource, hEventClient, hEvent);
363 }
364 
vidmemAccessBitBufGetOrAllocNotifShare_DISPATCH(struct VidmemAccessBitBuffer * pNotifier,NvHandle hNotifierClient,NvHandle hNotifierResource,struct NotifShare ** ppNotifShare)365 static inline NV_STATUS vidmemAccessBitBufGetOrAllocNotifShare_DISPATCH(struct VidmemAccessBitBuffer *pNotifier, NvHandle hNotifierClient, NvHandle hNotifierResource, struct NotifShare **ppNotifShare) {
366     return pNotifier->__vidmemAccessBitBufGetOrAllocNotifShare__(pNotifier, hNotifierClient, hNotifierResource, ppNotifShare);
367 }
368 
369 NV_STATUS vidmemAccessBitBufConstructHelper_KERNEL(struct VidmemAccessBitBuffer *pVidmem, CALL_CONTEXT *pCallContext, struct RS_RES_ALLOC_PARAMS_INTERNAL *pParams);
370 
371 
372 #ifdef __nvoc_vidmem_access_bit_buffer_h_disabled
vidmemAccessBitBufConstructHelper(struct VidmemAccessBitBuffer * pVidmem,CALL_CONTEXT * pCallContext,struct RS_RES_ALLOC_PARAMS_INTERNAL * pParams)373 static inline NV_STATUS vidmemAccessBitBufConstructHelper(struct VidmemAccessBitBuffer *pVidmem, CALL_CONTEXT *pCallContext, struct RS_RES_ALLOC_PARAMS_INTERNAL *pParams) {
374     NV_ASSERT_FAILED_PRECOMP("VidmemAccessBitBuffer was disabled!");
375     return NV_ERR_NOT_SUPPORTED;
376 }
377 #else //__nvoc_vidmem_access_bit_buffer_h_disabled
378 #define vidmemAccessBitBufConstructHelper(pVidmem, pCallContext, pParams) vidmemAccessBitBufConstructHelper_KERNEL(pVidmem, pCallContext, pParams)
379 #endif //__nvoc_vidmem_access_bit_buffer_h_disabled
380 
381 #define vidmemAccessBitBufConstructHelper_HAL(pVidmem, pCallContext, pParams) vidmemAccessBitBufConstructHelper(pVidmem, pCallContext, pParams)
382 
vidmemAccessBitBufDestruct_b3696a(struct VidmemAccessBitBuffer * pVidmemAccessBitBuffer)383 static inline void vidmemAccessBitBufDestruct_b3696a(struct VidmemAccessBitBuffer *pVidmemAccessBitBuffer) {
384     return;
385 }
386 
387 
388 #define __nvoc_vidmemAccessBitBufDestruct(pVidmemAccessBitBuffer) vidmemAccessBitBufDestruct_b3696a(pVidmemAccessBitBuffer)
389 NV_STATUS vidmemAccessBitBufCtrlCmdVidmemAccessBitDump_IMPL(struct VidmemAccessBitBuffer *pVidmemAccessBitBuffer, NVC763_CTRL_VIDMEM_ACCESS_BIT_BUFFER_DUMP_PARAMS *pParams);
390 
__nvoc_vidmemAccessBitBufConstruct(struct VidmemAccessBitBuffer * arg_pVidmemAccessBitBuffer,CALL_CONTEXT * arg_pCallContext,struct RS_RES_ALLOC_PARAMS_INTERNAL * arg_pParams)391 static inline NV_STATUS __nvoc_vidmemAccessBitBufConstruct(struct VidmemAccessBitBuffer *arg_pVidmemAccessBitBuffer, CALL_CONTEXT *arg_pCallContext, struct RS_RES_ALLOC_PARAMS_INTERNAL *arg_pParams) {
392     return vidmemAccessBitBufConstructHelper(arg_pVidmemAccessBitBuffer, arg_pCallContext, arg_pParams);
393 }
394 
395 #undef PRIVATE_FIELD
396 
397 
398 #endif // VIDMEM_ACCESS_BIT_BUFFER_H
399 
400 #ifdef __cplusplus
401 } // extern "C"
402 #endif
403 
404 #endif // _G_VIDMEM_ACCESS_BIT_BUFFER_NVOC_H_
405