1 #ifndef _G_FABRIC_VASPACE_NVOC_H_
2 #define _G_FABRIC_VASPACE_NVOC_H_
3 #include "nvoc/runtime.h"
4
5 #ifdef __cplusplus
6 extern "C" {
7 #endif
8
9 /*
10 * SPDX-FileCopyrightText: Copyright (c) 2021-2023 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_fabric_vaspace_nvoc.h"
33
34 #ifndef FABRIC_VASPACE_H
35 #define FABRIC_VASPACE_H
36
37 /**************** Resource Manager Defines and Structures ******************\
38 * *
39 * Module: fabric_vaspace.h *
40 * Defines and structures used for Fabric Virtual Address Space Object. *
41 \***************************************************************************/
42
43 #include "mmu/mmu_walk.h"
44 #include "mmu/gmmu_fmt.h"
45 #include "core/core.h"
46 #include "mem_mgr/vaspace.h"
47 #include "mem_mgr/gpu_vaspace.h"
48 #include "gpu/mem_mgr/virt_mem_allocator.h"
49 #include "ctrl/ctrl0080/ctrl0080dma.h"
50 #include "ctrl/ctrl90f1.h"
51 #include "gpu/mem_mgr/mem_desc.h"
52
53 #include "containers/list.h"
54 #include "containers/map.h"
55 #include "mem_mgr/pool_alloc.h"
56
57 typedef struct
58 {
59 NODE Node;
60 MEMORY_DESCRIPTOR *pVidMemDesc;
61 NvU64 offset;
62 } FABRIC_VA_TO_GPA_MAP_NODE;
63
64 #define FABRIC_VASPACE_MAP_FLAGS_READ_ONLY NVBIT(0)
65
66 /*!
67 * RM-registered/managed Fabric virtual address space.
68 */
69
70 // Private field names are wrapped in PRIVATE_FIELD, which does nothing for
71 // the matching C source file, but causes diagnostics to be issued if another
72 // source file references the field.
73 #ifdef NVOC_FABRIC_VASPACE_H_PRIVATE_ACCESS_ALLOWED
74 #define PRIVATE_FIELD(x) x
75 #else
76 #define PRIVATE_FIELD(x) NVOC_PRIVATE_FIELD(x)
77 #endif
78
79 struct FABRIC_VASPACE {
80 const struct NVOC_RTTI *__nvoc_rtti;
81 struct OBJVASPACE __nvoc_base_OBJVASPACE;
82 struct Object *__nvoc_pbase_Object;
83 struct OBJVASPACE *__nvoc_pbase_OBJVASPACE;
84 struct FABRIC_VASPACE *__nvoc_pbase_FABRIC_VASPACE;
85 NV_STATUS (*__fabricvaspaceConstruct___)(struct FABRIC_VASPACE *, NvU32, NvU32, NvU64, NvU64, NvU64, NvU64, NvU32);
86 NV_STATUS (*__fabricvaspaceAlloc__)(struct FABRIC_VASPACE *, NvU64, NvU64, NvU64, NvU64, NvU64, VAS_ALLOC_FLAGS, NvU64 *);
87 NV_STATUS (*__fabricvaspaceFree__)(struct FABRIC_VASPACE *, NvU64);
88 NV_STATUS (*__fabricvaspaceMap__)(struct FABRIC_VASPACE *, struct OBJGPU *, const NvU64, const NvU64, const MMU_MAP_TARGET *, const VAS_MAP_FLAGS);
89 void (*__fabricvaspaceUnmap__)(struct FABRIC_VASPACE *, struct OBJGPU *, const NvU64, const NvU64);
90 NV_STATUS (*__fabricvaspaceApplyDefaultAlignment__)(struct FABRIC_VASPACE *, const FB_ALLOC_INFO *, NvU64 *, NvU64 *, NvU64 *);
91 NV_STATUS (*__fabricvaspaceGetVasInfo__)(struct FABRIC_VASPACE *, NV0080_CTRL_DMA_ADV_SCHED_GET_VA_CAPS_PARAMS *);
92 NV_STATUS (*__fabricvaspacePinRootPageDir__)(struct FABRIC_VASPACE *, struct OBJGPU *);
93 void (*__fabricvaspaceUnpinRootPageDir__)(struct FABRIC_VASPACE *, struct OBJGPU *);
94 void (*__fabricvaspaceInvalidateTlb__)(struct FABRIC_VASPACE *, struct OBJGPU *, VAS_PTE_UPDATE_TYPE);
95 NvBool (*__fabricvaspaceIsMirrored__)(struct FABRIC_VASPACE *);
96 NvBool (*__fabricvaspaceIsExternallyOwned__)(struct FABRIC_VASPACE *);
97 NvU32 (*__fabricvaspaceGetFlags__)(struct FABRIC_VASPACE *);
98 NvBool (*__fabricvaspaceIsAtsEnabled__)(struct FABRIC_VASPACE *);
99 NvU64 (*__fabricvaspaceGetBigPageSize__)(struct FABRIC_VASPACE *);
100 NV_STATUS (*__fabricvaspaceGetPteInfo__)(struct FABRIC_VASPACE *, struct OBJGPU *, NV0080_CTRL_DMA_GET_PTE_INFO_PARAMS *, RmPhysAddr *);
101 NvU64 (*__fabricvaspaceGetVaLimit__)(struct FABRIC_VASPACE *);
102 PMEMORY_DESCRIPTOR (*__fabricvaspaceGetPageDirBase__)(struct FABRIC_VASPACE *, struct OBJGPU *);
103 PMEMORY_DESCRIPTOR (*__fabricvaspaceGetKernelPageDirBase__)(struct FABRIC_VASPACE *, struct OBJGPU *);
104 NvU64 (*__fabricvaspaceGetMapPageSize__)(struct FABRIC_VASPACE *, struct OBJGPU *, struct EMEMBLOCK *);
105 struct OBJEHEAP *(*__fabricvaspaceGetHeap__)(struct FABRIC_VASPACE *);
106 NvBool (*__fabricvaspaceIsFaultCapable__)(struct FABRIC_VASPACE *);
107 NvU64 (*__fabricvaspaceGetVaStart__)(struct FABRIC_VASPACE *);
108 NV_STATUS (*__fabricvaspaceIncAllocRefCnt__)(struct FABRIC_VASPACE *, NvU64);
109 NV_STATUS (*__fabricvaspaceSetPteInfo__)(struct FABRIC_VASPACE *, struct OBJGPU *, NV0080_CTRL_DMA_SET_PTE_INFO_PARAMS *);
110 NV_STATUS (*__fabricvaspaceFreeV2__)(struct FABRIC_VASPACE *, NvU64, NvU64 *);
111 NV_STATUS (*__fabricvaspaceGetPasid__)(struct FABRIC_VASPACE *, NvU32 *);
112 NV_STATUS (*__fabricvaspaceGetPageTableInfo__)(struct FABRIC_VASPACE *, NV0080_CTRL_DMA_GET_PDE_INFO_PARAMS *);
113 NV_STATUS (*__fabricvaspaceReserveMempool__)(struct FABRIC_VASPACE *, struct OBJGPU *, struct Device *, NvU64, NvU64, NvU32);
114 struct OBJVASPACE *pGVAS;
115 NvU32 flags;
116 NvHandle hClient;
117 NvHandle hDevice;
118 NODE *pFabricVaToGpaMap;
119 NvU64 ucFabricBase;
120 NvU64 ucFabricLimit;
121 NvU64 ucFabricInUseSize;
122 NvU64 ucFabricFreeSize;
123 NvU32 gfid;
124 NvBool bRpcAlloc;
125 };
126
127 #ifndef __NVOC_CLASS_FABRIC_VASPACE_TYPEDEF__
128 #define __NVOC_CLASS_FABRIC_VASPACE_TYPEDEF__
129 typedef struct FABRIC_VASPACE FABRIC_VASPACE;
130 #endif /* __NVOC_CLASS_FABRIC_VASPACE_TYPEDEF__ */
131
132 #ifndef __nvoc_class_id_FABRIC_VASPACE
133 #define __nvoc_class_id_FABRIC_VASPACE 0x8c8f3d
134 #endif /* __nvoc_class_id_FABRIC_VASPACE */
135
136 extern const struct NVOC_CLASS_DEF __nvoc_class_def_FABRIC_VASPACE;
137
138 #define __staticCast_FABRIC_VASPACE(pThis) \
139 ((pThis)->__nvoc_pbase_FABRIC_VASPACE)
140
141 #ifdef __nvoc_fabric_vaspace_h_disabled
142 #define __dynamicCast_FABRIC_VASPACE(pThis) ((FABRIC_VASPACE*)NULL)
143 #else //__nvoc_fabric_vaspace_h_disabled
144 #define __dynamicCast_FABRIC_VASPACE(pThis) \
145 ((FABRIC_VASPACE*)__nvoc_dynamicCast(staticCast((pThis), Dynamic), classInfo(FABRIC_VASPACE)))
146 #endif //__nvoc_fabric_vaspace_h_disabled
147
148
149 NV_STATUS __nvoc_objCreateDynamic_FABRIC_VASPACE(FABRIC_VASPACE**, Dynamic*, NvU32, va_list);
150
151 NV_STATUS __nvoc_objCreate_FABRIC_VASPACE(FABRIC_VASPACE**, Dynamic*, NvU32);
152 #define __objCreate_FABRIC_VASPACE(ppNewObj, pParent, createFlags) \
153 __nvoc_objCreate_FABRIC_VASPACE((ppNewObj), staticCast((pParent), Dynamic), (createFlags))
154
155 #define fabricvaspaceConstruct_(pFabricVAS, classId, vaspaceId, vaStart, vaLimit, vaStartInternal, vaLimitInternal, flags) fabricvaspaceConstruct__DISPATCH(pFabricVAS, classId, vaspaceId, vaStart, vaLimit, vaStartInternal, vaLimitInternal, flags)
156 #define fabricvaspaceAlloc(pFabricVAS, size, align, rangeLo, rangeHi, pageSize, flags, pAddr) fabricvaspaceAlloc_DISPATCH(pFabricVAS, size, align, rangeLo, rangeHi, pageSize, flags, pAddr)
157 #define fabricvaspaceFree(pFabricVAS, vAddr) fabricvaspaceFree_DISPATCH(pFabricVAS, vAddr)
158 #define fabricvaspaceMap(pFabricVAS, pGpu, vaLo, vaHi, pTarget, flags) fabricvaspaceMap_DISPATCH(pFabricVAS, pGpu, vaLo, vaHi, pTarget, flags)
159 #define fabricvaspaceUnmap(pFabricVAS, pGpu, vaLo, vaHi) fabricvaspaceUnmap_DISPATCH(pFabricVAS, pGpu, vaLo, vaHi)
160 #define fabricvaspaceApplyDefaultAlignment(pFabricVAS, pAllocInfo, pAlign, pSize, pPageSizeLockMask) fabricvaspaceApplyDefaultAlignment_DISPATCH(pFabricVAS, pAllocInfo, pAlign, pSize, pPageSizeLockMask)
161 #define fabricvaspaceGetVasInfo(pFabricVAS, pParams) fabricvaspaceGetVasInfo_DISPATCH(pFabricVAS, pParams)
162 #define fabricvaspacePinRootPageDir(pFabricVAS, pGpu) fabricvaspacePinRootPageDir_DISPATCH(pFabricVAS, pGpu)
163 #define fabricvaspaceUnpinRootPageDir(pFabricVAS, pGpu) fabricvaspaceUnpinRootPageDir_DISPATCH(pFabricVAS, pGpu)
164 #define fabricvaspaceInvalidateTlb(pFabricVAS, pGpu, type) fabricvaspaceInvalidateTlb_DISPATCH(pFabricVAS, pGpu, type)
165 #define fabricvaspaceIsMirrored(pVAS) fabricvaspaceIsMirrored_DISPATCH(pVAS)
166 #define fabricvaspaceIsExternallyOwned(pVAS) fabricvaspaceIsExternallyOwned_DISPATCH(pVAS)
167 #define fabricvaspaceGetFlags(pVAS) fabricvaspaceGetFlags_DISPATCH(pVAS)
168 #define fabricvaspaceIsAtsEnabled(pVAS) fabricvaspaceIsAtsEnabled_DISPATCH(pVAS)
169 #define fabricvaspaceGetBigPageSize(pVAS) fabricvaspaceGetBigPageSize_DISPATCH(pVAS)
170 #define fabricvaspaceGetPteInfo(pVAS, pGpu, pParams, pPhysAddr) fabricvaspaceGetPteInfo_DISPATCH(pVAS, pGpu, pParams, pPhysAddr)
171 #define fabricvaspaceGetVaLimit(pVAS) fabricvaspaceGetVaLimit_DISPATCH(pVAS)
172 #define fabricvaspaceGetPageDirBase(pVAS, pGpu) fabricvaspaceGetPageDirBase_DISPATCH(pVAS, pGpu)
173 #define fabricvaspaceGetKernelPageDirBase(pVAS, pGpu) fabricvaspaceGetKernelPageDirBase_DISPATCH(pVAS, pGpu)
174 #define fabricvaspaceGetMapPageSize(pVAS, pGpu, pMemBlock) fabricvaspaceGetMapPageSize_DISPATCH(pVAS, pGpu, pMemBlock)
175 #define fabricvaspaceGetHeap(pVAS) fabricvaspaceGetHeap_DISPATCH(pVAS)
176 #define fabricvaspaceIsFaultCapable(pVAS) fabricvaspaceIsFaultCapable_DISPATCH(pVAS)
177 #define fabricvaspaceGetVaStart(pVAS) fabricvaspaceGetVaStart_DISPATCH(pVAS)
178 #define fabricvaspaceIncAllocRefCnt(pVAS, vAddr) fabricvaspaceIncAllocRefCnt_DISPATCH(pVAS, vAddr)
179 #define fabricvaspaceSetPteInfo(pVAS, pGpu, pParams) fabricvaspaceSetPteInfo_DISPATCH(pVAS, pGpu, pParams)
180 #define fabricvaspaceFreeV2(pVAS, vAddr, pSize) fabricvaspaceFreeV2_DISPATCH(pVAS, vAddr, pSize)
181 #define fabricvaspaceGetPasid(pVAS, pPasid) fabricvaspaceGetPasid_DISPATCH(pVAS, pPasid)
182 #define fabricvaspaceGetPageTableInfo(pVAS, pParams) fabricvaspaceGetPageTableInfo_DISPATCH(pVAS, pParams)
183 #define fabricvaspaceReserveMempool(pVAS, pGpu, pDevice, size, pageSizeLockMask, flags) fabricvaspaceReserveMempool_DISPATCH(pVAS, pGpu, pDevice, size, pageSizeLockMask, flags)
184 NV_STATUS fabricvaspaceConstruct__IMPL(struct FABRIC_VASPACE *pFabricVAS, NvU32 classId, NvU32 vaspaceId, NvU64 vaStart, NvU64 vaLimit, NvU64 vaStartInternal, NvU64 vaLimitInternal, NvU32 flags);
185
fabricvaspaceConstruct__DISPATCH(struct FABRIC_VASPACE * pFabricVAS,NvU32 classId,NvU32 vaspaceId,NvU64 vaStart,NvU64 vaLimit,NvU64 vaStartInternal,NvU64 vaLimitInternal,NvU32 flags)186 static inline NV_STATUS fabricvaspaceConstruct__DISPATCH(struct FABRIC_VASPACE *pFabricVAS, NvU32 classId, NvU32 vaspaceId, NvU64 vaStart, NvU64 vaLimit, NvU64 vaStartInternal, NvU64 vaLimitInternal, NvU32 flags) {
187 return pFabricVAS->__fabricvaspaceConstruct___(pFabricVAS, classId, vaspaceId, vaStart, vaLimit, vaStartInternal, vaLimitInternal, flags);
188 }
189
190 NV_STATUS fabricvaspaceAlloc_IMPL(struct FABRIC_VASPACE *pFabricVAS, NvU64 size, NvU64 align, NvU64 rangeLo, NvU64 rangeHi, NvU64 pageSize, VAS_ALLOC_FLAGS flags, NvU64 *pAddr);
191
fabricvaspaceAlloc_DISPATCH(struct FABRIC_VASPACE * pFabricVAS,NvU64 size,NvU64 align,NvU64 rangeLo,NvU64 rangeHi,NvU64 pageSize,VAS_ALLOC_FLAGS flags,NvU64 * pAddr)192 static inline NV_STATUS fabricvaspaceAlloc_DISPATCH(struct FABRIC_VASPACE *pFabricVAS, NvU64 size, NvU64 align, NvU64 rangeLo, NvU64 rangeHi, NvU64 pageSize, VAS_ALLOC_FLAGS flags, NvU64 *pAddr) {
193 return pFabricVAS->__fabricvaspaceAlloc__(pFabricVAS, size, align, rangeLo, rangeHi, pageSize, flags, pAddr);
194 }
195
196 NV_STATUS fabricvaspaceFree_IMPL(struct FABRIC_VASPACE *pFabricVAS, NvU64 vAddr);
197
fabricvaspaceFree_DISPATCH(struct FABRIC_VASPACE * pFabricVAS,NvU64 vAddr)198 static inline NV_STATUS fabricvaspaceFree_DISPATCH(struct FABRIC_VASPACE *pFabricVAS, NvU64 vAddr) {
199 return pFabricVAS->__fabricvaspaceFree__(pFabricVAS, vAddr);
200 }
201
202 NV_STATUS fabricvaspaceMap_IMPL(struct FABRIC_VASPACE *pFabricVAS, struct OBJGPU *pGpu, const NvU64 vaLo, const NvU64 vaHi, const MMU_MAP_TARGET *pTarget, const VAS_MAP_FLAGS flags);
203
fabricvaspaceMap_DISPATCH(struct FABRIC_VASPACE * pFabricVAS,struct OBJGPU * pGpu,const NvU64 vaLo,const NvU64 vaHi,const MMU_MAP_TARGET * pTarget,const VAS_MAP_FLAGS flags)204 static inline NV_STATUS fabricvaspaceMap_DISPATCH(struct FABRIC_VASPACE *pFabricVAS, struct OBJGPU *pGpu, const NvU64 vaLo, const NvU64 vaHi, const MMU_MAP_TARGET *pTarget, const VAS_MAP_FLAGS flags) {
205 return pFabricVAS->__fabricvaspaceMap__(pFabricVAS, pGpu, vaLo, vaHi, pTarget, flags);
206 }
207
208 void fabricvaspaceUnmap_IMPL(struct FABRIC_VASPACE *pFabricVAS, struct OBJGPU *pGpu, const NvU64 vaLo, const NvU64 vaHi);
209
fabricvaspaceUnmap_DISPATCH(struct FABRIC_VASPACE * pFabricVAS,struct OBJGPU * pGpu,const NvU64 vaLo,const NvU64 vaHi)210 static inline void fabricvaspaceUnmap_DISPATCH(struct FABRIC_VASPACE *pFabricVAS, struct OBJGPU *pGpu, const NvU64 vaLo, const NvU64 vaHi) {
211 pFabricVAS->__fabricvaspaceUnmap__(pFabricVAS, pGpu, vaLo, vaHi);
212 }
213
214 NV_STATUS fabricvaspaceApplyDefaultAlignment_IMPL(struct FABRIC_VASPACE *pFabricVAS, const FB_ALLOC_INFO *pAllocInfo, NvU64 *pAlign, NvU64 *pSize, NvU64 *pPageSizeLockMask);
215
fabricvaspaceApplyDefaultAlignment_DISPATCH(struct FABRIC_VASPACE * pFabricVAS,const FB_ALLOC_INFO * pAllocInfo,NvU64 * pAlign,NvU64 * pSize,NvU64 * pPageSizeLockMask)216 static inline NV_STATUS fabricvaspaceApplyDefaultAlignment_DISPATCH(struct FABRIC_VASPACE *pFabricVAS, const FB_ALLOC_INFO *pAllocInfo, NvU64 *pAlign, NvU64 *pSize, NvU64 *pPageSizeLockMask) {
217 return pFabricVAS->__fabricvaspaceApplyDefaultAlignment__(pFabricVAS, pAllocInfo, pAlign, pSize, pPageSizeLockMask);
218 }
219
220 NV_STATUS fabricvaspaceGetVasInfo_IMPL(struct FABRIC_VASPACE *pFabricVAS, NV0080_CTRL_DMA_ADV_SCHED_GET_VA_CAPS_PARAMS *pParams);
221
fabricvaspaceGetVasInfo_DISPATCH(struct FABRIC_VASPACE * pFabricVAS,NV0080_CTRL_DMA_ADV_SCHED_GET_VA_CAPS_PARAMS * pParams)222 static inline NV_STATUS fabricvaspaceGetVasInfo_DISPATCH(struct FABRIC_VASPACE *pFabricVAS, NV0080_CTRL_DMA_ADV_SCHED_GET_VA_CAPS_PARAMS *pParams) {
223 return pFabricVAS->__fabricvaspaceGetVasInfo__(pFabricVAS, pParams);
224 }
225
226 NV_STATUS fabricvaspacePinRootPageDir_IMPL(struct FABRIC_VASPACE *pFabricVAS, struct OBJGPU *pGpu);
227
fabricvaspacePinRootPageDir_DISPATCH(struct FABRIC_VASPACE * pFabricVAS,struct OBJGPU * pGpu)228 static inline NV_STATUS fabricvaspacePinRootPageDir_DISPATCH(struct FABRIC_VASPACE *pFabricVAS, struct OBJGPU *pGpu) {
229 return pFabricVAS->__fabricvaspacePinRootPageDir__(pFabricVAS, pGpu);
230 }
231
232 void fabricvaspaceUnpinRootPageDir_IMPL(struct FABRIC_VASPACE *pFabricVAS, struct OBJGPU *pGpu);
233
fabricvaspaceUnpinRootPageDir_DISPATCH(struct FABRIC_VASPACE * pFabricVAS,struct OBJGPU * pGpu)234 static inline void fabricvaspaceUnpinRootPageDir_DISPATCH(struct FABRIC_VASPACE *pFabricVAS, struct OBJGPU *pGpu) {
235 pFabricVAS->__fabricvaspaceUnpinRootPageDir__(pFabricVAS, pGpu);
236 }
237
238 void fabricvaspaceInvalidateTlb_IMPL(struct FABRIC_VASPACE *pFabricVAS, struct OBJGPU *pGpu, VAS_PTE_UPDATE_TYPE type);
239
fabricvaspaceInvalidateTlb_DISPATCH(struct FABRIC_VASPACE * pFabricVAS,struct OBJGPU * pGpu,VAS_PTE_UPDATE_TYPE type)240 static inline void fabricvaspaceInvalidateTlb_DISPATCH(struct FABRIC_VASPACE *pFabricVAS, struct OBJGPU *pGpu, VAS_PTE_UPDATE_TYPE type) {
241 pFabricVAS->__fabricvaspaceInvalidateTlb__(pFabricVAS, pGpu, type);
242 }
243
fabricvaspaceIsMirrored_DISPATCH(struct FABRIC_VASPACE * pVAS)244 static inline NvBool fabricvaspaceIsMirrored_DISPATCH(struct FABRIC_VASPACE *pVAS) {
245 return pVAS->__fabricvaspaceIsMirrored__(pVAS);
246 }
247
fabricvaspaceIsExternallyOwned_DISPATCH(struct FABRIC_VASPACE * pVAS)248 static inline NvBool fabricvaspaceIsExternallyOwned_DISPATCH(struct FABRIC_VASPACE *pVAS) {
249 return pVAS->__fabricvaspaceIsExternallyOwned__(pVAS);
250 }
251
fabricvaspaceGetFlags_DISPATCH(struct FABRIC_VASPACE * pVAS)252 static inline NvU32 fabricvaspaceGetFlags_DISPATCH(struct FABRIC_VASPACE *pVAS) {
253 return pVAS->__fabricvaspaceGetFlags__(pVAS);
254 }
255
fabricvaspaceIsAtsEnabled_DISPATCH(struct FABRIC_VASPACE * pVAS)256 static inline NvBool fabricvaspaceIsAtsEnabled_DISPATCH(struct FABRIC_VASPACE *pVAS) {
257 return pVAS->__fabricvaspaceIsAtsEnabled__(pVAS);
258 }
259
fabricvaspaceGetBigPageSize_DISPATCH(struct FABRIC_VASPACE * pVAS)260 static inline NvU64 fabricvaspaceGetBigPageSize_DISPATCH(struct FABRIC_VASPACE *pVAS) {
261 return pVAS->__fabricvaspaceGetBigPageSize__(pVAS);
262 }
263
fabricvaspaceGetPteInfo_DISPATCH(struct FABRIC_VASPACE * pVAS,struct OBJGPU * pGpu,NV0080_CTRL_DMA_GET_PTE_INFO_PARAMS * pParams,RmPhysAddr * pPhysAddr)264 static inline NV_STATUS fabricvaspaceGetPteInfo_DISPATCH(struct FABRIC_VASPACE *pVAS, struct OBJGPU *pGpu, NV0080_CTRL_DMA_GET_PTE_INFO_PARAMS *pParams, RmPhysAddr *pPhysAddr) {
265 return pVAS->__fabricvaspaceGetPteInfo__(pVAS, pGpu, pParams, pPhysAddr);
266 }
267
fabricvaspaceGetVaLimit_DISPATCH(struct FABRIC_VASPACE * pVAS)268 static inline NvU64 fabricvaspaceGetVaLimit_DISPATCH(struct FABRIC_VASPACE *pVAS) {
269 return pVAS->__fabricvaspaceGetVaLimit__(pVAS);
270 }
271
fabricvaspaceGetPageDirBase_DISPATCH(struct FABRIC_VASPACE * pVAS,struct OBJGPU * pGpu)272 static inline PMEMORY_DESCRIPTOR fabricvaspaceGetPageDirBase_DISPATCH(struct FABRIC_VASPACE *pVAS, struct OBJGPU *pGpu) {
273 return pVAS->__fabricvaspaceGetPageDirBase__(pVAS, pGpu);
274 }
275
fabricvaspaceGetKernelPageDirBase_DISPATCH(struct FABRIC_VASPACE * pVAS,struct OBJGPU * pGpu)276 static inline PMEMORY_DESCRIPTOR fabricvaspaceGetKernelPageDirBase_DISPATCH(struct FABRIC_VASPACE *pVAS, struct OBJGPU *pGpu) {
277 return pVAS->__fabricvaspaceGetKernelPageDirBase__(pVAS, pGpu);
278 }
279
fabricvaspaceGetMapPageSize_DISPATCH(struct FABRIC_VASPACE * pVAS,struct OBJGPU * pGpu,struct EMEMBLOCK * pMemBlock)280 static inline NvU64 fabricvaspaceGetMapPageSize_DISPATCH(struct FABRIC_VASPACE *pVAS, struct OBJGPU *pGpu, struct EMEMBLOCK *pMemBlock) {
281 return pVAS->__fabricvaspaceGetMapPageSize__(pVAS, pGpu, pMemBlock);
282 }
283
fabricvaspaceGetHeap_DISPATCH(struct FABRIC_VASPACE * pVAS)284 static inline struct OBJEHEAP *fabricvaspaceGetHeap_DISPATCH(struct FABRIC_VASPACE *pVAS) {
285 return pVAS->__fabricvaspaceGetHeap__(pVAS);
286 }
287
fabricvaspaceIsFaultCapable_DISPATCH(struct FABRIC_VASPACE * pVAS)288 static inline NvBool fabricvaspaceIsFaultCapable_DISPATCH(struct FABRIC_VASPACE *pVAS) {
289 return pVAS->__fabricvaspaceIsFaultCapable__(pVAS);
290 }
291
fabricvaspaceGetVaStart_DISPATCH(struct FABRIC_VASPACE * pVAS)292 static inline NvU64 fabricvaspaceGetVaStart_DISPATCH(struct FABRIC_VASPACE *pVAS) {
293 return pVAS->__fabricvaspaceGetVaStart__(pVAS);
294 }
295
fabricvaspaceIncAllocRefCnt_DISPATCH(struct FABRIC_VASPACE * pVAS,NvU64 vAddr)296 static inline NV_STATUS fabricvaspaceIncAllocRefCnt_DISPATCH(struct FABRIC_VASPACE *pVAS, NvU64 vAddr) {
297 return pVAS->__fabricvaspaceIncAllocRefCnt__(pVAS, vAddr);
298 }
299
fabricvaspaceSetPteInfo_DISPATCH(struct FABRIC_VASPACE * pVAS,struct OBJGPU * pGpu,NV0080_CTRL_DMA_SET_PTE_INFO_PARAMS * pParams)300 static inline NV_STATUS fabricvaspaceSetPteInfo_DISPATCH(struct FABRIC_VASPACE *pVAS, struct OBJGPU *pGpu, NV0080_CTRL_DMA_SET_PTE_INFO_PARAMS *pParams) {
301 return pVAS->__fabricvaspaceSetPteInfo__(pVAS, pGpu, pParams);
302 }
303
fabricvaspaceFreeV2_DISPATCH(struct FABRIC_VASPACE * pVAS,NvU64 vAddr,NvU64 * pSize)304 static inline NV_STATUS fabricvaspaceFreeV2_DISPATCH(struct FABRIC_VASPACE *pVAS, NvU64 vAddr, NvU64 *pSize) {
305 return pVAS->__fabricvaspaceFreeV2__(pVAS, vAddr, pSize);
306 }
307
fabricvaspaceGetPasid_DISPATCH(struct FABRIC_VASPACE * pVAS,NvU32 * pPasid)308 static inline NV_STATUS fabricvaspaceGetPasid_DISPATCH(struct FABRIC_VASPACE *pVAS, NvU32 *pPasid) {
309 return pVAS->__fabricvaspaceGetPasid__(pVAS, pPasid);
310 }
311
fabricvaspaceGetPageTableInfo_DISPATCH(struct FABRIC_VASPACE * pVAS,NV0080_CTRL_DMA_GET_PDE_INFO_PARAMS * pParams)312 static inline NV_STATUS fabricvaspaceGetPageTableInfo_DISPATCH(struct FABRIC_VASPACE *pVAS, NV0080_CTRL_DMA_GET_PDE_INFO_PARAMS *pParams) {
313 return pVAS->__fabricvaspaceGetPageTableInfo__(pVAS, pParams);
314 }
315
fabricvaspaceReserveMempool_DISPATCH(struct FABRIC_VASPACE * pVAS,struct OBJGPU * pGpu,struct Device * pDevice,NvU64 size,NvU64 pageSizeLockMask,NvU32 flags)316 static inline NV_STATUS fabricvaspaceReserveMempool_DISPATCH(struct FABRIC_VASPACE *pVAS, struct OBJGPU *pGpu, struct Device *pDevice, NvU64 size, NvU64 pageSizeLockMask, NvU32 flags) {
317 return pVAS->__fabricvaspaceReserveMempool__(pVAS, pGpu, pDevice, size, pageSizeLockMask, flags);
318 }
319
fabricvaspaceGetUCFlaStart(struct FABRIC_VASPACE * pFabricVAS)320 static inline NvU64 fabricvaspaceGetUCFlaStart(struct FABRIC_VASPACE *pFabricVAS) {
321 return pFabricVAS->ucFabricBase;
322 }
323
fabricvaspaceGetUCFlaLimit(struct FABRIC_VASPACE * pFabricVAS)324 static inline NvU64 fabricvaspaceGetUCFlaLimit(struct FABRIC_VASPACE *pFabricVAS) {
325 return pFabricVAS->ucFabricLimit;
326 }
327
328 void fabricvaspaceDestruct_IMPL(struct FABRIC_VASPACE *pFabricVAS);
329
330 #define __nvoc_fabricvaspaceDestruct(pFabricVAS) fabricvaspaceDestruct_IMPL(pFabricVAS)
331 NV_STATUS fabricvaspaceAllocNonContiguous_IMPL(struct FABRIC_VASPACE *pFabricVAS, NvU64 size, NvU64 align, NvU64 rangeLo, NvU64 rangeHi, NvU64 pageSize, VAS_ALLOC_FLAGS flags, NvU64 **ppAddr, NvU32 *pNumAddr);
332
333 #ifdef __nvoc_fabric_vaspace_h_disabled
fabricvaspaceAllocNonContiguous(struct FABRIC_VASPACE * pFabricVAS,NvU64 size,NvU64 align,NvU64 rangeLo,NvU64 rangeHi,NvU64 pageSize,VAS_ALLOC_FLAGS flags,NvU64 ** ppAddr,NvU32 * pNumAddr)334 static inline NV_STATUS fabricvaspaceAllocNonContiguous(struct FABRIC_VASPACE *pFabricVAS, NvU64 size, NvU64 align, NvU64 rangeLo, NvU64 rangeHi, NvU64 pageSize, VAS_ALLOC_FLAGS flags, NvU64 **ppAddr, NvU32 *pNumAddr) {
335 NV_ASSERT_FAILED_PRECOMP("FABRIC_VASPACE was disabled!");
336 return NV_ERR_NOT_SUPPORTED;
337 }
338 #else //__nvoc_fabric_vaspace_h_disabled
339 #define fabricvaspaceAllocNonContiguous(pFabricVAS, size, align, rangeLo, rangeHi, pageSize, flags, ppAddr, pNumAddr) fabricvaspaceAllocNonContiguous_IMPL(pFabricVAS, size, align, rangeLo, rangeHi, pageSize, flags, ppAddr, pNumAddr)
340 #endif //__nvoc_fabric_vaspace_h_disabled
341
342 void fabricvaspaceBatchFree_IMPL(struct FABRIC_VASPACE *pFabricVAS, NvU64 *pAddr, NvU32 numAddr, NvU32 stride);
343
344 #ifdef __nvoc_fabric_vaspace_h_disabled
fabricvaspaceBatchFree(struct FABRIC_VASPACE * pFabricVAS,NvU64 * pAddr,NvU32 numAddr,NvU32 stride)345 static inline void fabricvaspaceBatchFree(struct FABRIC_VASPACE *pFabricVAS, NvU64 *pAddr, NvU32 numAddr, NvU32 stride) {
346 NV_ASSERT_FAILED_PRECOMP("FABRIC_VASPACE was disabled!");
347 }
348 #else //__nvoc_fabric_vaspace_h_disabled
349 #define fabricvaspaceBatchFree(pFabricVAS, pAddr, numAddr, stride) fabricvaspaceBatchFree_IMPL(pFabricVAS, pAddr, numAddr, stride)
350 #endif //__nvoc_fabric_vaspace_h_disabled
351
352 NV_STATUS fabricvaspaceGetFreeHeap_IMPL(struct FABRIC_VASPACE *pFabricVAS, NvU64 *pFreeSize);
353
354 #ifdef __nvoc_fabric_vaspace_h_disabled
fabricvaspaceGetFreeHeap(struct FABRIC_VASPACE * pFabricVAS,NvU64 * pFreeSize)355 static inline NV_STATUS fabricvaspaceGetFreeHeap(struct FABRIC_VASPACE *pFabricVAS, NvU64 *pFreeSize) {
356 NV_ASSERT_FAILED_PRECOMP("FABRIC_VASPACE was disabled!");
357 return NV_ERR_NOT_SUPPORTED;
358 }
359 #else //__nvoc_fabric_vaspace_h_disabled
360 #define fabricvaspaceGetFreeHeap(pFabricVAS, pFreeSize) fabricvaspaceGetFreeHeap_IMPL(pFabricVAS, pFreeSize)
361 #endif //__nvoc_fabric_vaspace_h_disabled
362
363 NV_STATUS fabricvaspaceGetGpaMemdesc_IMPL(struct FABRIC_VASPACE *pFabricVAS, MEMORY_DESCRIPTOR *pFabricMemdesc, struct OBJGPU *pMappingGpu, MEMORY_DESCRIPTOR **ppAdjustedMemdesc);
364
365 #ifdef __nvoc_fabric_vaspace_h_disabled
fabricvaspaceGetGpaMemdesc(struct FABRIC_VASPACE * pFabricVAS,MEMORY_DESCRIPTOR * pFabricMemdesc,struct OBJGPU * pMappingGpu,MEMORY_DESCRIPTOR ** ppAdjustedMemdesc)366 static inline NV_STATUS fabricvaspaceGetGpaMemdesc(struct FABRIC_VASPACE *pFabricVAS, MEMORY_DESCRIPTOR *pFabricMemdesc, struct OBJGPU *pMappingGpu, MEMORY_DESCRIPTOR **ppAdjustedMemdesc) {
367 NV_ASSERT_FAILED_PRECOMP("FABRIC_VASPACE was disabled!");
368 return NV_ERR_NOT_SUPPORTED;
369 }
370 #else //__nvoc_fabric_vaspace_h_disabled
371 #define fabricvaspaceGetGpaMemdesc(pFabricVAS, pFabricMemdesc, pMappingGpu, ppAdjustedMemdesc) fabricvaspaceGetGpaMemdesc_IMPL(pFabricVAS, pFabricMemdesc, pMappingGpu, ppAdjustedMemdesc)
372 #endif //__nvoc_fabric_vaspace_h_disabled
373
374 void fabricvaspacePutGpaMemdesc_IMPL(struct FABRIC_VASPACE *pFabricVAS, MEMORY_DESCRIPTOR *pMemDesc);
375
376 #ifdef __nvoc_fabric_vaspace_h_disabled
fabricvaspacePutGpaMemdesc(struct FABRIC_VASPACE * pFabricVAS,MEMORY_DESCRIPTOR * pMemDesc)377 static inline void fabricvaspacePutGpaMemdesc(struct FABRIC_VASPACE *pFabricVAS, MEMORY_DESCRIPTOR *pMemDesc) {
378 NV_ASSERT_FAILED_PRECOMP("FABRIC_VASPACE was disabled!");
379 }
380 #else //__nvoc_fabric_vaspace_h_disabled
381 #define fabricvaspacePutGpaMemdesc(pFabricVAS, pMemDesc) fabricvaspacePutGpaMemdesc_IMPL(pFabricVAS, pMemDesc)
382 #endif //__nvoc_fabric_vaspace_h_disabled
383
384 NV_STATUS fabricvaspaceVaToGpaMapInsert_IMPL(struct FABRIC_VASPACE *pFabricVAS, NvU64 vAddr, MEMORY_DESCRIPTOR *pVidMemDesc, NvU64 offset);
385
386 #ifdef __nvoc_fabric_vaspace_h_disabled
fabricvaspaceVaToGpaMapInsert(struct FABRIC_VASPACE * pFabricVAS,NvU64 vAddr,MEMORY_DESCRIPTOR * pVidMemDesc,NvU64 offset)387 static inline NV_STATUS fabricvaspaceVaToGpaMapInsert(struct FABRIC_VASPACE *pFabricVAS, NvU64 vAddr, MEMORY_DESCRIPTOR *pVidMemDesc, NvU64 offset) {
388 NV_ASSERT_FAILED_PRECOMP("FABRIC_VASPACE was disabled!");
389 return NV_ERR_NOT_SUPPORTED;
390 }
391 #else //__nvoc_fabric_vaspace_h_disabled
392 #define fabricvaspaceVaToGpaMapInsert(pFabricVAS, vAddr, pVidMemDesc, offset) fabricvaspaceVaToGpaMapInsert_IMPL(pFabricVAS, vAddr, pVidMemDesc, offset)
393 #endif //__nvoc_fabric_vaspace_h_disabled
394
395 void fabricvaspaceVaToGpaMapRemove_IMPL(struct FABRIC_VASPACE *pFabricVAS, NvU64 vAddr);
396
397 #ifdef __nvoc_fabric_vaspace_h_disabled
fabricvaspaceVaToGpaMapRemove(struct FABRIC_VASPACE * pFabricVAS,NvU64 vAddr)398 static inline void fabricvaspaceVaToGpaMapRemove(struct FABRIC_VASPACE *pFabricVAS, NvU64 vAddr) {
399 NV_ASSERT_FAILED_PRECOMP("FABRIC_VASPACE was disabled!");
400 }
401 #else //__nvoc_fabric_vaspace_h_disabled
402 #define fabricvaspaceVaToGpaMapRemove(pFabricVAS, vAddr) fabricvaspaceVaToGpaMapRemove_IMPL(pFabricVAS, vAddr)
403 #endif //__nvoc_fabric_vaspace_h_disabled
404
405 NV_STATUS fabricvaspaceAllocMulticast_IMPL(struct FABRIC_VASPACE *pFabricVAS, NvU64 pageSize, NvU64 alignment, VAS_ALLOC_FLAGS flags, NvU64 base, NvU64 size);
406
407 #ifdef __nvoc_fabric_vaspace_h_disabled
fabricvaspaceAllocMulticast(struct FABRIC_VASPACE * pFabricVAS,NvU64 pageSize,NvU64 alignment,VAS_ALLOC_FLAGS flags,NvU64 base,NvU64 size)408 static inline NV_STATUS fabricvaspaceAllocMulticast(struct FABRIC_VASPACE *pFabricVAS, NvU64 pageSize, NvU64 alignment, VAS_ALLOC_FLAGS flags, NvU64 base, NvU64 size) {
409 NV_ASSERT_FAILED_PRECOMP("FABRIC_VASPACE was disabled!");
410 return NV_ERR_NOT_SUPPORTED;
411 }
412 #else //__nvoc_fabric_vaspace_h_disabled
413 #define fabricvaspaceAllocMulticast(pFabricVAS, pageSize, alignment, flags, base, size) fabricvaspaceAllocMulticast_IMPL(pFabricVAS, pageSize, alignment, flags, base, size)
414 #endif //__nvoc_fabric_vaspace_h_disabled
415
416 NV_STATUS fabricvaspaceMapPhysMemdesc_IMPL(struct FABRIC_VASPACE *pFabricVAS, MEMORY_DESCRIPTOR *pFabricMemDesc, NvU64 fabricOffset, MEMORY_DESCRIPTOR *pPhysMemDesc, NvU64 physOffset, NvU64 physMapLength, NvU32 flags);
417
418 #ifdef __nvoc_fabric_vaspace_h_disabled
fabricvaspaceMapPhysMemdesc(struct FABRIC_VASPACE * pFabricVAS,MEMORY_DESCRIPTOR * pFabricMemDesc,NvU64 fabricOffset,MEMORY_DESCRIPTOR * pPhysMemDesc,NvU64 physOffset,NvU64 physMapLength,NvU32 flags)419 static inline NV_STATUS fabricvaspaceMapPhysMemdesc(struct FABRIC_VASPACE *pFabricVAS, MEMORY_DESCRIPTOR *pFabricMemDesc, NvU64 fabricOffset, MEMORY_DESCRIPTOR *pPhysMemDesc, NvU64 physOffset, NvU64 physMapLength, NvU32 flags) {
420 NV_ASSERT_FAILED_PRECOMP("FABRIC_VASPACE was disabled!");
421 return NV_ERR_NOT_SUPPORTED;
422 }
423 #else //__nvoc_fabric_vaspace_h_disabled
424 #define fabricvaspaceMapPhysMemdesc(pFabricVAS, pFabricMemDesc, fabricOffset, pPhysMemDesc, physOffset, physMapLength, flags) fabricvaspaceMapPhysMemdesc_IMPL(pFabricVAS, pFabricMemDesc, fabricOffset, pPhysMemDesc, physOffset, physMapLength, flags)
425 #endif //__nvoc_fabric_vaspace_h_disabled
426
427 void fabricvaspaceUnmapPhysMemdesc_IMPL(struct FABRIC_VASPACE *pFabricVAS, MEMORY_DESCRIPTOR *pFabricMemDesc, NvU64 fabricOffset, MEMORY_DESCRIPTOR *pPhysMemDesc, NvU64 physMapLength);
428
429 #ifdef __nvoc_fabric_vaspace_h_disabled
fabricvaspaceUnmapPhysMemdesc(struct FABRIC_VASPACE * pFabricVAS,MEMORY_DESCRIPTOR * pFabricMemDesc,NvU64 fabricOffset,MEMORY_DESCRIPTOR * pPhysMemDesc,NvU64 physMapLength)430 static inline void fabricvaspaceUnmapPhysMemdesc(struct FABRIC_VASPACE *pFabricVAS, MEMORY_DESCRIPTOR *pFabricMemDesc, NvU64 fabricOffset, MEMORY_DESCRIPTOR *pPhysMemDesc, NvU64 physMapLength) {
431 NV_ASSERT_FAILED_PRECOMP("FABRIC_VASPACE was disabled!");
432 }
433 #else //__nvoc_fabric_vaspace_h_disabled
434 #define fabricvaspaceUnmapPhysMemdesc(pFabricVAS, pFabricMemDesc, fabricOffset, pPhysMemDesc, physMapLength) fabricvaspaceUnmapPhysMemdesc_IMPL(pFabricVAS, pFabricMemDesc, fabricOffset, pPhysMemDesc, physMapLength)
435 #endif //__nvoc_fabric_vaspace_h_disabled
436
437 NV_STATUS fabricvaspaceInitUCRange_IMPL(struct FABRIC_VASPACE *pFabricVAS, struct OBJGPU *pGpu, NvU64 ucFabricBase, NvU64 ucFabricSize);
438
439 #ifdef __nvoc_fabric_vaspace_h_disabled
fabricvaspaceInitUCRange(struct FABRIC_VASPACE * pFabricVAS,struct OBJGPU * pGpu,NvU64 ucFabricBase,NvU64 ucFabricSize)440 static inline NV_STATUS fabricvaspaceInitUCRange(struct FABRIC_VASPACE *pFabricVAS, struct OBJGPU *pGpu, NvU64 ucFabricBase, NvU64 ucFabricSize) {
441 NV_ASSERT_FAILED_PRECOMP("FABRIC_VASPACE was disabled!");
442 return NV_ERR_NOT_SUPPORTED;
443 }
444 #else //__nvoc_fabric_vaspace_h_disabled
445 #define fabricvaspaceInitUCRange(pFabricVAS, pGpu, ucFabricBase, ucFabricSize) fabricvaspaceInitUCRange_IMPL(pFabricVAS, pGpu, ucFabricBase, ucFabricSize)
446 #endif //__nvoc_fabric_vaspace_h_disabled
447
448 void fabricvaspaceClearUCRange_IMPL(struct FABRIC_VASPACE *pFabricVAS);
449
450 #ifdef __nvoc_fabric_vaspace_h_disabled
fabricvaspaceClearUCRange(struct FABRIC_VASPACE * pFabricVAS)451 static inline void fabricvaspaceClearUCRange(struct FABRIC_VASPACE *pFabricVAS) {
452 NV_ASSERT_FAILED_PRECOMP("FABRIC_VASPACE was disabled!");
453 }
454 #else //__nvoc_fabric_vaspace_h_disabled
455 #define fabricvaspaceClearUCRange(pFabricVAS) fabricvaspaceClearUCRange_IMPL(pFabricVAS)
456 #endif //__nvoc_fabric_vaspace_h_disabled
457
458 NV_STATUS fabricvaspaceGetPageLevelInfo_IMPL(struct FABRIC_VASPACE *pFabricVAS, struct OBJGPU *pGpu, NV90F1_CTRL_VASPACE_GET_PAGE_LEVEL_INFO_PARAMS *pParams);
459
460 #ifdef __nvoc_fabric_vaspace_h_disabled
fabricvaspaceGetPageLevelInfo(struct FABRIC_VASPACE * pFabricVAS,struct OBJGPU * pGpu,NV90F1_CTRL_VASPACE_GET_PAGE_LEVEL_INFO_PARAMS * pParams)461 static inline NV_STATUS fabricvaspaceGetPageLevelInfo(struct FABRIC_VASPACE *pFabricVAS, struct OBJGPU *pGpu, NV90F1_CTRL_VASPACE_GET_PAGE_LEVEL_INFO_PARAMS *pParams) {
462 NV_ASSERT_FAILED_PRECOMP("FABRIC_VASPACE was disabled!");
463 return NV_ERR_NOT_SUPPORTED;
464 }
465 #else //__nvoc_fabric_vaspace_h_disabled
466 #define fabricvaspaceGetPageLevelInfo(pFabricVAS, pGpu, pParams) fabricvaspaceGetPageLevelInfo_IMPL(pFabricVAS, pGpu, pParams)
467 #endif //__nvoc_fabric_vaspace_h_disabled
468
469 NvBool fabricvaspaceIsInUse_IMPL(struct FABRIC_VASPACE *pFabricVAS);
470
471 #ifdef __nvoc_fabric_vaspace_h_disabled
fabricvaspaceIsInUse(struct FABRIC_VASPACE * pFabricVAS)472 static inline NvBool fabricvaspaceIsInUse(struct FABRIC_VASPACE *pFabricVAS) {
473 NV_ASSERT_FAILED_PRECOMP("FABRIC_VASPACE was disabled!");
474 return NV_FALSE;
475 }
476 #else //__nvoc_fabric_vaspace_h_disabled
477 #define fabricvaspaceIsInUse(pFabricVAS) fabricvaspaceIsInUse_IMPL(pFabricVAS)
478 #endif //__nvoc_fabric_vaspace_h_disabled
479
480 #undef PRIVATE_FIELD
481
482
483 #endif // FABRIC_VASPACE_H
484
485 #ifdef __cplusplus
486 } // extern "C"
487 #endif
488
489 #endif // _G_FABRIC_VASPACE_NVOC_H_
490