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