1 #ifndef _G_KERNEL_NVLINK_NVOC_H_
2 #define _G_KERNEL_NVLINK_NVOC_H_
3 #include "nvoc/runtime.h"
4
5 #ifdef __cplusplus
6 extern "C" {
7 #endif
8
9 /*
10 * SPDX-FileCopyrightText: Copyright (c) 2020-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_kernel_nvlink_nvoc.h"
33
34 #ifndef _KERNEL_NVLINK_H_
35 #define _KERNEL_NVLINK_H_
36
37 #include "core/core.h"
38 #include "core/locks.h"
39 #include "gpu/eng_state.h"
40 #include "lib/ref_count.h"
41 #include "objtmr.h"
42 #include "nvCpuUuid.h"
43 #include "gpu/bus/kern_bus.h"
44
45 #if defined(INCLUDE_NVLINK_LIB)
46 #include "nvlink.h"
47 #include "nvlink_export.h"
48 #include "nvlink_lib_ctrl.h"
49 #endif
50
51 #include "kernel/gpu/nvlink/kernel_ioctrl.h"
52
53 #include "ctrl/ctrl2080/ctrl2080nvlink.h" // rmcontrol params
54 #include "ctrl/ctrl2080/ctrl2080pmgr.h"
55
56 #include "nvlink_inband_drv_header.h"
57 #include "nvlink_inband_msg.h"
58
59 #if defined(INCLUDE_NVLINK_LIB)
60
61 typedef struct _def_knvlink_conn_info
62 {
63 NvU32 domain;
64 NvU16 bus;
65 NvU16 device;
66 NvU16 function;
67 NvU32 pciDeviceId;
68 NvU8 devUuid[NV_UUID_LEN];
69 NvU64 deviceType;
70 NvU32 linkNumber;
71 NvU32 ipVerDlPl;
72 NvBool bConnected;
73 NvU64 chipSid;
74 } KNVLINK_CONN_INFO, *PKNVLINK_CONN_INFO;
75
76 #endif
77
78 // Known versions (taken from nvlinkip_discovery.h NV_NVLINKIP_DISCOVERY_COMMON_VERSION)
79 #define NVLINK_VERSION_10 0x00000001
80 #define NVLINK_VERSION_20 0x00000002
81 #define NVLINK_VERSION_22 0x00000004
82 #define NVLINK_VERSION_30 0x00000005
83 #define NVLINK_VERSION_31 0x00000006
84 #define NVLINK_VERSION_40 0x00000007
85 #define NVLINK_VERSION_50 0x00000008
86
87 // Maximum links the GPU NVLink SW can currently support
88 #define NVLINK_MAX_LINKS_SW 18
89
90 // Maximum IOCTRLs supported in SW
91 #define NVLINK_MAX_IOCTRLS_SW 3
92
93 // NvLink Phase Identifiers
94 #define NVLINK_PHASE_STATE_LOAD 0xFF000001
95 #define NVLINK_PHASE_STATE_POST_LOAD 0xFF000002
96
97 /******** NVLink associated timeouts and delays ***********/
98
99 // INITOPTIMIZE timeout = 10s
100 #define NVLINK_INITOPTIMIZE_POLL_TIMEOUT 10000000
101 #define NVLINK_INITOPTIMIZE_POLL_TIMEOUT_EMU 20000000
102 #define NVLINK_INITOPTIMIZE_POLL_COUNT_DELAY_MS 1000
103
104 // Link Retrain after reset time = 10s
105 #define NVLINK_RETRAIN_TIME 10000000000
106
107 /**********************************************************/
108
109 // NvGpu identifier in nvlink core library
110 #define NVLINK_NVIDIA_DRIVER "NVIDIA GPU DRIVER"
111
112 #define NVLINK_DRIVER_NAME_LENGTH 0x0000040
113 #define NVLINK_DEVICE_NAME_LENGTH 0x0000040
114 #define NVLINK_LINK_NAME_LENGTH 0x0000040
115
116 //
117 // Arch CONNECTION defines, replaces forceconfig. See Bugs 1665737,
118 // 1665734 and 1734252.
119 // This per link connection state is passed up from chiplib
120 // and can be controlled on the command line.
121 // The max number of connections is speced in __SIZE_1.
122 //
123 #define NV_NVLINK_ARCH_CONNECTION 31:0
124 #define NV_NVLINK_ARCH_CONNECTION__SIZE_1 32
125 #define NV_NVLINK_ARCH_CONNECTION_DISABLED 0x00000000
126 #define NV_NVLINK_ARCH_CONNECTION_PEER_MASK 7:0
127 #define NV_NVLINK_ARCH_CONNECTION_ENABLED 8:8
128 #define NV_NVLINK_ARCH_CONNECTION_PHYSICAL_LINK 20:16
129 #define NV_NVLINK_ARCH_CONNECTION_RESERVED 29:21
130 #define NV_NVLINK_ARCH_CONNECTION_PEERS_COMPUTE_ONLY 30:30
131 #define NV_NVLINK_ARCH_CONNECTION_CPU 31:31
132
133 // Invalid fabric address
134 #define NVLINK_INVALID_FABRIC_ADDR NV_U64_MAX
135
136 #define NVLINK_MAX_PEERS_SW 8
137
138 // PCI Device IDs and types used for ForceConfig
139
140 // FORCED_SYSMEM uses the ebridge device from NVLink1
141 #define FORCED_SYSMEM_PCI_BUS 0xe
142 #define FORCED_SYSMEM_DEVICE_ID 0x10ec
143 #define FORCED_SYSMEM_DEVICE_TYPE NV2080_CTRL_NVLINK_DEVICE_INFO_DEVICE_TYPE_EBRIDGE
144
145 //
146 // FORCED_SWITCH uses the first Switch device (Willow)
147 // Willow device ID is 0x10F5 or 0x1AC0..0x1ACF
148 //
149 #define FORCED_SWITCH_PCI_BUS 0xe
150 #define FORCED_SWITCH_DEVICE_ID 0x10F5
151 #define FORCED_SWITCH_DEVICE_TYPE NV2080_CTRL_NVLINK_DEVICE_INFO_DEVICE_TYPE_SWITCH
152
153 //
154 // Structure representing per link information
155 //
156 typedef struct _def_knvlink_link
157 {
158 #if defined(INCLUDE_NVLINK_LIB)
159
160 // Reference to link object registered with core lib
161 nvlink_link *core_link;
162
163 // Nvlink connection information
164 KNVLINK_CONN_INFO remoteEndInfo;
165
166 // OS-specific data associated with the link
167 void *pOsInfo;
168
169 #endif
170
171 struct OBJGPU *pGpu;
172 NvU8 linkId;
173 NvBool bValid;
174
175 // IOCTRL id that this link is associated with
176 NvU32 ioctrlId;
177
178 // DLPL IP version for the link
179 NvU32 ipVerDlPl;
180
181 // PLL sharing information
182 NvU8 pllMasterLinkId;
183 NvU8 pllSlaveLinkId;
184
185 // RXDET per-lane status
186 NvU32 laneRxdetStatusMask;
187
188 TMR_EVENT *pTmrEvent;
189
190 } KNVLINK_RM_LINK, *PKNVLINK_RM_LINK;
191
192 typedef struct NVLINK_INBAND_CALLBACK
193 {
194 NvU32 messageType;
195 NV_STATUS (*pCallback)(NvU32 gpuInstance, NvU64 *pNotifyGfIdMask,
196 NV2080_CTRL_NVLINK_INBAND_RECEIVED_DATA_PARAMS *pMessage);
197 NvU32 wqItemFlags;
198 } NVLINK_INBAND_MSG_CALLBACK;
199
200 typedef struct
201 {
202 NvU8 linkId;
203 } NVLINK_ID, *PNVLINK_ID;
204
205 MAKE_LIST(FaultUpList, NVLINK_ID);
206
207 /*!
208 * KernelNvlink is a logical abstraction of the GPU Nvlink Engine. The
209 * Public API of the Nvlink Engine is exposed through this object, and
210 * any interfaces which do not manage the underlying Nvlink hardware
211 * can be managed by this object.
212 */
213
214 // Private field names are wrapped in PRIVATE_FIELD, which does nothing for
215 // the matching C source file, but causes diagnostics to be issued if another
216 // source file references the field.
217 #ifdef NVOC_KERNEL_NVLINK_H_PRIVATE_ACCESS_ALLOWED
218 #define PRIVATE_FIELD(x) x
219 #else
220 #define PRIVATE_FIELD(x) NVOC_PRIVATE_FIELD(x)
221 #endif
222
223 struct KernelNvlink {
224 const struct NVOC_RTTI *__nvoc_rtti;
225 struct OBJENGSTATE __nvoc_base_OBJENGSTATE;
226 struct Object *__nvoc_pbase_Object;
227 struct OBJENGSTATE *__nvoc_pbase_OBJENGSTATE;
228 struct KernelNvlink *__nvoc_pbase_KernelNvlink;
229 NV_STATUS (*__knvlinkConstructEngine__)(struct OBJGPU *, struct KernelNvlink *, ENGDESCRIPTOR);
230 NV_STATUS (*__knvlinkStatePreInitLocked__)(struct OBJGPU *, struct KernelNvlink *);
231 NV_STATUS (*__knvlinkStateLoad__)(struct OBJGPU *, struct KernelNvlink *, NvU32);
232 NV_STATUS (*__knvlinkStatePostLoad__)(struct OBJGPU *, struct KernelNvlink *, NvU32);
233 NV_STATUS (*__knvlinkStateUnload__)(struct OBJGPU *, struct KernelNvlink *, NvU32);
234 NV_STATUS (*__knvlinkStatePostUnload__)(struct OBJGPU *, struct KernelNvlink *, NvU32);
235 NvBool (*__knvlinkIsPresent__)(struct OBJGPU *, struct KernelNvlink *);
236 NV_STATUS (*__knvlinkSetUniqueFabricBaseAddress__)(struct OBJGPU *, struct KernelNvlink *, NvU64);
237 void (*__knvlinkClearUniqueFabricBaseAddress__)(struct OBJGPU *, struct KernelNvlink *);
238 NV_STATUS (*__knvlinkSetUniqueFabricEgmBaseAddress__)(struct OBJGPU *, struct KernelNvlink *, NvU64);
239 void (*__knvlinkClearUniqueFabricEgmBaseAddress__)(struct OBJGPU *, struct KernelNvlink *);
240 NV_STATUS (*__knvlinkHandleFaultUpInterrupt__)(struct OBJGPU *, struct KernelNvlink *, NvU32);
241 NV_STATUS (*__knvlinkValidateFabricBaseAddress__)(struct OBJGPU *, struct KernelNvlink *, NvU64);
242 NV_STATUS (*__knvlinkValidateFabricEgmBaseAddress__)(struct OBJGPU *, struct KernelNvlink *, NvU64);
243 NvU32 (*__knvlinkGetConnectedLinksMask__)(struct OBJGPU *, struct KernelNvlink *);
244 NV_STATUS (*__knvlinkEnableLinksPostTopology__)(struct OBJGPU *, struct KernelNvlink *, NvU32);
245 NV_STATUS (*__knvlinkOverrideConfig__)(struct OBJGPU *, struct KernelNvlink *, NvU32);
246 NV_STATUS (*__knvlinkFilterBridgeLinks__)(struct OBJGPU *, struct KernelNvlink *);
247 NvU32 (*__knvlinkGetUniquePeerIdMask__)(struct OBJGPU *, struct KernelNvlink *);
248 NvU32 (*__knvlinkGetUniquePeerId__)(struct OBJGPU *, struct KernelNvlink *, struct OBJGPU *);
249 NV_STATUS (*__knvlinkRemoveMapping__)(struct OBJGPU *, struct KernelNvlink *, NvBool, NvU32, NvBool);
250 NV_STATUS (*__knvlinkGetP2POptimalCEs__)(struct OBJGPU *, struct KernelNvlink *, NvU32, NvU32 *, NvU32 *, NvU32 *, NvU32 *);
251 NV_STATUS (*__knvlinkConstructHal__)(struct OBJGPU *, struct KernelNvlink *);
252 void (*__knvlinkSetupPeerMapping__)(struct OBJGPU *, struct KernelNvlink *, struct OBJGPU *, NvU32);
253 NV_STATUS (*__knvlinkProgramLinkSpeed__)(struct OBJGPU *, struct KernelNvlink *);
254 NvBool (*__knvlinkPoweredUpForD3__)(struct OBJGPU *, struct KernelNvlink *);
255 NV_STATUS (*__knvlinkIsAliSupported__)(struct OBJGPU *, struct KernelNvlink *);
256 NV_STATUS (*__knvlinkPostSetupNvlinkPeer__)(struct OBJGPU *, struct KernelNvlink *);
257 NV_STATUS (*__knvlinkDiscoverPostRxDetLinks__)(struct OBJGPU *, struct KernelNvlink *, struct OBJGPU *);
258 NV_STATUS (*__knvlinkLogAliDebugMessages__)(struct OBJGPU *, struct KernelNvlink *);
259 void (*__knvlinkGetEffectivePeerLinkMask__)(struct OBJGPU *, struct KernelNvlink *, struct OBJGPU *, NvU32 *);
260 NvU32 (*__knvlinkGetNumLinksToBeReducedPerIoctrl__)(struct OBJGPU *, struct KernelNvlink *);
261 NvBool (*__knvlinkIsBandwidthModeOff__)(struct KernelNvlink *);
262 void (*__knvlinkDirectConnectCheck__)(struct OBJGPU *, struct KernelNvlink *);
263 NvBool (*__knvlinkIsGpuReducedNvlinkConfig__)(struct OBJGPU *, struct KernelNvlink *);
264 NvBool (*__knvlinkIsFloorSweepingNeeded__)(struct OBJGPU *, struct KernelNvlink *, NvU32, NvU32);
265 NV_STATUS (*__knvlinkStateInitLocked__)(POBJGPU, struct KernelNvlink *);
266 NV_STATUS (*__knvlinkStatePreLoad__)(POBJGPU, struct KernelNvlink *, NvU32);
267 void (*__knvlinkStateDestroy__)(POBJGPU, struct KernelNvlink *);
268 NV_STATUS (*__knvlinkStatePreUnload__)(POBJGPU, struct KernelNvlink *, NvU32);
269 NV_STATUS (*__knvlinkStateInitUnlocked__)(POBJGPU, struct KernelNvlink *);
270 void (*__knvlinkInitMissing__)(POBJGPU, struct KernelNvlink *);
271 NV_STATUS (*__knvlinkStatePreInitUnlocked__)(POBJGPU, struct KernelNvlink *);
272 NvBool PDB_PROP_KNVLINK_ENABLED;
273 NvBool PDB_PROP_KNVLINK_L2_POWER_STATE_ENABLED;
274 NvBool PDB_PROP_KNVLINK_UNSET_NVLINK_PEER_SUPPORTED;
275 NvBool PDB_PROP_KNVLINK_CONFIG_REQUIRE_INITIALIZED_LINKS_CHECK;
276 NvBool PDB_PROP_KNVLINK_LANE_SHUTDOWN_ENABLED;
277 NvBool PDB_PROP_KNVLINK_LANE_SHUTDOWN_ON_UNLOAD;
278 NvBool PDB_PROP_KNVLINK_LINKRESET_AFTER_SHUTDOWN;
279 NvBool PDB_PROP_KNVLINK_BUG2274645_RESET_FOR_RTD3_FGC6;
280 NvBool PDB_PROP_KNVLINK_L2_POWER_STATE_FOR_LONG_IDLE;
281 NvBool PDB_PROP_KNVLINK_WAR_BUG_3471679_PEERID_FILTERING;
282 NvBool PDB_PROP_KNVLINK_MINION_FORCE_ALI_TRAINING;
283 NvBool PDB_PROP_KNVLINK_MINION_FORCE_NON_ALI_TRAINING;
284 NvBool PDB_PROP_KNVLINK_MINION_GFW_BOOT;
285 NvBool PDB_PROP_KNVLINK_SYSMEM_SUPPORT_ENABLED;
286 NvBool PDB_PROP_KNVLINK_FORCED_LOOPBACK_ON_SWITCH_MODE_ENABLED;
287 struct KernelIoctrl *PRIVATE_FIELD(pKernelIoctrl)[3];
288 NvU32 PRIVATE_FIELD(ioctrlMask);
289 NvU32 PRIVATE_FIELD(ipVerNvlink);
290 NvU8 PRIVATE_FIELD(ioctrlNumEntries);
291 NvU32 PRIVATE_FIELD(ioctrlSize);
292 NvU32 PRIVATE_FIELD(registryControl);
293 NvU32 PRIVATE_FIELD(minionControl);
294 NvU32 PRIVATE_FIELD(verboseMask);
295 NvU32 *PRIVATE_FIELD(pLinkConnection);
296 NvBool PRIVATE_FIELD(bChiplibConfig);
297 NvBool PRIVATE_FIELD(bRegistryLinkOverride);
298 NvU32 PRIVATE_FIELD(registryLinkMask);
299 NvBool PRIVATE_FIELD(bOverrideComputePeerMode);
300 NvU32 PRIVATE_FIELD(discoveredLinks);
301 NvU32 PRIVATE_FIELD(vbiosDisabledLinkMask);
302 NvU32 PRIVATE_FIELD(regkeyDisabledLinksMask);
303 NvU32 PRIVATE_FIELD(initDisabledLinksMask);
304 NvU32 PRIVATE_FIELD(connectedLinksMask);
305 NvU32 PRIVATE_FIELD(bridgeSensableLinks);
306 NvU32 PRIVATE_FIELD(bridgedLinks);
307 NvU32 PRIVATE_FIELD(enabledLinks);
308 FaultUpList PRIVATE_FIELD(faultUpLinks);
309 NvU32 PRIVATE_FIELD(initializedLinks);
310 KNVLINK_RM_LINK PRIVATE_FIELD(nvlinkLinks)[18];
311 NvBool PRIVATE_FIELD(bIsGpuDegraded);
312 NvU32 PRIVATE_FIELD(postRxDetLinkMask);
313 NvU32 PRIVATE_FIELD(disconnectedLinkMask);
314 NvU32 PRIVATE_FIELD(sysmemLinkMask);
315 NvU32 PRIVATE_FIELD(peerLinkMasks)[32];
316 NvU32 PRIVATE_FIELD(forcedSysmemDeviceType);
317 nvlink_device *PRIVATE_FIELD(pNvlinkDev);
318 NvU32 PRIVATE_FIELD(deviceLockRefcount);
319 char *PRIVATE_FIELD(driverName);
320 char *PRIVATE_FIELD(deviceName);
321 NvBool PRIVATE_FIELD(bVerifTrainingEnable);
322 NvBool PRIVATE_FIELD(bL2Entry);
323 NvBool PRIVATE_FIELD(bSkipLinkTraining);
324 NvBool PRIVATE_FIELD(bForceAutoconfig);
325 NvBool PRIVATE_FIELD(bForceEnableCoreLibRtlsims);
326 NvBool PRIVATE_FIELD(bEnableTrainingAtLoad);
327 NvBool PRIVATE_FIELD(bEnableSafeModeAtLoad);
328 NvBool PRIVATE_FIELD(bEnableAli);
329 NvBool PRIVATE_FIELD(bFloorSwept);
330 NvBool PRIVATE_FIELD(bLinkTrainingDebugSpew);
331 NvBool PRIVATE_FIELD(bDisableL2Mode);
332 NvU32 PRIVATE_FIELD(nvlinkLinkSpeed);
333 NvU32 PRIVATE_FIELD(errorRecoveries)[18];
334 NvBool PRIVATE_FIELD(bNvswitchProxy);
335 NvU64 PRIVATE_FIELD(fabricBaseAddr);
336 NvU64 PRIVATE_FIELD(fabricEgmBaseAddr);
337 };
338
339 struct KernelNvlink_PRIVATE {
340 const struct NVOC_RTTI *__nvoc_rtti;
341 struct OBJENGSTATE __nvoc_base_OBJENGSTATE;
342 struct Object *__nvoc_pbase_Object;
343 struct OBJENGSTATE *__nvoc_pbase_OBJENGSTATE;
344 struct KernelNvlink *__nvoc_pbase_KernelNvlink;
345 NV_STATUS (*__knvlinkConstructEngine__)(struct OBJGPU *, struct KernelNvlink *, ENGDESCRIPTOR);
346 NV_STATUS (*__knvlinkStatePreInitLocked__)(struct OBJGPU *, struct KernelNvlink *);
347 NV_STATUS (*__knvlinkStateLoad__)(struct OBJGPU *, struct KernelNvlink *, NvU32);
348 NV_STATUS (*__knvlinkStatePostLoad__)(struct OBJGPU *, struct KernelNvlink *, NvU32);
349 NV_STATUS (*__knvlinkStateUnload__)(struct OBJGPU *, struct KernelNvlink *, NvU32);
350 NV_STATUS (*__knvlinkStatePostUnload__)(struct OBJGPU *, struct KernelNvlink *, NvU32);
351 NvBool (*__knvlinkIsPresent__)(struct OBJGPU *, struct KernelNvlink *);
352 NV_STATUS (*__knvlinkSetUniqueFabricBaseAddress__)(struct OBJGPU *, struct KernelNvlink *, NvU64);
353 void (*__knvlinkClearUniqueFabricBaseAddress__)(struct OBJGPU *, struct KernelNvlink *);
354 NV_STATUS (*__knvlinkSetUniqueFabricEgmBaseAddress__)(struct OBJGPU *, struct KernelNvlink *, NvU64);
355 void (*__knvlinkClearUniqueFabricEgmBaseAddress__)(struct OBJGPU *, struct KernelNvlink *);
356 NV_STATUS (*__knvlinkHandleFaultUpInterrupt__)(struct OBJGPU *, struct KernelNvlink *, NvU32);
357 NV_STATUS (*__knvlinkValidateFabricBaseAddress__)(struct OBJGPU *, struct KernelNvlink *, NvU64);
358 NV_STATUS (*__knvlinkValidateFabricEgmBaseAddress__)(struct OBJGPU *, struct KernelNvlink *, NvU64);
359 NvU32 (*__knvlinkGetConnectedLinksMask__)(struct OBJGPU *, struct KernelNvlink *);
360 NV_STATUS (*__knvlinkEnableLinksPostTopology__)(struct OBJGPU *, struct KernelNvlink *, NvU32);
361 NV_STATUS (*__knvlinkOverrideConfig__)(struct OBJGPU *, struct KernelNvlink *, NvU32);
362 NV_STATUS (*__knvlinkFilterBridgeLinks__)(struct OBJGPU *, struct KernelNvlink *);
363 NvU32 (*__knvlinkGetUniquePeerIdMask__)(struct OBJGPU *, struct KernelNvlink *);
364 NvU32 (*__knvlinkGetUniquePeerId__)(struct OBJGPU *, struct KernelNvlink *, struct OBJGPU *);
365 NV_STATUS (*__knvlinkRemoveMapping__)(struct OBJGPU *, struct KernelNvlink *, NvBool, NvU32, NvBool);
366 NV_STATUS (*__knvlinkGetP2POptimalCEs__)(struct OBJGPU *, struct KernelNvlink *, NvU32, NvU32 *, NvU32 *, NvU32 *, NvU32 *);
367 NV_STATUS (*__knvlinkConstructHal__)(struct OBJGPU *, struct KernelNvlink *);
368 void (*__knvlinkSetupPeerMapping__)(struct OBJGPU *, struct KernelNvlink *, struct OBJGPU *, NvU32);
369 NV_STATUS (*__knvlinkProgramLinkSpeed__)(struct OBJGPU *, struct KernelNvlink *);
370 NvBool (*__knvlinkPoweredUpForD3__)(struct OBJGPU *, struct KernelNvlink *);
371 NV_STATUS (*__knvlinkIsAliSupported__)(struct OBJGPU *, struct KernelNvlink *);
372 NV_STATUS (*__knvlinkPostSetupNvlinkPeer__)(struct OBJGPU *, struct KernelNvlink *);
373 NV_STATUS (*__knvlinkDiscoverPostRxDetLinks__)(struct OBJGPU *, struct KernelNvlink *, struct OBJGPU *);
374 NV_STATUS (*__knvlinkLogAliDebugMessages__)(struct OBJGPU *, struct KernelNvlink *);
375 void (*__knvlinkGetEffectivePeerLinkMask__)(struct OBJGPU *, struct KernelNvlink *, struct OBJGPU *, NvU32 *);
376 NvU32 (*__knvlinkGetNumLinksToBeReducedPerIoctrl__)(struct OBJGPU *, struct KernelNvlink *);
377 NvBool (*__knvlinkIsBandwidthModeOff__)(struct KernelNvlink *);
378 void (*__knvlinkDirectConnectCheck__)(struct OBJGPU *, struct KernelNvlink *);
379 NvBool (*__knvlinkIsGpuReducedNvlinkConfig__)(struct OBJGPU *, struct KernelNvlink *);
380 NvBool (*__knvlinkIsFloorSweepingNeeded__)(struct OBJGPU *, struct KernelNvlink *, NvU32, NvU32);
381 NV_STATUS (*__knvlinkStateInitLocked__)(POBJGPU, struct KernelNvlink *);
382 NV_STATUS (*__knvlinkStatePreLoad__)(POBJGPU, struct KernelNvlink *, NvU32);
383 void (*__knvlinkStateDestroy__)(POBJGPU, struct KernelNvlink *);
384 NV_STATUS (*__knvlinkStatePreUnload__)(POBJGPU, struct KernelNvlink *, NvU32);
385 NV_STATUS (*__knvlinkStateInitUnlocked__)(POBJGPU, struct KernelNvlink *);
386 void (*__knvlinkInitMissing__)(POBJGPU, struct KernelNvlink *);
387 NV_STATUS (*__knvlinkStatePreInitUnlocked__)(POBJGPU, struct KernelNvlink *);
388 NvBool PDB_PROP_KNVLINK_ENABLED;
389 NvBool PDB_PROP_KNVLINK_L2_POWER_STATE_ENABLED;
390 NvBool PDB_PROP_KNVLINK_UNSET_NVLINK_PEER_SUPPORTED;
391 NvBool PDB_PROP_KNVLINK_CONFIG_REQUIRE_INITIALIZED_LINKS_CHECK;
392 NvBool PDB_PROP_KNVLINK_LANE_SHUTDOWN_ENABLED;
393 NvBool PDB_PROP_KNVLINK_LANE_SHUTDOWN_ON_UNLOAD;
394 NvBool PDB_PROP_KNVLINK_LINKRESET_AFTER_SHUTDOWN;
395 NvBool PDB_PROP_KNVLINK_BUG2274645_RESET_FOR_RTD3_FGC6;
396 NvBool PDB_PROP_KNVLINK_L2_POWER_STATE_FOR_LONG_IDLE;
397 NvBool PDB_PROP_KNVLINK_WAR_BUG_3471679_PEERID_FILTERING;
398 NvBool PDB_PROP_KNVLINK_MINION_FORCE_ALI_TRAINING;
399 NvBool PDB_PROP_KNVLINK_MINION_FORCE_NON_ALI_TRAINING;
400 NvBool PDB_PROP_KNVLINK_MINION_GFW_BOOT;
401 NvBool PDB_PROP_KNVLINK_SYSMEM_SUPPORT_ENABLED;
402 NvBool PDB_PROP_KNVLINK_FORCED_LOOPBACK_ON_SWITCH_MODE_ENABLED;
403 struct KernelIoctrl *pKernelIoctrl[3];
404 NvU32 ioctrlMask;
405 NvU32 ipVerNvlink;
406 NvU8 ioctrlNumEntries;
407 NvU32 ioctrlSize;
408 NvU32 registryControl;
409 NvU32 minionControl;
410 NvU32 verboseMask;
411 NvU32 *pLinkConnection;
412 NvBool bChiplibConfig;
413 NvBool bRegistryLinkOverride;
414 NvU32 registryLinkMask;
415 NvBool bOverrideComputePeerMode;
416 NvU32 discoveredLinks;
417 NvU32 vbiosDisabledLinkMask;
418 NvU32 regkeyDisabledLinksMask;
419 NvU32 initDisabledLinksMask;
420 NvU32 connectedLinksMask;
421 NvU32 bridgeSensableLinks;
422 NvU32 bridgedLinks;
423 NvU32 enabledLinks;
424 FaultUpList faultUpLinks;
425 NvU32 initializedLinks;
426 KNVLINK_RM_LINK nvlinkLinks[18];
427 NvBool bIsGpuDegraded;
428 NvU32 postRxDetLinkMask;
429 NvU32 disconnectedLinkMask;
430 NvU32 sysmemLinkMask;
431 NvU32 peerLinkMasks[32];
432 NvU32 forcedSysmemDeviceType;
433 nvlink_device *pNvlinkDev;
434 NvU32 deviceLockRefcount;
435 char *driverName;
436 char *deviceName;
437 NvBool bVerifTrainingEnable;
438 NvBool bL2Entry;
439 NvBool bSkipLinkTraining;
440 NvBool bForceAutoconfig;
441 NvBool bForceEnableCoreLibRtlsims;
442 NvBool bEnableTrainingAtLoad;
443 NvBool bEnableSafeModeAtLoad;
444 NvBool bEnableAli;
445 NvBool bFloorSwept;
446 NvBool bLinkTrainingDebugSpew;
447 NvBool bDisableL2Mode;
448 NvU32 nvlinkLinkSpeed;
449 NvU32 errorRecoveries[18];
450 NvBool bNvswitchProxy;
451 NvU64 fabricBaseAddr;
452 NvU64 fabricEgmBaseAddr;
453 };
454
455 #ifndef __NVOC_CLASS_KernelNvlink_TYPEDEF__
456 #define __NVOC_CLASS_KernelNvlink_TYPEDEF__
457 typedef struct KernelNvlink KernelNvlink;
458 #endif /* __NVOC_CLASS_KernelNvlink_TYPEDEF__ */
459
460 #ifndef __nvoc_class_id_KernelNvlink
461 #define __nvoc_class_id_KernelNvlink 0xce6818
462 #endif /* __nvoc_class_id_KernelNvlink */
463
464 extern const struct NVOC_CLASS_DEF __nvoc_class_def_KernelNvlink;
465
466 #define __staticCast_KernelNvlink(pThis) \
467 ((pThis)->__nvoc_pbase_KernelNvlink)
468
469 #ifdef __nvoc_kernel_nvlink_h_disabled
470 #define __dynamicCast_KernelNvlink(pThis) ((KernelNvlink*)NULL)
471 #else //__nvoc_kernel_nvlink_h_disabled
472 #define __dynamicCast_KernelNvlink(pThis) \
473 ((KernelNvlink*)__nvoc_dynamicCast(staticCast((pThis), Dynamic), classInfo(KernelNvlink)))
474 #endif //__nvoc_kernel_nvlink_h_disabled
475
476 #define PDB_PROP_KNVLINK_MINION_GFW_BOOT_BASE_CAST
477 #define PDB_PROP_KNVLINK_MINION_GFW_BOOT_BASE_NAME PDB_PROP_KNVLINK_MINION_GFW_BOOT
478 #define PDB_PROP_KNVLINK_CONFIG_REQUIRE_INITIALIZED_LINKS_CHECK_BASE_CAST
479 #define PDB_PROP_KNVLINK_CONFIG_REQUIRE_INITIALIZED_LINKS_CHECK_BASE_NAME PDB_PROP_KNVLINK_CONFIG_REQUIRE_INITIALIZED_LINKS_CHECK
480 #define PDB_PROP_KNVLINK_LANE_SHUTDOWN_ENABLED_BASE_CAST
481 #define PDB_PROP_KNVLINK_LANE_SHUTDOWN_ENABLED_BASE_NAME PDB_PROP_KNVLINK_LANE_SHUTDOWN_ENABLED
482 #define PDB_PROP_KNVLINK_SYSMEM_SUPPORT_ENABLED_BASE_CAST
483 #define PDB_PROP_KNVLINK_SYSMEM_SUPPORT_ENABLED_BASE_NAME PDB_PROP_KNVLINK_SYSMEM_SUPPORT_ENABLED
484 #define PDB_PROP_KNVLINK_MINION_FORCE_ALI_TRAINING_BASE_CAST
485 #define PDB_PROP_KNVLINK_MINION_FORCE_ALI_TRAINING_BASE_NAME PDB_PROP_KNVLINK_MINION_FORCE_ALI_TRAINING
486 #define PDB_PROP_KNVLINK_ENABLED_BASE_CAST
487 #define PDB_PROP_KNVLINK_ENABLED_BASE_NAME PDB_PROP_KNVLINK_ENABLED
488 #define PDB_PROP_KNVLINK_UNSET_NVLINK_PEER_SUPPORTED_BASE_CAST
489 #define PDB_PROP_KNVLINK_UNSET_NVLINK_PEER_SUPPORTED_BASE_NAME PDB_PROP_KNVLINK_UNSET_NVLINK_PEER_SUPPORTED
490 #define PDB_PROP_KNVLINK_MINION_FORCE_NON_ALI_TRAINING_BASE_CAST
491 #define PDB_PROP_KNVLINK_MINION_FORCE_NON_ALI_TRAINING_BASE_NAME PDB_PROP_KNVLINK_MINION_FORCE_NON_ALI_TRAINING
492 #define PDB_PROP_KNVLINK_L2_POWER_STATE_ENABLED_BASE_CAST
493 #define PDB_PROP_KNVLINK_L2_POWER_STATE_ENABLED_BASE_NAME PDB_PROP_KNVLINK_L2_POWER_STATE_ENABLED
494 #define PDB_PROP_KNVLINK_IS_MISSING_BASE_CAST __nvoc_base_OBJENGSTATE.
495 #define PDB_PROP_KNVLINK_IS_MISSING_BASE_NAME PDB_PROP_ENGSTATE_IS_MISSING
496 #define PDB_PROP_KNVLINK_WAR_BUG_3471679_PEERID_FILTERING_BASE_CAST
497 #define PDB_PROP_KNVLINK_WAR_BUG_3471679_PEERID_FILTERING_BASE_NAME PDB_PROP_KNVLINK_WAR_BUG_3471679_PEERID_FILTERING
498 #define PDB_PROP_KNVLINK_BUG2274645_RESET_FOR_RTD3_FGC6_BASE_CAST
499 #define PDB_PROP_KNVLINK_BUG2274645_RESET_FOR_RTD3_FGC6_BASE_NAME PDB_PROP_KNVLINK_BUG2274645_RESET_FOR_RTD3_FGC6
500 #define PDB_PROP_KNVLINK_LANE_SHUTDOWN_ON_UNLOAD_BASE_CAST
501 #define PDB_PROP_KNVLINK_LANE_SHUTDOWN_ON_UNLOAD_BASE_NAME PDB_PROP_KNVLINK_LANE_SHUTDOWN_ON_UNLOAD
502 #define PDB_PROP_KNVLINK_FORCED_LOOPBACK_ON_SWITCH_MODE_ENABLED_BASE_CAST
503 #define PDB_PROP_KNVLINK_FORCED_LOOPBACK_ON_SWITCH_MODE_ENABLED_BASE_NAME PDB_PROP_KNVLINK_FORCED_LOOPBACK_ON_SWITCH_MODE_ENABLED
504 #define PDB_PROP_KNVLINK_L2_POWER_STATE_FOR_LONG_IDLE_BASE_CAST
505 #define PDB_PROP_KNVLINK_L2_POWER_STATE_FOR_LONG_IDLE_BASE_NAME PDB_PROP_KNVLINK_L2_POWER_STATE_FOR_LONG_IDLE
506 #define PDB_PROP_KNVLINK_LINKRESET_AFTER_SHUTDOWN_BASE_CAST
507 #define PDB_PROP_KNVLINK_LINKRESET_AFTER_SHUTDOWN_BASE_NAME PDB_PROP_KNVLINK_LINKRESET_AFTER_SHUTDOWN
508
509 NV_STATUS __nvoc_objCreateDynamic_KernelNvlink(KernelNvlink**, Dynamic*, NvU32, va_list);
510
511 NV_STATUS __nvoc_objCreate_KernelNvlink(KernelNvlink**, Dynamic*, NvU32);
512 #define __objCreate_KernelNvlink(ppNewObj, pParent, createFlags) \
513 __nvoc_objCreate_KernelNvlink((ppNewObj), staticCast((pParent), Dynamic), (createFlags))
514
515 #define knvlinkConstructEngine(arg0, arg1, arg2) knvlinkConstructEngine_DISPATCH(arg0, arg1, arg2)
516 #define knvlinkStatePreInitLocked(arg0, arg1) knvlinkStatePreInitLocked_DISPATCH(arg0, arg1)
517 #define knvlinkStateLoad(arg0, arg1, arg2) knvlinkStateLoad_DISPATCH(arg0, arg1, arg2)
518 #define knvlinkStatePostLoad(arg0, arg1, arg2) knvlinkStatePostLoad_DISPATCH(arg0, arg1, arg2)
519 #define knvlinkStateUnload(arg0, arg1, arg2) knvlinkStateUnload_DISPATCH(arg0, arg1, arg2)
520 #define knvlinkStatePostUnload(arg0, arg1, arg2) knvlinkStatePostUnload_DISPATCH(arg0, arg1, arg2)
521 #define knvlinkIsPresent(arg0, arg1) knvlinkIsPresent_DISPATCH(arg0, arg1)
522 #define knvlinkSetUniqueFabricBaseAddress(pGpu, pKernelNvlink, arg0) knvlinkSetUniqueFabricBaseAddress_DISPATCH(pGpu, pKernelNvlink, arg0)
523 #define knvlinkSetUniqueFabricBaseAddress_HAL(pGpu, pKernelNvlink, arg0) knvlinkSetUniqueFabricBaseAddress_DISPATCH(pGpu, pKernelNvlink, arg0)
524 #define knvlinkClearUniqueFabricBaseAddress(pGpu, pKernelNvlink) knvlinkClearUniqueFabricBaseAddress_DISPATCH(pGpu, pKernelNvlink)
525 #define knvlinkClearUniqueFabricBaseAddress_HAL(pGpu, pKernelNvlink) knvlinkClearUniqueFabricBaseAddress_DISPATCH(pGpu, pKernelNvlink)
526 #define knvlinkSetUniqueFabricEgmBaseAddress(pGpu, pKernelNvlink, arg0) knvlinkSetUniqueFabricEgmBaseAddress_DISPATCH(pGpu, pKernelNvlink, arg0)
527 #define knvlinkSetUniqueFabricEgmBaseAddress_HAL(pGpu, pKernelNvlink, arg0) knvlinkSetUniqueFabricEgmBaseAddress_DISPATCH(pGpu, pKernelNvlink, arg0)
528 #define knvlinkClearUniqueFabricEgmBaseAddress(pGpu, pKernelNvlink) knvlinkClearUniqueFabricEgmBaseAddress_DISPATCH(pGpu, pKernelNvlink)
529 #define knvlinkClearUniqueFabricEgmBaseAddress_HAL(pGpu, pKernelNvlink) knvlinkClearUniqueFabricEgmBaseAddress_DISPATCH(pGpu, pKernelNvlink)
530 #define knvlinkHandleFaultUpInterrupt(pGpu, pKernelNvlink, arg0) knvlinkHandleFaultUpInterrupt_DISPATCH(pGpu, pKernelNvlink, arg0)
531 #define knvlinkHandleFaultUpInterrupt_HAL(pGpu, pKernelNvlink, arg0) knvlinkHandleFaultUpInterrupt_DISPATCH(pGpu, pKernelNvlink, arg0)
532 #define knvlinkValidateFabricBaseAddress(pGpu, pKernelNvlink, arg0) knvlinkValidateFabricBaseAddress_DISPATCH(pGpu, pKernelNvlink, arg0)
533 #define knvlinkValidateFabricBaseAddress_HAL(pGpu, pKernelNvlink, arg0) knvlinkValidateFabricBaseAddress_DISPATCH(pGpu, pKernelNvlink, arg0)
534 #define knvlinkValidateFabricEgmBaseAddress(pGpu, pKernelNvlink, arg0) knvlinkValidateFabricEgmBaseAddress_DISPATCH(pGpu, pKernelNvlink, arg0)
535 #define knvlinkValidateFabricEgmBaseAddress_HAL(pGpu, pKernelNvlink, arg0) knvlinkValidateFabricEgmBaseAddress_DISPATCH(pGpu, pKernelNvlink, arg0)
536 #define knvlinkGetConnectedLinksMask(pGpu, pKernelNvlink) knvlinkGetConnectedLinksMask_DISPATCH(pGpu, pKernelNvlink)
537 #define knvlinkGetConnectedLinksMask_HAL(pGpu, pKernelNvlink) knvlinkGetConnectedLinksMask_DISPATCH(pGpu, pKernelNvlink)
538 #define knvlinkEnableLinksPostTopology(pGpu, pKernelNvlink, arg0) knvlinkEnableLinksPostTopology_DISPATCH(pGpu, pKernelNvlink, arg0)
539 #define knvlinkEnableLinksPostTopology_HAL(pGpu, pKernelNvlink, arg0) knvlinkEnableLinksPostTopology_DISPATCH(pGpu, pKernelNvlink, arg0)
540 #define knvlinkOverrideConfig(pGpu, pKernelNvlink, arg0) knvlinkOverrideConfig_DISPATCH(pGpu, pKernelNvlink, arg0)
541 #define knvlinkOverrideConfig_HAL(pGpu, pKernelNvlink, arg0) knvlinkOverrideConfig_DISPATCH(pGpu, pKernelNvlink, arg0)
542 #define knvlinkFilterBridgeLinks(pGpu, pKernelNvlink) knvlinkFilterBridgeLinks_DISPATCH(pGpu, pKernelNvlink)
543 #define knvlinkFilterBridgeLinks_HAL(pGpu, pKernelNvlink) knvlinkFilterBridgeLinks_DISPATCH(pGpu, pKernelNvlink)
544 #define knvlinkGetUniquePeerIdMask(pGpu, pKernelNvlink) knvlinkGetUniquePeerIdMask_DISPATCH(pGpu, pKernelNvlink)
545 #define knvlinkGetUniquePeerIdMask_HAL(pGpu, pKernelNvlink) knvlinkGetUniquePeerIdMask_DISPATCH(pGpu, pKernelNvlink)
546 #define knvlinkGetUniquePeerId(pGpu, pKernelNvlink, pRemoteGpu) knvlinkGetUniquePeerId_DISPATCH(pGpu, pKernelNvlink, pRemoteGpu)
547 #define knvlinkGetUniquePeerId_HAL(pGpu, pKernelNvlink, pRemoteGpu) knvlinkGetUniquePeerId_DISPATCH(pGpu, pKernelNvlink, pRemoteGpu)
548 #define knvlinkRemoveMapping(pGpu, pKernelNvlink, bAllMapping, peerMask, bL2Entry) knvlinkRemoveMapping_DISPATCH(pGpu, pKernelNvlink, bAllMapping, peerMask, bL2Entry)
549 #define knvlinkRemoveMapping_HAL(pGpu, pKernelNvlink, bAllMapping, peerMask, bL2Entry) knvlinkRemoveMapping_DISPATCH(pGpu, pKernelNvlink, bAllMapping, peerMask, bL2Entry)
550 #define knvlinkGetP2POptimalCEs(pGpu, pKernelNvlink, arg0, arg1, arg2, arg3, arg4) knvlinkGetP2POptimalCEs_DISPATCH(pGpu, pKernelNvlink, arg0, arg1, arg2, arg3, arg4)
551 #define knvlinkGetP2POptimalCEs_HAL(pGpu, pKernelNvlink, arg0, arg1, arg2, arg3, arg4) knvlinkGetP2POptimalCEs_DISPATCH(pGpu, pKernelNvlink, arg0, arg1, arg2, arg3, arg4)
552 #define knvlinkConstructHal(pGpu, pKernelNvlink) knvlinkConstructHal_DISPATCH(pGpu, pKernelNvlink)
553 #define knvlinkConstructHal_HAL(pGpu, pKernelNvlink) knvlinkConstructHal_DISPATCH(pGpu, pKernelNvlink)
554 #define knvlinkSetupPeerMapping(pGpu, pKernelNvlink, pRemoteGpu, peerId) knvlinkSetupPeerMapping_DISPATCH(pGpu, pKernelNvlink, pRemoteGpu, peerId)
555 #define knvlinkSetupPeerMapping_HAL(pGpu, pKernelNvlink, pRemoteGpu, peerId) knvlinkSetupPeerMapping_DISPATCH(pGpu, pKernelNvlink, pRemoteGpu, peerId)
556 #define knvlinkProgramLinkSpeed(pGpu, pKernelNvlink) knvlinkProgramLinkSpeed_DISPATCH(pGpu, pKernelNvlink)
557 #define knvlinkProgramLinkSpeed_HAL(pGpu, pKernelNvlink) knvlinkProgramLinkSpeed_DISPATCH(pGpu, pKernelNvlink)
558 #define knvlinkPoweredUpForD3(pGpu, pKernelNvlink) knvlinkPoweredUpForD3_DISPATCH(pGpu, pKernelNvlink)
559 #define knvlinkPoweredUpForD3_HAL(pGpu, pKernelNvlink) knvlinkPoweredUpForD3_DISPATCH(pGpu, pKernelNvlink)
560 #define knvlinkIsAliSupported(pGpu, pKernelNvlink) knvlinkIsAliSupported_DISPATCH(pGpu, pKernelNvlink)
561 #define knvlinkIsAliSupported_HAL(pGpu, pKernelNvlink) knvlinkIsAliSupported_DISPATCH(pGpu, pKernelNvlink)
562 #define knvlinkPostSetupNvlinkPeer(pGpu, pKernelNvlink) knvlinkPostSetupNvlinkPeer_DISPATCH(pGpu, pKernelNvlink)
563 #define knvlinkPostSetupNvlinkPeer_HAL(pGpu, pKernelNvlink) knvlinkPostSetupNvlinkPeer_DISPATCH(pGpu, pKernelNvlink)
564 #define knvlinkDiscoverPostRxDetLinks(pGpu, pKernelNvlink, pPeerGpu) knvlinkDiscoverPostRxDetLinks_DISPATCH(pGpu, pKernelNvlink, pPeerGpu)
565 #define knvlinkDiscoverPostRxDetLinks_HAL(pGpu, pKernelNvlink, pPeerGpu) knvlinkDiscoverPostRxDetLinks_DISPATCH(pGpu, pKernelNvlink, pPeerGpu)
566 #define knvlinkLogAliDebugMessages(pGpu, pKernelNvlink) knvlinkLogAliDebugMessages_DISPATCH(pGpu, pKernelNvlink)
567 #define knvlinkLogAliDebugMessages_HAL(pGpu, pKernelNvlink) knvlinkLogAliDebugMessages_DISPATCH(pGpu, pKernelNvlink)
568 #define knvlinkGetEffectivePeerLinkMask(pGpu, pKernelNvlink, pRemoteGpu, pPeerLinkMask) knvlinkGetEffectivePeerLinkMask_DISPATCH(pGpu, pKernelNvlink, pRemoteGpu, pPeerLinkMask)
569 #define knvlinkGetEffectivePeerLinkMask_HAL(pGpu, pKernelNvlink, pRemoteGpu, pPeerLinkMask) knvlinkGetEffectivePeerLinkMask_DISPATCH(pGpu, pKernelNvlink, pRemoteGpu, pPeerLinkMask)
570 #define knvlinkGetNumLinksToBeReducedPerIoctrl(pGpu, pKernelNvlink) knvlinkGetNumLinksToBeReducedPerIoctrl_DISPATCH(pGpu, pKernelNvlink)
571 #define knvlinkGetNumLinksToBeReducedPerIoctrl_HAL(pGpu, pKernelNvlink) knvlinkGetNumLinksToBeReducedPerIoctrl_DISPATCH(pGpu, pKernelNvlink)
572 #define knvlinkIsBandwidthModeOff(pKernelNvlink) knvlinkIsBandwidthModeOff_DISPATCH(pKernelNvlink)
573 #define knvlinkIsBandwidthModeOff_HAL(pKernelNvlink) knvlinkIsBandwidthModeOff_DISPATCH(pKernelNvlink)
574 #define knvlinkDirectConnectCheck(pGpu, pKernelNvlink) knvlinkDirectConnectCheck_DISPATCH(pGpu, pKernelNvlink)
575 #define knvlinkDirectConnectCheck_HAL(pGpu, pKernelNvlink) knvlinkDirectConnectCheck_DISPATCH(pGpu, pKernelNvlink)
576 #define knvlinkIsGpuReducedNvlinkConfig(pGpu, pKernelNvlink) knvlinkIsGpuReducedNvlinkConfig_DISPATCH(pGpu, pKernelNvlink)
577 #define knvlinkIsGpuReducedNvlinkConfig_HAL(pGpu, pKernelNvlink) knvlinkIsGpuReducedNvlinkConfig_DISPATCH(pGpu, pKernelNvlink)
578 #define knvlinkIsFloorSweepingNeeded(pGpu, pKernelNvlink, numActiveLinksPerIoctrl, numLinksPerIoctrl) knvlinkIsFloorSweepingNeeded_DISPATCH(pGpu, pKernelNvlink, numActiveLinksPerIoctrl, numLinksPerIoctrl)
579 #define knvlinkIsFloorSweepingNeeded_HAL(pGpu, pKernelNvlink, numActiveLinksPerIoctrl, numLinksPerIoctrl) knvlinkIsFloorSweepingNeeded_DISPATCH(pGpu, pKernelNvlink, numActiveLinksPerIoctrl, numLinksPerIoctrl)
580 #define knvlinkStateInitLocked(pGpu, pEngstate) knvlinkStateInitLocked_DISPATCH(pGpu, pEngstate)
581 #define knvlinkStatePreLoad(pGpu, pEngstate, arg0) knvlinkStatePreLoad_DISPATCH(pGpu, pEngstate, arg0)
582 #define knvlinkStateDestroy(pGpu, pEngstate) knvlinkStateDestroy_DISPATCH(pGpu, pEngstate)
583 #define knvlinkStatePreUnload(pGpu, pEngstate, arg0) knvlinkStatePreUnload_DISPATCH(pGpu, pEngstate, arg0)
584 #define knvlinkStateInitUnlocked(pGpu, pEngstate) knvlinkStateInitUnlocked_DISPATCH(pGpu, pEngstate)
585 #define knvlinkInitMissing(pGpu, pEngstate) knvlinkInitMissing_DISPATCH(pGpu, pEngstate)
586 #define knvlinkStatePreInitUnlocked(pGpu, pEngstate) knvlinkStatePreInitUnlocked_DISPATCH(pGpu, pEngstate)
587 NvBool knvlinkIsForcedConfig_IMPL(struct OBJGPU *arg0, struct KernelNvlink *arg1);
588
589
590 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkIsForcedConfig(struct OBJGPU * arg0,struct KernelNvlink * arg1)591 static inline NvBool knvlinkIsForcedConfig(struct OBJGPU *arg0, struct KernelNvlink *arg1) {
592 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
593 return NV_FALSE;
594 }
595 #else //__nvoc_kernel_nvlink_h_disabled
596 #define knvlinkIsForcedConfig(arg0, arg1) knvlinkIsForcedConfig_IMPL(arg0, arg1)
597 #endif //__nvoc_kernel_nvlink_h_disabled
598
599 #define knvlinkIsForcedConfig_HAL(arg0, arg1) knvlinkIsForcedConfig(arg0, arg1)
600
601 NV_STATUS knvlinkApplyRegkeyOverrides_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *arg0);
602
603
604 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkApplyRegkeyOverrides(struct OBJGPU * pGpu,struct KernelNvlink * arg0)605 static inline NV_STATUS knvlinkApplyRegkeyOverrides(struct OBJGPU *pGpu, struct KernelNvlink *arg0) {
606 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
607 return NV_ERR_NOT_SUPPORTED;
608 }
609 #else //__nvoc_kernel_nvlink_h_disabled
610 #define knvlinkApplyRegkeyOverrides(pGpu, arg0) knvlinkApplyRegkeyOverrides_IMPL(pGpu, arg0)
611 #endif //__nvoc_kernel_nvlink_h_disabled
612
613 #define knvlinkApplyRegkeyOverrides_HAL(pGpu, arg0) knvlinkApplyRegkeyOverrides(pGpu, arg0)
614
615 NvBool knvlinkIsNvlinkDefaultEnabled_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *arg0);
616
617
618 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkIsNvlinkDefaultEnabled(struct OBJGPU * pGpu,struct KernelNvlink * arg0)619 static inline NvBool knvlinkIsNvlinkDefaultEnabled(struct OBJGPU *pGpu, struct KernelNvlink *arg0) {
620 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
621 return NV_FALSE;
622 }
623 #else //__nvoc_kernel_nvlink_h_disabled
624 #define knvlinkIsNvlinkDefaultEnabled(pGpu, arg0) knvlinkIsNvlinkDefaultEnabled_IMPL(pGpu, arg0)
625 #endif //__nvoc_kernel_nvlink_h_disabled
626
627 #define knvlinkIsNvlinkDefaultEnabled_HAL(pGpu, arg0) knvlinkIsNvlinkDefaultEnabled(pGpu, arg0)
628
629 NvBool knvlinkIsP2pLoopbackSupported_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
630
631
632 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkIsP2pLoopbackSupported(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)633 static inline NvBool knvlinkIsP2pLoopbackSupported(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
634 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
635 return NV_FALSE;
636 }
637 #else //__nvoc_kernel_nvlink_h_disabled
638 #define knvlinkIsP2pLoopbackSupported(pGpu, pKernelNvlink) knvlinkIsP2pLoopbackSupported_IMPL(pGpu, pKernelNvlink)
639 #endif //__nvoc_kernel_nvlink_h_disabled
640
641 #define knvlinkIsP2pLoopbackSupported_HAL(pGpu, pKernelNvlink) knvlinkIsP2pLoopbackSupported(pGpu, pKernelNvlink)
642
643 NvBool knvlinkIsP2pLoopbackSupportedPerLink_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0);
644
645
646 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkIsP2pLoopbackSupportedPerLink(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU32 arg0)647 static inline NvBool knvlinkIsP2pLoopbackSupportedPerLink(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0) {
648 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
649 return NV_FALSE;
650 }
651 #else //__nvoc_kernel_nvlink_h_disabled
652 #define knvlinkIsP2pLoopbackSupportedPerLink(pGpu, pKernelNvlink, arg0) knvlinkIsP2pLoopbackSupportedPerLink_IMPL(pGpu, pKernelNvlink, arg0)
653 #endif //__nvoc_kernel_nvlink_h_disabled
654
655 #define knvlinkIsP2pLoopbackSupportedPerLink_HAL(pGpu, pKernelNvlink, arg0) knvlinkIsP2pLoopbackSupportedPerLink(pGpu, pKernelNvlink, arg0)
656
657 NvBool knvlinkIsNvlinkP2pSupported_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, struct OBJGPU *pPeerGpu);
658
659
660 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkIsNvlinkP2pSupported(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,struct OBJGPU * pPeerGpu)661 static inline NvBool knvlinkIsNvlinkP2pSupported(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, struct OBJGPU *pPeerGpu) {
662 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
663 return NV_FALSE;
664 }
665 #else //__nvoc_kernel_nvlink_h_disabled
666 #define knvlinkIsNvlinkP2pSupported(pGpu, pKernelNvlink, pPeerGpu) knvlinkIsNvlinkP2pSupported_IMPL(pGpu, pKernelNvlink, pPeerGpu)
667 #endif //__nvoc_kernel_nvlink_h_disabled
668
669 #define knvlinkIsNvlinkP2pSupported_HAL(pGpu, pKernelNvlink, pPeerGpu) knvlinkIsNvlinkP2pSupported(pGpu, pKernelNvlink, pPeerGpu)
670
671 NvBool knvlinkCheckNvswitchP2pConfig_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, struct OBJGPU *pPeerGpu);
672
673
674 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkCheckNvswitchP2pConfig(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,struct OBJGPU * pPeerGpu)675 static inline NvBool knvlinkCheckNvswitchP2pConfig(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, struct OBJGPU *pPeerGpu) {
676 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
677 return NV_FALSE;
678 }
679 #else //__nvoc_kernel_nvlink_h_disabled
680 #define knvlinkCheckNvswitchP2pConfig(pGpu, pKernelNvlink, pPeerGpu) knvlinkCheckNvswitchP2pConfig_IMPL(pGpu, pKernelNvlink, pPeerGpu)
681 #endif //__nvoc_kernel_nvlink_h_disabled
682
683 #define knvlinkCheckNvswitchP2pConfig_HAL(pGpu, pKernelNvlink, pPeerGpu) knvlinkCheckNvswitchP2pConfig(pGpu, pKernelNvlink, pPeerGpu)
684
685 NV_STATUS knvlinkGetP2pConnectionStatus_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, struct OBJGPU *pPeerGpu);
686
687
688 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkGetP2pConnectionStatus(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,struct OBJGPU * pPeerGpu)689 static inline NV_STATUS knvlinkGetP2pConnectionStatus(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, struct OBJGPU *pPeerGpu) {
690 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
691 return NV_ERR_NOT_SUPPORTED;
692 }
693 #else //__nvoc_kernel_nvlink_h_disabled
694 #define knvlinkGetP2pConnectionStatus(pGpu, pKernelNvlink, pPeerGpu) knvlinkGetP2pConnectionStatus_IMPL(pGpu, pKernelNvlink, pPeerGpu)
695 #endif //__nvoc_kernel_nvlink_h_disabled
696
697 #define knvlinkGetP2pConnectionStatus_HAL(pGpu, pKernelNvlink, pPeerGpu) knvlinkGetP2pConnectionStatus(pGpu, pKernelNvlink, pPeerGpu)
698
699 NV_STATUS knvlinkUpdateCurrentConfig_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
700
701
702 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkUpdateCurrentConfig(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)703 static inline NV_STATUS knvlinkUpdateCurrentConfig(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
704 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
705 return NV_ERR_NOT_SUPPORTED;
706 }
707 #else //__nvoc_kernel_nvlink_h_disabled
708 #define knvlinkUpdateCurrentConfig(pGpu, pKernelNvlink) knvlinkUpdateCurrentConfig_IMPL(pGpu, pKernelNvlink)
709 #endif //__nvoc_kernel_nvlink_h_disabled
710
711 #define knvlinkUpdateCurrentConfig_HAL(pGpu, pKernelNvlink) knvlinkUpdateCurrentConfig(pGpu, pKernelNvlink)
712
713 void knvlinkCoreDriverLoadWar_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
714
715
716 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkCoreDriverLoadWar(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)717 static inline void knvlinkCoreDriverLoadWar(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
718 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
719 }
720 #else //__nvoc_kernel_nvlink_h_disabled
721 #define knvlinkCoreDriverLoadWar(pGpu, pKernelNvlink) knvlinkCoreDriverLoadWar_IMPL(pGpu, pKernelNvlink)
722 #endif //__nvoc_kernel_nvlink_h_disabled
723
724 #define knvlinkCoreDriverLoadWar_HAL(pGpu, pKernelNvlink) knvlinkCoreDriverLoadWar(pGpu, pKernelNvlink)
725
726 void knvlinkCoreDriverUnloadWar_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
727
728
729 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkCoreDriverUnloadWar(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)730 static inline void knvlinkCoreDriverUnloadWar(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
731 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
732 }
733 #else //__nvoc_kernel_nvlink_h_disabled
734 #define knvlinkCoreDriverUnloadWar(pGpu, pKernelNvlink) knvlinkCoreDriverUnloadWar_IMPL(pGpu, pKernelNvlink)
735 #endif //__nvoc_kernel_nvlink_h_disabled
736
737 #define knvlinkCoreDriverUnloadWar_HAL(pGpu, pKernelNvlink) knvlinkCoreDriverUnloadWar(pGpu, pKernelNvlink)
738
739 NV_STATUS knvlinkCoreIsDriverSupported_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
740
741
742 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkCoreIsDriverSupported(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)743 static inline NV_STATUS knvlinkCoreIsDriverSupported(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
744 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
745 return NV_ERR_NOT_SUPPORTED;
746 }
747 #else //__nvoc_kernel_nvlink_h_disabled
748 #define knvlinkCoreIsDriverSupported(pGpu, pKernelNvlink) knvlinkCoreIsDriverSupported_IMPL(pGpu, pKernelNvlink)
749 #endif //__nvoc_kernel_nvlink_h_disabled
750
751 #define knvlinkCoreIsDriverSupported_HAL(pGpu, pKernelNvlink) knvlinkCoreIsDriverSupported(pGpu, pKernelNvlink)
752
753 NV_STATUS knvlinkCoreAddDevice_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
754
755
756 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkCoreAddDevice(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)757 static inline NV_STATUS knvlinkCoreAddDevice(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
758 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
759 return NV_ERR_NOT_SUPPORTED;
760 }
761 #else //__nvoc_kernel_nvlink_h_disabled
762 #define knvlinkCoreAddDevice(pGpu, pKernelNvlink) knvlinkCoreAddDevice_IMPL(pGpu, pKernelNvlink)
763 #endif //__nvoc_kernel_nvlink_h_disabled
764
765 #define knvlinkCoreAddDevice_HAL(pGpu, pKernelNvlink) knvlinkCoreAddDevice(pGpu, pKernelNvlink)
766
767 NV_STATUS knvlinkCoreAddLink_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0);
768
769
770 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkCoreAddLink(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU32 arg0)771 static inline NV_STATUS knvlinkCoreAddLink(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0) {
772 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
773 return NV_ERR_NOT_SUPPORTED;
774 }
775 #else //__nvoc_kernel_nvlink_h_disabled
776 #define knvlinkCoreAddLink(pGpu, pKernelNvlink, arg0) knvlinkCoreAddLink_IMPL(pGpu, pKernelNvlink, arg0)
777 #endif //__nvoc_kernel_nvlink_h_disabled
778
779 #define knvlinkCoreAddLink_HAL(pGpu, pKernelNvlink, arg0) knvlinkCoreAddLink(pGpu, pKernelNvlink, arg0)
780
781 NV_STATUS knvlinkCoreRemoveDevice_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
782
783
784 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkCoreRemoveDevice(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)785 static inline NV_STATUS knvlinkCoreRemoveDevice(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
786 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
787 return NV_ERR_NOT_SUPPORTED;
788 }
789 #else //__nvoc_kernel_nvlink_h_disabled
790 #define knvlinkCoreRemoveDevice(pGpu, pKernelNvlink) knvlinkCoreRemoveDevice_IMPL(pGpu, pKernelNvlink)
791 #endif //__nvoc_kernel_nvlink_h_disabled
792
793 #define knvlinkCoreRemoveDevice_HAL(pGpu, pKernelNvlink) knvlinkCoreRemoveDevice(pGpu, pKernelNvlink)
794
795 void knvlinkSetDegradedMode_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0);
796
797
798 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkSetDegradedMode(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU32 arg0)799 static inline void knvlinkSetDegradedMode(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0) {
800 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
801 }
802 #else //__nvoc_kernel_nvlink_h_disabled
803 #define knvlinkSetDegradedMode(pGpu, pKernelNvlink, arg0) knvlinkSetDegradedMode_IMPL(pGpu, pKernelNvlink, arg0)
804 #endif //__nvoc_kernel_nvlink_h_disabled
805
806 #define knvlinkSetDegradedMode_HAL(pGpu, pKernelNvlink, arg0) knvlinkSetDegradedMode(pGpu, pKernelNvlink, arg0)
807
808 NvBool knvlinkGetDegradedMode_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
809
810
811 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkGetDegradedMode(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)812 static inline NvBool knvlinkGetDegradedMode(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
813 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
814 return NV_FALSE;
815 }
816 #else //__nvoc_kernel_nvlink_h_disabled
817 #define knvlinkGetDegradedMode(pGpu, pKernelNvlink) knvlinkGetDegradedMode_IMPL(pGpu, pKernelNvlink)
818 #endif //__nvoc_kernel_nvlink_h_disabled
819
820 #define knvlinkGetDegradedMode_HAL(pGpu, pKernelNvlink) knvlinkGetDegradedMode(pGpu, pKernelNvlink)
821
822 NV_STATUS knvlinkCoreRemoveLink_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0);
823
824
825 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkCoreRemoveLink(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU32 arg0)826 static inline NV_STATUS knvlinkCoreRemoveLink(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0) {
827 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
828 return NV_ERR_NOT_SUPPORTED;
829 }
830 #else //__nvoc_kernel_nvlink_h_disabled
831 #define knvlinkCoreRemoveLink(pGpu, pKernelNvlink, arg0) knvlinkCoreRemoveLink_IMPL(pGpu, pKernelNvlink, arg0)
832 #endif //__nvoc_kernel_nvlink_h_disabled
833
834 #define knvlinkCoreRemoveLink_HAL(pGpu, pKernelNvlink, arg0) knvlinkCoreRemoveLink(pGpu, pKernelNvlink, arg0)
835
836 NV_STATUS knvlinkCoreShutdownDeviceLinks_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvBool bForcePowerDown);
837
838
839 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkCoreShutdownDeviceLinks(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvBool bForcePowerDown)840 static inline NV_STATUS knvlinkCoreShutdownDeviceLinks(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvBool bForcePowerDown) {
841 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
842 return NV_ERR_NOT_SUPPORTED;
843 }
844 #else //__nvoc_kernel_nvlink_h_disabled
845 #define knvlinkCoreShutdownDeviceLinks(pGpu, pKernelNvlink, bForcePowerDown) knvlinkCoreShutdownDeviceLinks_IMPL(pGpu, pKernelNvlink, bForcePowerDown)
846 #endif //__nvoc_kernel_nvlink_h_disabled
847
848 #define knvlinkCoreShutdownDeviceLinks_HAL(pGpu, pKernelNvlink, bForcePowerDown) knvlinkCoreShutdownDeviceLinks(pGpu, pKernelNvlink, bForcePowerDown)
849
850 NV_STATUS knvlinkCoreResetDeviceLinks_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
851
852
853 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkCoreResetDeviceLinks(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)854 static inline NV_STATUS knvlinkCoreResetDeviceLinks(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
855 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
856 return NV_ERR_NOT_SUPPORTED;
857 }
858 #else //__nvoc_kernel_nvlink_h_disabled
859 #define knvlinkCoreResetDeviceLinks(pGpu, pKernelNvlink) knvlinkCoreResetDeviceLinks_IMPL(pGpu, pKernelNvlink)
860 #endif //__nvoc_kernel_nvlink_h_disabled
861
862 #define knvlinkCoreResetDeviceLinks_HAL(pGpu, pKernelNvlink) knvlinkCoreResetDeviceLinks(pGpu, pKernelNvlink)
863
864 NV_STATUS knvlinkCoreUpdateDeviceUUID_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
865
866
867 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkCoreUpdateDeviceUUID(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)868 static inline NV_STATUS knvlinkCoreUpdateDeviceUUID(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
869 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
870 return NV_ERR_NOT_SUPPORTED;
871 }
872 #else //__nvoc_kernel_nvlink_h_disabled
873 #define knvlinkCoreUpdateDeviceUUID(pGpu, pKernelNvlink) knvlinkCoreUpdateDeviceUUID_IMPL(pGpu, pKernelNvlink)
874 #endif //__nvoc_kernel_nvlink_h_disabled
875
876 #define knvlinkCoreUpdateDeviceUUID_HAL(pGpu, pKernelNvlink) knvlinkCoreUpdateDeviceUUID(pGpu, pKernelNvlink)
877
878 NV_STATUS knvlinkCoreGetRemoteDeviceInfo_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
879
880
881 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkCoreGetRemoteDeviceInfo(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)882 static inline NV_STATUS knvlinkCoreGetRemoteDeviceInfo(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
883 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
884 return NV_ERR_NOT_SUPPORTED;
885 }
886 #else //__nvoc_kernel_nvlink_h_disabled
887 #define knvlinkCoreGetRemoteDeviceInfo(pGpu, pKernelNvlink) knvlinkCoreGetRemoteDeviceInfo_IMPL(pGpu, pKernelNvlink)
888 #endif //__nvoc_kernel_nvlink_h_disabled
889
890 #define knvlinkCoreGetRemoteDeviceInfo_HAL(pGpu, pKernelNvlink) knvlinkCoreGetRemoteDeviceInfo(pGpu, pKernelNvlink)
891
892 NvBool knvlinkIsGpuConnectedToNvswitch_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
893
894
895 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkIsGpuConnectedToNvswitch(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)896 static inline NvBool knvlinkIsGpuConnectedToNvswitch(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
897 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
898 return NV_FALSE;
899 }
900 #else //__nvoc_kernel_nvlink_h_disabled
901 #define knvlinkIsGpuConnectedToNvswitch(pGpu, pKernelNvlink) knvlinkIsGpuConnectedToNvswitch_IMPL(pGpu, pKernelNvlink)
902 #endif //__nvoc_kernel_nvlink_h_disabled
903
904 #define knvlinkIsGpuConnectedToNvswitch_HAL(pGpu, pKernelNvlink) knvlinkIsGpuConnectedToNvswitch(pGpu, pKernelNvlink)
905
906 NvBool knvlinkIsLinkConnected_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0);
907
908
909 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkIsLinkConnected(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU32 arg0)910 static inline NvBool knvlinkIsLinkConnected(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0) {
911 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
912 return NV_FALSE;
913 }
914 #else //__nvoc_kernel_nvlink_h_disabled
915 #define knvlinkIsLinkConnected(pGpu, pKernelNvlink, arg0) knvlinkIsLinkConnected_IMPL(pGpu, pKernelNvlink, arg0)
916 #endif //__nvoc_kernel_nvlink_h_disabled
917
918 #define knvlinkIsLinkConnected_HAL(pGpu, pKernelNvlink, arg0) knvlinkIsLinkConnected(pGpu, pKernelNvlink, arg0)
919
920 NV_STATUS knvlinkTrainSysmemLinksToActive_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
921
922
923 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkTrainSysmemLinksToActive(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)924 static inline NV_STATUS knvlinkTrainSysmemLinksToActive(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
925 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
926 return NV_ERR_NOT_SUPPORTED;
927 }
928 #else //__nvoc_kernel_nvlink_h_disabled
929 #define knvlinkTrainSysmemLinksToActive(pGpu, pKernelNvlink) knvlinkTrainSysmemLinksToActive_IMPL(pGpu, pKernelNvlink)
930 #endif //__nvoc_kernel_nvlink_h_disabled
931
932 #define knvlinkTrainSysmemLinksToActive_HAL(pGpu, pKernelNvlink) knvlinkTrainSysmemLinksToActive(pGpu, pKernelNvlink)
933
934 NV_STATUS knvlinkTrainP2pLinksToActive_IMPL(struct OBJGPU *pGpu0, struct OBJGPU *pGpu1, struct KernelNvlink *pKernelNvlink);
935
936
937 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkTrainP2pLinksToActive(struct OBJGPU * pGpu0,struct OBJGPU * pGpu1,struct KernelNvlink * pKernelNvlink)938 static inline NV_STATUS knvlinkTrainP2pLinksToActive(struct OBJGPU *pGpu0, struct OBJGPU *pGpu1, struct KernelNvlink *pKernelNvlink) {
939 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
940 return NV_ERR_NOT_SUPPORTED;
941 }
942 #else //__nvoc_kernel_nvlink_h_disabled
943 #define knvlinkTrainP2pLinksToActive(pGpu0, pGpu1, pKernelNvlink) knvlinkTrainP2pLinksToActive_IMPL(pGpu0, pGpu1, pKernelNvlink)
944 #endif //__nvoc_kernel_nvlink_h_disabled
945
946 #define knvlinkTrainP2pLinksToActive_HAL(pGpu0, pGpu1, pKernelNvlink) knvlinkTrainP2pLinksToActive(pGpu0, pGpu1, pKernelNvlink)
947
948 NV_STATUS knvlinkCheckTrainingIsComplete_IMPL(struct OBJGPU *pGpu0, struct OBJGPU *pGpu1, struct KernelNvlink *pKernelNvlink);
949
950
951 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkCheckTrainingIsComplete(struct OBJGPU * pGpu0,struct OBJGPU * pGpu1,struct KernelNvlink * pKernelNvlink)952 static inline NV_STATUS knvlinkCheckTrainingIsComplete(struct OBJGPU *pGpu0, struct OBJGPU *pGpu1, struct KernelNvlink *pKernelNvlink) {
953 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
954 return NV_ERR_NOT_SUPPORTED;
955 }
956 #else //__nvoc_kernel_nvlink_h_disabled
957 #define knvlinkCheckTrainingIsComplete(pGpu0, pGpu1, pKernelNvlink) knvlinkCheckTrainingIsComplete_IMPL(pGpu0, pGpu1, pKernelNvlink)
958 #endif //__nvoc_kernel_nvlink_h_disabled
959
960 #define knvlinkCheckTrainingIsComplete_HAL(pGpu0, pGpu1, pKernelNvlink) knvlinkCheckTrainingIsComplete(pGpu0, pGpu1, pKernelNvlink)
961
962 NV_STATUS knvlinkTrainFabricLinksToActive_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
963
964
965 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkTrainFabricLinksToActive(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)966 static inline NV_STATUS knvlinkTrainFabricLinksToActive(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
967 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
968 return NV_ERR_NOT_SUPPORTED;
969 }
970 #else //__nvoc_kernel_nvlink_h_disabled
971 #define knvlinkTrainFabricLinksToActive(pGpu, pKernelNvlink) knvlinkTrainFabricLinksToActive_IMPL(pGpu, pKernelNvlink)
972 #endif //__nvoc_kernel_nvlink_h_disabled
973
974 #define knvlinkTrainFabricLinksToActive_HAL(pGpu, pKernelNvlink) knvlinkTrainFabricLinksToActive(pGpu, pKernelNvlink)
975
976 NV_STATUS knvlinkRetrainLink_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 linkId, NvBool bFromOff);
977
978
979 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkRetrainLink(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU32 linkId,NvBool bFromOff)980 static inline NV_STATUS knvlinkRetrainLink(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 linkId, NvBool bFromOff) {
981 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
982 return NV_ERR_NOT_SUPPORTED;
983 }
984 #else //__nvoc_kernel_nvlink_h_disabled
985 #define knvlinkRetrainLink(pGpu, pKernelNvlink, linkId, bFromOff) knvlinkRetrainLink_IMPL(pGpu, pKernelNvlink, linkId, bFromOff)
986 #endif //__nvoc_kernel_nvlink_h_disabled
987
988 #define knvlinkRetrainLink_HAL(pGpu, pKernelNvlink, linkId, bFromOff) knvlinkRetrainLink(pGpu, pKernelNvlink, linkId, bFromOff)
989
990 NvU32 knvlinkGetEnabledLinkMask_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *arg0);
991
992
993 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkGetEnabledLinkMask(struct OBJGPU * pGpu,struct KernelNvlink * arg0)994 static inline NvU32 knvlinkGetEnabledLinkMask(struct OBJGPU *pGpu, struct KernelNvlink *arg0) {
995 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
996 return 0;
997 }
998 #else //__nvoc_kernel_nvlink_h_disabled
999 #define knvlinkGetEnabledLinkMask(pGpu, arg0) knvlinkGetEnabledLinkMask_IMPL(pGpu, arg0)
1000 #endif //__nvoc_kernel_nvlink_h_disabled
1001
1002 #define knvlinkGetEnabledLinkMask_HAL(pGpu, arg0) knvlinkGetEnabledLinkMask(pGpu, arg0)
1003
1004 NvU32 knvlinkGetDiscoveredLinkMask_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *arg0);
1005
1006
1007 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkGetDiscoveredLinkMask(struct OBJGPU * pGpu,struct KernelNvlink * arg0)1008 static inline NvU32 knvlinkGetDiscoveredLinkMask(struct OBJGPU *pGpu, struct KernelNvlink *arg0) {
1009 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1010 return 0;
1011 }
1012 #else //__nvoc_kernel_nvlink_h_disabled
1013 #define knvlinkGetDiscoveredLinkMask(pGpu, arg0) knvlinkGetDiscoveredLinkMask_IMPL(pGpu, arg0)
1014 #endif //__nvoc_kernel_nvlink_h_disabled
1015
1016 #define knvlinkGetDiscoveredLinkMask_HAL(pGpu, arg0) knvlinkGetDiscoveredLinkMask(pGpu, arg0)
1017
1018 NV_STATUS knvlinkProcessInitDisabledLinks_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
1019
1020
1021 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkProcessInitDisabledLinks(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1022 static inline NV_STATUS knvlinkProcessInitDisabledLinks(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1023 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1024 return NV_ERR_NOT_SUPPORTED;
1025 }
1026 #else //__nvoc_kernel_nvlink_h_disabled
1027 #define knvlinkProcessInitDisabledLinks(pGpu, pKernelNvlink) knvlinkProcessInitDisabledLinks_IMPL(pGpu, pKernelNvlink)
1028 #endif //__nvoc_kernel_nvlink_h_disabled
1029
1030 #define knvlinkProcessInitDisabledLinks_HAL(pGpu, pKernelNvlink) knvlinkProcessInitDisabledLinks(pGpu, pKernelNvlink)
1031
1032 NvU32 knvlinkGetNumLinksToSystem_IMPL(struct OBJGPU *arg0, struct KernelNvlink *arg1);
1033
1034
1035 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkGetNumLinksToSystem(struct OBJGPU * arg0,struct KernelNvlink * arg1)1036 static inline NvU32 knvlinkGetNumLinksToSystem(struct OBJGPU *arg0, struct KernelNvlink *arg1) {
1037 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1038 return 0;
1039 }
1040 #else //__nvoc_kernel_nvlink_h_disabled
1041 #define knvlinkGetNumLinksToSystem(arg0, arg1) knvlinkGetNumLinksToSystem_IMPL(arg0, arg1)
1042 #endif //__nvoc_kernel_nvlink_h_disabled
1043
1044 #define knvlinkGetNumLinksToSystem_HAL(arg0, arg1) knvlinkGetNumLinksToSystem(arg0, arg1)
1045
1046 NvU32 knvlinkGetNumLinksToPeer_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, struct OBJGPU *pRemoteGpu);
1047
1048
1049 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkGetNumLinksToPeer(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,struct OBJGPU * pRemoteGpu)1050 static inline NvU32 knvlinkGetNumLinksToPeer(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, struct OBJGPU *pRemoteGpu) {
1051 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1052 return 0;
1053 }
1054 #else //__nvoc_kernel_nvlink_h_disabled
1055 #define knvlinkGetNumLinksToPeer(pGpu, pKernelNvlink, pRemoteGpu) knvlinkGetNumLinksToPeer_IMPL(pGpu, pKernelNvlink, pRemoteGpu)
1056 #endif //__nvoc_kernel_nvlink_h_disabled
1057
1058 #define knvlinkGetNumLinksToPeer_HAL(pGpu, pKernelNvlink, pRemoteGpu) knvlinkGetNumLinksToPeer(pGpu, pKernelNvlink, pRemoteGpu)
1059
1060 NvU32 knvlinkGetLinkMaskToPeer_IMPL(struct OBJGPU *pGpu0, struct KernelNvlink *pKernelNvlink0, struct OBJGPU *pGpu1);
1061
1062
1063 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkGetLinkMaskToPeer(struct OBJGPU * pGpu0,struct KernelNvlink * pKernelNvlink0,struct OBJGPU * pGpu1)1064 static inline NvU32 knvlinkGetLinkMaskToPeer(struct OBJGPU *pGpu0, struct KernelNvlink *pKernelNvlink0, struct OBJGPU *pGpu1) {
1065 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1066 return 0;
1067 }
1068 #else //__nvoc_kernel_nvlink_h_disabled
1069 #define knvlinkGetLinkMaskToPeer(pGpu0, pKernelNvlink0, pGpu1) knvlinkGetLinkMaskToPeer_IMPL(pGpu0, pKernelNvlink0, pGpu1)
1070 #endif //__nvoc_kernel_nvlink_h_disabled
1071
1072 #define knvlinkGetLinkMaskToPeer_HAL(pGpu0, pKernelNvlink0, pGpu1) knvlinkGetLinkMaskToPeer(pGpu0, pKernelNvlink0, pGpu1)
1073
1074 NV_STATUS knvlinkSetLinkMaskToPeer_IMPL(struct OBJGPU *pGpu0, struct KernelNvlink *pKernelNvlink0, struct OBJGPU *pGpu1, NvU32 peerLinkMask);
1075
1076
1077 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkSetLinkMaskToPeer(struct OBJGPU * pGpu0,struct KernelNvlink * pKernelNvlink0,struct OBJGPU * pGpu1,NvU32 peerLinkMask)1078 static inline NV_STATUS knvlinkSetLinkMaskToPeer(struct OBJGPU *pGpu0, struct KernelNvlink *pKernelNvlink0, struct OBJGPU *pGpu1, NvU32 peerLinkMask) {
1079 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1080 return NV_ERR_NOT_SUPPORTED;
1081 }
1082 #else //__nvoc_kernel_nvlink_h_disabled
1083 #define knvlinkSetLinkMaskToPeer(pGpu0, pKernelNvlink0, pGpu1, peerLinkMask) knvlinkSetLinkMaskToPeer_IMPL(pGpu0, pKernelNvlink0, pGpu1, peerLinkMask)
1084 #endif //__nvoc_kernel_nvlink_h_disabled
1085
1086 #define knvlinkSetLinkMaskToPeer_HAL(pGpu0, pKernelNvlink0, pGpu1, peerLinkMask) knvlinkSetLinkMaskToPeer(pGpu0, pKernelNvlink0, pGpu1, peerLinkMask)
1087
1088 NvU32 knvlinkGetPeersNvlinkMaskFromHshub_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
1089
1090
1091 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkGetPeersNvlinkMaskFromHshub(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1092 static inline NvU32 knvlinkGetPeersNvlinkMaskFromHshub(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1093 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1094 return 0;
1095 }
1096 #else //__nvoc_kernel_nvlink_h_disabled
1097 #define knvlinkGetPeersNvlinkMaskFromHshub(pGpu, pKernelNvlink) knvlinkGetPeersNvlinkMaskFromHshub_IMPL(pGpu, pKernelNvlink)
1098 #endif //__nvoc_kernel_nvlink_h_disabled
1099
1100 #define knvlinkGetPeersNvlinkMaskFromHshub_HAL(pGpu, pKernelNvlink) knvlinkGetPeersNvlinkMaskFromHshub(pGpu, pKernelNvlink)
1101
1102 NV_STATUS knvlinkPrepareForXVEReset_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvBool bForcePowerDown);
1103
1104
1105 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkPrepareForXVEReset(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvBool bForcePowerDown)1106 static inline NV_STATUS knvlinkPrepareForXVEReset(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvBool bForcePowerDown) {
1107 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1108 return NV_ERR_NOT_SUPPORTED;
1109 }
1110 #else //__nvoc_kernel_nvlink_h_disabled
1111 #define knvlinkPrepareForXVEReset(pGpu, pKernelNvlink, bForcePowerDown) knvlinkPrepareForXVEReset_IMPL(pGpu, pKernelNvlink, bForcePowerDown)
1112 #endif //__nvoc_kernel_nvlink_h_disabled
1113
1114 #define knvlinkPrepareForXVEReset_HAL(pGpu, pKernelNvlink, bForcePowerDown) knvlinkPrepareForXVEReset(pGpu, pKernelNvlink, bForcePowerDown)
1115
1116 NV_STATUS knvlinkEnterExitSleep_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0, NvBool arg1);
1117
1118
1119 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkEnterExitSleep(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU32 arg0,NvBool arg1)1120 static inline NV_STATUS knvlinkEnterExitSleep(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0, NvBool arg1) {
1121 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1122 return NV_ERR_NOT_SUPPORTED;
1123 }
1124 #else //__nvoc_kernel_nvlink_h_disabled
1125 #define knvlinkEnterExitSleep(pGpu, pKernelNvlink, arg0, arg1) knvlinkEnterExitSleep_IMPL(pGpu, pKernelNvlink, arg0, arg1)
1126 #endif //__nvoc_kernel_nvlink_h_disabled
1127
1128 #define knvlinkEnterExitSleep_HAL(pGpu, pKernelNvlink, arg0, arg1) knvlinkEnterExitSleep(pGpu, pKernelNvlink, arg0, arg1)
1129
1130 NV_STATUS knvlinkSyncLinkMasksAndVbiosInfo_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
1131
1132
1133 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkSyncLinkMasksAndVbiosInfo(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1134 static inline NV_STATUS knvlinkSyncLinkMasksAndVbiosInfo(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1135 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1136 return NV_ERR_NOT_SUPPORTED;
1137 }
1138 #else //__nvoc_kernel_nvlink_h_disabled
1139 #define knvlinkSyncLinkMasksAndVbiosInfo(pGpu, pKernelNvlink) knvlinkSyncLinkMasksAndVbiosInfo_IMPL(pGpu, pKernelNvlink)
1140 #endif //__nvoc_kernel_nvlink_h_disabled
1141
1142 #define knvlinkSyncLinkMasksAndVbiosInfo_HAL(pGpu, pKernelNvlink) knvlinkSyncLinkMasksAndVbiosInfo(pGpu, pKernelNvlink)
1143
1144 NV_STATUS knvlinkInbandMsgCallbackDispatcher_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvLink, NvU32 dataSize, NvU8 *pMessage);
1145
1146
1147 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkInbandMsgCallbackDispatcher(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvLink,NvU32 dataSize,NvU8 * pMessage)1148 static inline NV_STATUS knvlinkInbandMsgCallbackDispatcher(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvLink, NvU32 dataSize, NvU8 *pMessage) {
1149 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1150 return NV_ERR_NOT_SUPPORTED;
1151 }
1152 #else //__nvoc_kernel_nvlink_h_disabled
1153 #define knvlinkInbandMsgCallbackDispatcher(pGpu, pKernelNvLink, dataSize, pMessage) knvlinkInbandMsgCallbackDispatcher_IMPL(pGpu, pKernelNvLink, dataSize, pMessage)
1154 #endif //__nvoc_kernel_nvlink_h_disabled
1155
1156 #define knvlinkInbandMsgCallbackDispatcher_HAL(pGpu, pKernelNvLink, dataSize, pMessage) knvlinkInbandMsgCallbackDispatcher(pGpu, pKernelNvLink, dataSize, pMessage)
1157
1158 NV_STATUS knvlinkFatalErrorRecovery_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvLink);
1159
1160
1161 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkFatalErrorRecovery(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvLink)1162 static inline NV_STATUS knvlinkFatalErrorRecovery(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvLink) {
1163 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1164 return NV_ERR_NOT_SUPPORTED;
1165 }
1166 #else //__nvoc_kernel_nvlink_h_disabled
1167 #define knvlinkFatalErrorRecovery(pGpu, pKernelNvLink) knvlinkFatalErrorRecovery_IMPL(pGpu, pKernelNvLink)
1168 #endif //__nvoc_kernel_nvlink_h_disabled
1169
1170 #define knvlinkFatalErrorRecovery_HAL(pGpu, pKernelNvLink) knvlinkFatalErrorRecovery(pGpu, pKernelNvLink)
1171
1172 NV_STATUS knvlinkSendInbandData_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NV2080_CTRL_NVLINK_INBAND_SEND_DATA_PARAMS *pParams);
1173
1174
1175 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkSendInbandData(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NV2080_CTRL_NVLINK_INBAND_SEND_DATA_PARAMS * pParams)1176 static inline NV_STATUS knvlinkSendInbandData(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NV2080_CTRL_NVLINK_INBAND_SEND_DATA_PARAMS *pParams) {
1177 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1178 return NV_ERR_NOT_SUPPORTED;
1179 }
1180 #else //__nvoc_kernel_nvlink_h_disabled
1181 #define knvlinkSendInbandData(pGpu, pKernelNvlink, pParams) knvlinkSendInbandData_IMPL(pGpu, pKernelNvlink, pParams)
1182 #endif //__nvoc_kernel_nvlink_h_disabled
1183
1184 #define knvlinkSendInbandData_HAL(pGpu, pKernelNvlink, pParams) knvlinkSendInbandData(pGpu, pKernelNvlink, pParams)
1185
1186 NV_STATUS knvlinkUpdateLinkConnectionStatus_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0);
1187
1188
1189 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkUpdateLinkConnectionStatus(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU32 arg0)1190 static inline NV_STATUS knvlinkUpdateLinkConnectionStatus(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0) {
1191 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1192 return NV_ERR_NOT_SUPPORTED;
1193 }
1194 #else //__nvoc_kernel_nvlink_h_disabled
1195 #define knvlinkUpdateLinkConnectionStatus(pGpu, pKernelNvlink, arg0) knvlinkUpdateLinkConnectionStatus_IMPL(pGpu, pKernelNvlink, arg0)
1196 #endif //__nvoc_kernel_nvlink_h_disabled
1197
1198 #define knvlinkUpdateLinkConnectionStatus_HAL(pGpu, pKernelNvlink, arg0) knvlinkUpdateLinkConnectionStatus(pGpu, pKernelNvlink, arg0)
1199
1200 NV_STATUS knvlinkPreTrainLinksToActiveAli_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0, NvBool arg1);
1201
1202
1203 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkPreTrainLinksToActiveAli(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU32 arg0,NvBool arg1)1204 static inline NV_STATUS knvlinkPreTrainLinksToActiveAli(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0, NvBool arg1) {
1205 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1206 return NV_ERR_NOT_SUPPORTED;
1207 }
1208 #else //__nvoc_kernel_nvlink_h_disabled
1209 #define knvlinkPreTrainLinksToActiveAli(pGpu, pKernelNvlink, arg0, arg1) knvlinkPreTrainLinksToActiveAli_IMPL(pGpu, pKernelNvlink, arg0, arg1)
1210 #endif //__nvoc_kernel_nvlink_h_disabled
1211
1212 #define knvlinkPreTrainLinksToActiveAli_HAL(pGpu, pKernelNvlink, arg0, arg1) knvlinkPreTrainLinksToActiveAli(pGpu, pKernelNvlink, arg0, arg1)
1213
1214 NV_STATUS knvlinkTrainLinksToActiveAli_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0, NvBool arg1);
1215
1216
1217 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkTrainLinksToActiveAli(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU32 arg0,NvBool arg1)1218 static inline NV_STATUS knvlinkTrainLinksToActiveAli(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0, NvBool arg1) {
1219 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1220 return NV_ERR_NOT_SUPPORTED;
1221 }
1222 #else //__nvoc_kernel_nvlink_h_disabled
1223 #define knvlinkTrainLinksToActiveAli(pGpu, pKernelNvlink, arg0, arg1) knvlinkTrainLinksToActiveAli_IMPL(pGpu, pKernelNvlink, arg0, arg1)
1224 #endif //__nvoc_kernel_nvlink_h_disabled
1225
1226 #define knvlinkTrainLinksToActiveAli_HAL(pGpu, pKernelNvlink, arg0, arg1) knvlinkTrainLinksToActiveAli(pGpu, pKernelNvlink, arg0, arg1)
1227
1228 NV_STATUS knvlinkUpdatePostRxDetectLinkMask_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
1229
1230
1231 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkUpdatePostRxDetectLinkMask(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1232 static inline NV_STATUS knvlinkUpdatePostRxDetectLinkMask(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1233 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1234 return NV_ERR_NOT_SUPPORTED;
1235 }
1236 #else //__nvoc_kernel_nvlink_h_disabled
1237 #define knvlinkUpdatePostRxDetectLinkMask(pGpu, pKernelNvlink) knvlinkUpdatePostRxDetectLinkMask_IMPL(pGpu, pKernelNvlink)
1238 #endif //__nvoc_kernel_nvlink_h_disabled
1239
1240 #define knvlinkUpdatePostRxDetectLinkMask_HAL(pGpu, pKernelNvlink) knvlinkUpdatePostRxDetectLinkMask(pGpu, pKernelNvlink)
1241
1242 NV_STATUS knvlinkCopyNvlinkDeviceInfo_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
1243
1244
1245 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkCopyNvlinkDeviceInfo(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1246 static inline NV_STATUS knvlinkCopyNvlinkDeviceInfo(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1247 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1248 return NV_ERR_NOT_SUPPORTED;
1249 }
1250 #else //__nvoc_kernel_nvlink_h_disabled
1251 #define knvlinkCopyNvlinkDeviceInfo(pGpu, pKernelNvlink) knvlinkCopyNvlinkDeviceInfo_IMPL(pGpu, pKernelNvlink)
1252 #endif //__nvoc_kernel_nvlink_h_disabled
1253
1254 #define knvlinkCopyNvlinkDeviceInfo_HAL(pGpu, pKernelNvlink) knvlinkCopyNvlinkDeviceInfo(pGpu, pKernelNvlink)
1255
1256 NV_STATUS knvlinkCopyIoctrlDeviceInfo_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
1257
1258
1259 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkCopyIoctrlDeviceInfo(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1260 static inline NV_STATUS knvlinkCopyIoctrlDeviceInfo(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1261 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1262 return NV_ERR_NOT_SUPPORTED;
1263 }
1264 #else //__nvoc_kernel_nvlink_h_disabled
1265 #define knvlinkCopyIoctrlDeviceInfo(pGpu, pKernelNvlink) knvlinkCopyIoctrlDeviceInfo_IMPL(pGpu, pKernelNvlink)
1266 #endif //__nvoc_kernel_nvlink_h_disabled
1267
1268 #define knvlinkCopyIoctrlDeviceInfo_HAL(pGpu, pKernelNvlink) knvlinkCopyIoctrlDeviceInfo(pGpu, pKernelNvlink)
1269
1270 NV_STATUS knvlinkSetupTopologyForForcedConfig_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
1271
1272
1273 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkSetupTopologyForForcedConfig(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1274 static inline NV_STATUS knvlinkSetupTopologyForForcedConfig(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1275 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1276 return NV_ERR_NOT_SUPPORTED;
1277 }
1278 #else //__nvoc_kernel_nvlink_h_disabled
1279 #define knvlinkSetupTopologyForForcedConfig(pGpu, pKernelNvlink) knvlinkSetupTopologyForForcedConfig_IMPL(pGpu, pKernelNvlink)
1280 #endif //__nvoc_kernel_nvlink_h_disabled
1281
1282 #define knvlinkSetupTopologyForForcedConfig_HAL(pGpu, pKernelNvlink) knvlinkSetupTopologyForForcedConfig(pGpu, pKernelNvlink)
1283
1284 NV_STATUS knvlinkSyncLaneShutdownProps_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
1285
1286
1287 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkSyncLaneShutdownProps(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1288 static inline NV_STATUS knvlinkSyncLaneShutdownProps(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1289 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1290 return NV_ERR_NOT_SUPPORTED;
1291 }
1292 #else //__nvoc_kernel_nvlink_h_disabled
1293 #define knvlinkSyncLaneShutdownProps(pGpu, pKernelNvlink) knvlinkSyncLaneShutdownProps_IMPL(pGpu, pKernelNvlink)
1294 #endif //__nvoc_kernel_nvlink_h_disabled
1295
1296 #define knvlinkSyncLaneShutdownProps_HAL(pGpu, pKernelNvlink) knvlinkSyncLaneShutdownProps(pGpu, pKernelNvlink)
1297
1298 void knvlinkSetPowerFeatures_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
1299
1300
1301 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkSetPowerFeatures(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1302 static inline void knvlinkSetPowerFeatures(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1303 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1304 }
1305 #else //__nvoc_kernel_nvlink_h_disabled
1306 #define knvlinkSetPowerFeatures(pGpu, pKernelNvlink) knvlinkSetPowerFeatures_IMPL(pGpu, pKernelNvlink)
1307 #endif //__nvoc_kernel_nvlink_h_disabled
1308
1309 #define knvlinkSetPowerFeatures_HAL(pGpu, pKernelNvlink) knvlinkSetPowerFeatures(pGpu, pKernelNvlink)
1310
1311 NV_STATUS knvlinkExecGspRmRpc_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0, void *arg1, NvU32 arg2);
1312
1313
1314 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkExecGspRmRpc(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU32 arg0,void * arg1,NvU32 arg2)1315 static inline NV_STATUS knvlinkExecGspRmRpc(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0, void *arg1, NvU32 arg2) {
1316 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1317 return NV_ERR_NOT_SUPPORTED;
1318 }
1319 #else //__nvoc_kernel_nvlink_h_disabled
1320 #define knvlinkExecGspRmRpc(pGpu, pKernelNvlink, arg0, arg1, arg2) knvlinkExecGspRmRpc_IMPL(pGpu, pKernelNvlink, arg0, arg1, arg2)
1321 #endif //__nvoc_kernel_nvlink_h_disabled
1322
1323 #define knvlinkExecGspRmRpc_HAL(pGpu, pKernelNvlink, arg0, arg1, arg2) knvlinkExecGspRmRpc(pGpu, pKernelNvlink, arg0, arg1, arg2)
1324
1325 NvBool knvlinkIsNvswitchProxyPresent_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
1326
1327
1328 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkIsNvswitchProxyPresent(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1329 static inline NvBool knvlinkIsNvswitchProxyPresent(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1330 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1331 return NV_FALSE;
1332 }
1333 #else //__nvoc_kernel_nvlink_h_disabled
1334 #define knvlinkIsNvswitchProxyPresent(pGpu, pKernelNvlink) knvlinkIsNvswitchProxyPresent_IMPL(pGpu, pKernelNvlink)
1335 #endif //__nvoc_kernel_nvlink_h_disabled
1336
1337 #define knvlinkIsNvswitchProxyPresent_HAL(pGpu, pKernelNvlink) knvlinkIsNvswitchProxyPresent(pGpu, pKernelNvlink)
1338
1339 void knvlinkDetectNvswitchProxy_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
1340
1341
1342 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkDetectNvswitchProxy(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1343 static inline void knvlinkDetectNvswitchProxy(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1344 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1345 }
1346 #else //__nvoc_kernel_nvlink_h_disabled
1347 #define knvlinkDetectNvswitchProxy(pGpu, pKernelNvlink) knvlinkDetectNvswitchProxy_IMPL(pGpu, pKernelNvlink)
1348 #endif //__nvoc_kernel_nvlink_h_disabled
1349
1350 #define knvlinkDetectNvswitchProxy_HAL(pGpu, pKernelNvlink) knvlinkDetectNvswitchProxy(pGpu, pKernelNvlink)
1351
1352 NV_STATUS knvlinkSetUniqueFlaBaseAddress_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU64 arg0);
1353
1354
1355 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkSetUniqueFlaBaseAddress(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU64 arg0)1356 static inline NV_STATUS knvlinkSetUniqueFlaBaseAddress(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU64 arg0) {
1357 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1358 return NV_ERR_NOT_SUPPORTED;
1359 }
1360 #else //__nvoc_kernel_nvlink_h_disabled
1361 #define knvlinkSetUniqueFlaBaseAddress(pGpu, pKernelNvlink, arg0) knvlinkSetUniqueFlaBaseAddress_IMPL(pGpu, pKernelNvlink, arg0)
1362 #endif //__nvoc_kernel_nvlink_h_disabled
1363
1364 #define knvlinkSetUniqueFlaBaseAddress_HAL(pGpu, pKernelNvlink, arg0) knvlinkSetUniqueFlaBaseAddress(pGpu, pKernelNvlink, arg0)
1365
1366 NV_STATUS knvlinkFloorSweep_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 numLinksPerIp, NvU32 *pNumActiveLinks);
1367
1368
1369 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkFloorSweep(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU32 numLinksPerIp,NvU32 * pNumActiveLinks)1370 static inline NV_STATUS knvlinkFloorSweep(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 numLinksPerIp, NvU32 *pNumActiveLinks) {
1371 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1372 return NV_ERR_NOT_SUPPORTED;
1373 }
1374 #else //__nvoc_kernel_nvlink_h_disabled
1375 #define knvlinkFloorSweep(pGpu, pKernelNvlink, numLinksPerIp, pNumActiveLinks) knvlinkFloorSweep_IMPL(pGpu, pKernelNvlink, numLinksPerIp, pNumActiveLinks)
1376 #endif //__nvoc_kernel_nvlink_h_disabled
1377
1378 #define knvlinkFloorSweep_HAL(pGpu, pKernelNvlink, numLinksPerIp, pNumActiveLinks) knvlinkFloorSweep(pGpu, pKernelNvlink, numLinksPerIp, pNumActiveLinks)
1379
knvlinkGetUniqueFabricBaseAddress_e203db(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1380 static inline NvU64 knvlinkGetUniqueFabricBaseAddress_e203db(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1381 struct KernelNvlink_PRIVATE *pKernelNvlink_PRIVATE = (struct KernelNvlink_PRIVATE *)pKernelNvlink;
1382 return pKernelNvlink_PRIVATE->fabricBaseAddr;
1383 }
1384
1385
1386 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkGetUniqueFabricBaseAddress(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1387 static inline NvU64 knvlinkGetUniqueFabricBaseAddress(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1388 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1389 return 0;
1390 }
1391 #else //__nvoc_kernel_nvlink_h_disabled
1392 #define knvlinkGetUniqueFabricBaseAddress(pGpu, pKernelNvlink) knvlinkGetUniqueFabricBaseAddress_e203db(pGpu, pKernelNvlink)
1393 #endif //__nvoc_kernel_nvlink_h_disabled
1394
1395 #define knvlinkGetUniqueFabricBaseAddress_HAL(pGpu, pKernelNvlink) knvlinkGetUniqueFabricBaseAddress(pGpu, pKernelNvlink)
1396
knvlinkGetUniqueFabricEgmBaseAddress_4de472(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1397 static inline NvU64 knvlinkGetUniqueFabricEgmBaseAddress_4de472(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1398 struct KernelNvlink_PRIVATE *pKernelNvlink_PRIVATE = (struct KernelNvlink_PRIVATE *)pKernelNvlink;
1399 return pKernelNvlink_PRIVATE->fabricEgmBaseAddr;
1400 }
1401
1402
1403 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkGetUniqueFabricEgmBaseAddress(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1404 static inline NvU64 knvlinkGetUniqueFabricEgmBaseAddress(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1405 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1406 return 0;
1407 }
1408 #else //__nvoc_kernel_nvlink_h_disabled
1409 #define knvlinkGetUniqueFabricEgmBaseAddress(pGpu, pKernelNvlink) knvlinkGetUniqueFabricEgmBaseAddress_4de472(pGpu, pKernelNvlink)
1410 #endif //__nvoc_kernel_nvlink_h_disabled
1411
1412 #define knvlinkGetUniqueFabricEgmBaseAddress_HAL(pGpu, pKernelNvlink) knvlinkGetUniqueFabricEgmBaseAddress(pGpu, pKernelNvlink)
1413
1414 NV_STATUS knvlinkStatePostLoadHal_GV100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
1415
1416
1417 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkStatePostLoadHal(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1418 static inline NV_STATUS knvlinkStatePostLoadHal(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1419 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1420 return NV_ERR_NOT_SUPPORTED;
1421 }
1422 #else //__nvoc_kernel_nvlink_h_disabled
1423 #define knvlinkStatePostLoadHal(pGpu, pKernelNvlink) knvlinkStatePostLoadHal_GV100(pGpu, pKernelNvlink)
1424 #endif //__nvoc_kernel_nvlink_h_disabled
1425
1426 #define knvlinkStatePostLoadHal_HAL(pGpu, pKernelNvlink) knvlinkStatePostLoadHal(pGpu, pKernelNvlink)
1427
1428 NV_STATUS knvlinkApplyNvswitchDegradedModeSettings_GV100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 *switchLinkMasks);
1429
1430
1431 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkApplyNvswitchDegradedModeSettings(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU32 * switchLinkMasks)1432 static inline NV_STATUS knvlinkApplyNvswitchDegradedModeSettings(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 *switchLinkMasks) {
1433 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1434 return NV_ERR_NOT_SUPPORTED;
1435 }
1436 #else //__nvoc_kernel_nvlink_h_disabled
1437 #define knvlinkApplyNvswitchDegradedModeSettings(pGpu, pKernelNvlink, switchLinkMasks) knvlinkApplyNvswitchDegradedModeSettings_GV100(pGpu, pKernelNvlink, switchLinkMasks)
1438 #endif //__nvoc_kernel_nvlink_h_disabled
1439
1440 #define knvlinkApplyNvswitchDegradedModeSettings_HAL(pGpu, pKernelNvlink, switchLinkMasks) knvlinkApplyNvswitchDegradedModeSettings(pGpu, pKernelNvlink, switchLinkMasks)
1441
1442 NvU32 knvlinkGetNumActiveLinksPerIoctrl_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
1443
1444
1445 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkGetNumActiveLinksPerIoctrl(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1446 static inline NvU32 knvlinkGetNumActiveLinksPerIoctrl(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1447 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1448 return 0;
1449 }
1450 #else //__nvoc_kernel_nvlink_h_disabled
1451 #define knvlinkGetNumActiveLinksPerIoctrl(pGpu, pKernelNvlink) knvlinkGetNumActiveLinksPerIoctrl_IMPL(pGpu, pKernelNvlink)
1452 #endif //__nvoc_kernel_nvlink_h_disabled
1453
1454 #define knvlinkGetNumActiveLinksPerIoctrl_HAL(pGpu, pKernelNvlink) knvlinkGetNumActiveLinksPerIoctrl(pGpu, pKernelNvlink)
1455
1456 NvU32 knvlinkGetTotalNumLinksPerIoctrl_IMPL(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
1457
1458
1459 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkGetTotalNumLinksPerIoctrl(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1460 static inline NvU32 knvlinkGetTotalNumLinksPerIoctrl(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1461 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1462 return 0;
1463 }
1464 #else //__nvoc_kernel_nvlink_h_disabled
1465 #define knvlinkGetTotalNumLinksPerIoctrl(pGpu, pKernelNvlink) knvlinkGetTotalNumLinksPerIoctrl_IMPL(pGpu, pKernelNvlink)
1466 #endif //__nvoc_kernel_nvlink_h_disabled
1467
1468 #define knvlinkGetTotalNumLinksPerIoctrl_HAL(pGpu, pKernelNvlink) knvlinkGetTotalNumLinksPerIoctrl(pGpu, pKernelNvlink)
1469
1470 void knvlinkCoreGetDevicePciInfo_GP100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, nvlink_device_info *devInfo);
1471
1472
1473 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkCoreGetDevicePciInfo(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,nvlink_device_info * devInfo)1474 static inline void knvlinkCoreGetDevicePciInfo(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, nvlink_device_info *devInfo) {
1475 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1476 }
1477 #else //__nvoc_kernel_nvlink_h_disabled
1478 #define knvlinkCoreGetDevicePciInfo(pGpu, pKernelNvlink, devInfo) knvlinkCoreGetDevicePciInfo_GP100(pGpu, pKernelNvlink, devInfo)
1479 #endif //__nvoc_kernel_nvlink_h_disabled
1480
1481 #define knvlinkCoreGetDevicePciInfo_HAL(pGpu, pKernelNvlink, devInfo) knvlinkCoreGetDevicePciInfo(pGpu, pKernelNvlink, devInfo)
1482
1483 NV_STATUS knvlinkConstructEngine_IMPL(struct OBJGPU *arg0, struct KernelNvlink *arg1, ENGDESCRIPTOR arg2);
1484
knvlinkConstructEngine_DISPATCH(struct OBJGPU * arg0,struct KernelNvlink * arg1,ENGDESCRIPTOR arg2)1485 static inline NV_STATUS knvlinkConstructEngine_DISPATCH(struct OBJGPU *arg0, struct KernelNvlink *arg1, ENGDESCRIPTOR arg2) {
1486 return arg1->__knvlinkConstructEngine__(arg0, arg1, arg2);
1487 }
1488
1489 NV_STATUS knvlinkStatePreInitLocked_IMPL(struct OBJGPU *arg0, struct KernelNvlink *arg1);
1490
knvlinkStatePreInitLocked_DISPATCH(struct OBJGPU * arg0,struct KernelNvlink * arg1)1491 static inline NV_STATUS knvlinkStatePreInitLocked_DISPATCH(struct OBJGPU *arg0, struct KernelNvlink *arg1) {
1492 return arg1->__knvlinkStatePreInitLocked__(arg0, arg1);
1493 }
1494
1495 NV_STATUS knvlinkStateLoad_IMPL(struct OBJGPU *arg0, struct KernelNvlink *arg1, NvU32 arg2);
1496
knvlinkStateLoad_DISPATCH(struct OBJGPU * arg0,struct KernelNvlink * arg1,NvU32 arg2)1497 static inline NV_STATUS knvlinkStateLoad_DISPATCH(struct OBJGPU *arg0, struct KernelNvlink *arg1, NvU32 arg2) {
1498 return arg1->__knvlinkStateLoad__(arg0, arg1, arg2);
1499 }
1500
1501 NV_STATUS knvlinkStatePostLoad_IMPL(struct OBJGPU *arg0, struct KernelNvlink *arg1, NvU32 arg2);
1502
knvlinkStatePostLoad_DISPATCH(struct OBJGPU * arg0,struct KernelNvlink * arg1,NvU32 arg2)1503 static inline NV_STATUS knvlinkStatePostLoad_DISPATCH(struct OBJGPU *arg0, struct KernelNvlink *arg1, NvU32 arg2) {
1504 return arg1->__knvlinkStatePostLoad__(arg0, arg1, arg2);
1505 }
1506
1507 NV_STATUS knvlinkStateUnload_IMPL(struct OBJGPU *arg0, struct KernelNvlink *arg1, NvU32 arg2);
1508
knvlinkStateUnload_DISPATCH(struct OBJGPU * arg0,struct KernelNvlink * arg1,NvU32 arg2)1509 static inline NV_STATUS knvlinkStateUnload_DISPATCH(struct OBJGPU *arg0, struct KernelNvlink *arg1, NvU32 arg2) {
1510 return arg1->__knvlinkStateUnload__(arg0, arg1, arg2);
1511 }
1512
1513 NV_STATUS knvlinkStatePostUnload_IMPL(struct OBJGPU *arg0, struct KernelNvlink *arg1, NvU32 arg2);
1514
knvlinkStatePostUnload_DISPATCH(struct OBJGPU * arg0,struct KernelNvlink * arg1,NvU32 arg2)1515 static inline NV_STATUS knvlinkStatePostUnload_DISPATCH(struct OBJGPU *arg0, struct KernelNvlink *arg1, NvU32 arg2) {
1516 return arg1->__knvlinkStatePostUnload__(arg0, arg1, arg2);
1517 }
1518
1519 NvBool knvlinkIsPresent_IMPL(struct OBJGPU *arg0, struct KernelNvlink *arg1);
1520
knvlinkIsPresent_DISPATCH(struct OBJGPU * arg0,struct KernelNvlink * arg1)1521 static inline NvBool knvlinkIsPresent_DISPATCH(struct OBJGPU *arg0, struct KernelNvlink *arg1) {
1522 return arg1->__knvlinkIsPresent__(arg0, arg1);
1523 }
1524
1525 NV_STATUS knvlinkSetUniqueFabricBaseAddress_GV100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU64 arg0);
1526
1527 NV_STATUS knvlinkSetUniqueFabricBaseAddress_GH100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU64 arg0);
1528
knvlinkSetUniqueFabricBaseAddress_46f6a7(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU64 arg0)1529 static inline NV_STATUS knvlinkSetUniqueFabricBaseAddress_46f6a7(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU64 arg0) {
1530 return NV_ERR_NOT_SUPPORTED;
1531 }
1532
knvlinkSetUniqueFabricBaseAddress_DISPATCH(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU64 arg0)1533 static inline NV_STATUS knvlinkSetUniqueFabricBaseAddress_DISPATCH(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU64 arg0) {
1534 return pKernelNvlink->__knvlinkSetUniqueFabricBaseAddress__(pGpu, pKernelNvlink, arg0);
1535 }
1536
knvlinkClearUniqueFabricBaseAddress_b3696a(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1537 static inline void knvlinkClearUniqueFabricBaseAddress_b3696a(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1538 return;
1539 }
1540
1541 void knvlinkClearUniqueFabricBaseAddress_GH100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
1542
knvlinkClearUniqueFabricBaseAddress_DISPATCH(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1543 static inline void knvlinkClearUniqueFabricBaseAddress_DISPATCH(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1544 pKernelNvlink->__knvlinkClearUniqueFabricBaseAddress__(pGpu, pKernelNvlink);
1545 }
1546
1547 NV_STATUS knvlinkSetUniqueFabricEgmBaseAddress_GH100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU64 arg0);
1548
knvlinkSetUniqueFabricEgmBaseAddress_46f6a7(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU64 arg0)1549 static inline NV_STATUS knvlinkSetUniqueFabricEgmBaseAddress_46f6a7(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU64 arg0) {
1550 return NV_ERR_NOT_SUPPORTED;
1551 }
1552
knvlinkSetUniqueFabricEgmBaseAddress_DISPATCH(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU64 arg0)1553 static inline NV_STATUS knvlinkSetUniqueFabricEgmBaseAddress_DISPATCH(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU64 arg0) {
1554 return pKernelNvlink->__knvlinkSetUniqueFabricEgmBaseAddress__(pGpu, pKernelNvlink, arg0);
1555 }
1556
knvlinkClearUniqueFabricEgmBaseAddress_b3696a(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1557 static inline void knvlinkClearUniqueFabricEgmBaseAddress_b3696a(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1558 return;
1559 }
1560
1561 void knvlinkClearUniqueFabricEgmBaseAddress_GH100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
1562
knvlinkClearUniqueFabricEgmBaseAddress_DISPATCH(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1563 static inline void knvlinkClearUniqueFabricEgmBaseAddress_DISPATCH(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1564 pKernelNvlink->__knvlinkClearUniqueFabricEgmBaseAddress__(pGpu, pKernelNvlink);
1565 }
1566
1567 NV_STATUS knvlinkHandleFaultUpInterrupt_GH100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0);
1568
knvlinkHandleFaultUpInterrupt_46f6a7(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU32 arg0)1569 static inline NV_STATUS knvlinkHandleFaultUpInterrupt_46f6a7(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0) {
1570 return NV_ERR_NOT_SUPPORTED;
1571 }
1572
knvlinkHandleFaultUpInterrupt_DISPATCH(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU32 arg0)1573 static inline NV_STATUS knvlinkHandleFaultUpInterrupt_DISPATCH(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0) {
1574 return pKernelNvlink->__knvlinkHandleFaultUpInterrupt__(pGpu, pKernelNvlink, arg0);
1575 }
1576
1577 NV_STATUS knvlinkValidateFabricBaseAddress_GA100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU64 arg0);
1578
1579 NV_STATUS knvlinkValidateFabricBaseAddress_GH100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU64 arg0);
1580
knvlinkValidateFabricBaseAddress_46f6a7(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU64 arg0)1581 static inline NV_STATUS knvlinkValidateFabricBaseAddress_46f6a7(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU64 arg0) {
1582 return NV_ERR_NOT_SUPPORTED;
1583 }
1584
knvlinkValidateFabricBaseAddress_DISPATCH(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU64 arg0)1585 static inline NV_STATUS knvlinkValidateFabricBaseAddress_DISPATCH(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU64 arg0) {
1586 return pKernelNvlink->__knvlinkValidateFabricBaseAddress__(pGpu, pKernelNvlink, arg0);
1587 }
1588
1589 NV_STATUS knvlinkValidateFabricEgmBaseAddress_GH100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU64 arg0);
1590
knvlinkValidateFabricEgmBaseAddress_46f6a7(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU64 arg0)1591 static inline NV_STATUS knvlinkValidateFabricEgmBaseAddress_46f6a7(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU64 arg0) {
1592 return NV_ERR_NOT_SUPPORTED;
1593 }
1594
knvlinkValidateFabricEgmBaseAddress_DISPATCH(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU64 arg0)1595 static inline NV_STATUS knvlinkValidateFabricEgmBaseAddress_DISPATCH(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU64 arg0) {
1596 return pKernelNvlink->__knvlinkValidateFabricEgmBaseAddress__(pGpu, pKernelNvlink, arg0);
1597 }
1598
knvlinkGetConnectedLinksMask_15a734(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1599 static inline NvU32 knvlinkGetConnectedLinksMask_15a734(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1600 return 0U;
1601 }
1602
1603 NvU32 knvlinkGetConnectedLinksMask_TU102(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
1604
knvlinkGetConnectedLinksMask_DISPATCH(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1605 static inline NvU32 knvlinkGetConnectedLinksMask_DISPATCH(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1606 return pKernelNvlink->__knvlinkGetConnectedLinksMask__(pGpu, pKernelNvlink);
1607 }
1608
knvlinkEnableLinksPostTopology_56cd7a(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU32 arg0)1609 static inline NV_STATUS knvlinkEnableLinksPostTopology_56cd7a(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0) {
1610 return NV_OK;
1611 }
1612
1613 NV_STATUS knvlinkEnableLinksPostTopology_GV100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0);
1614
knvlinkEnableLinksPostTopology_DISPATCH(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU32 arg0)1615 static inline NV_STATUS knvlinkEnableLinksPostTopology_DISPATCH(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0) {
1616 return pKernelNvlink->__knvlinkEnableLinksPostTopology__(pGpu, pKernelNvlink, arg0);
1617 }
1618
knvlinkOverrideConfig_56cd7a(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU32 arg0)1619 static inline NV_STATUS knvlinkOverrideConfig_56cd7a(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0) {
1620 return NV_OK;
1621 }
1622
1623 NV_STATUS knvlinkOverrideConfig_GV100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0);
1624
1625 NV_STATUS knvlinkOverrideConfig_GA100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0);
1626
knvlinkOverrideConfig_DISPATCH(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU32 arg0)1627 static inline NV_STATUS knvlinkOverrideConfig_DISPATCH(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0) {
1628 return pKernelNvlink->__knvlinkOverrideConfig__(pGpu, pKernelNvlink, arg0);
1629 }
1630
1631 NV_STATUS knvlinkFilterBridgeLinks_TU102(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
1632
knvlinkFilterBridgeLinks_46f6a7(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1633 static inline NV_STATUS knvlinkFilterBridgeLinks_46f6a7(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1634 return NV_ERR_NOT_SUPPORTED;
1635 }
1636
knvlinkFilterBridgeLinks_DISPATCH(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1637 static inline NV_STATUS knvlinkFilterBridgeLinks_DISPATCH(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1638 return pKernelNvlink->__knvlinkFilterBridgeLinks__(pGpu, pKernelNvlink);
1639 }
1640
1641 NvU32 knvlinkGetUniquePeerIdMask_GP100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
1642
knvlinkGetUniquePeerIdMask_15a734(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1643 static inline NvU32 knvlinkGetUniquePeerIdMask_15a734(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1644 return 0U;
1645 }
1646
knvlinkGetUniquePeerIdMask_DISPATCH(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1647 static inline NvU32 knvlinkGetUniquePeerIdMask_DISPATCH(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1648 return pKernelNvlink->__knvlinkGetUniquePeerIdMask__(pGpu, pKernelNvlink);
1649 }
1650
knvlinkGetUniquePeerId_c732fb(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,struct OBJGPU * pRemoteGpu)1651 static inline NvU32 knvlinkGetUniquePeerId_c732fb(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, struct OBJGPU *pRemoteGpu) {
1652 return 4294967295U;
1653 }
1654
1655 NvU32 knvlinkGetUniquePeerId_GP100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, struct OBJGPU *pRemoteGpu);
1656
knvlinkGetUniquePeerId_DISPATCH(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,struct OBJGPU * pRemoteGpu)1657 static inline NvU32 knvlinkGetUniquePeerId_DISPATCH(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, struct OBJGPU *pRemoteGpu) {
1658 return pKernelNvlink->__knvlinkGetUniquePeerId__(pGpu, pKernelNvlink, pRemoteGpu);
1659 }
1660
knvlinkRemoveMapping_56cd7a(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvBool bAllMapping,NvU32 peerMask,NvBool bL2Entry)1661 static inline NV_STATUS knvlinkRemoveMapping_56cd7a(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvBool bAllMapping, NvU32 peerMask, NvBool bL2Entry) {
1662 return NV_OK;
1663 }
1664
1665 NV_STATUS knvlinkRemoveMapping_GP100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvBool bAllMapping, NvU32 peerMask, NvBool bL2Entry);
1666
1667 NV_STATUS knvlinkRemoveMapping_GA100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvBool bAllMapping, NvU32 peerMask, NvBool bL2Entry);
1668
knvlinkRemoveMapping_DISPATCH(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvBool bAllMapping,NvU32 peerMask,NvBool bL2Entry)1669 static inline NV_STATUS knvlinkRemoveMapping_DISPATCH(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvBool bAllMapping, NvU32 peerMask, NvBool bL2Entry) {
1670 return pKernelNvlink->__knvlinkRemoveMapping__(pGpu, pKernelNvlink, bAllMapping, peerMask, bL2Entry);
1671 }
1672
knvlinkGetP2POptimalCEs_56cd7a(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU32 arg0,NvU32 * arg1,NvU32 * arg2,NvU32 * arg3,NvU32 * arg4)1673 static inline NV_STATUS knvlinkGetP2POptimalCEs_56cd7a(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0, NvU32 *arg1, NvU32 *arg2, NvU32 *arg3, NvU32 *arg4) {
1674 return NV_OK;
1675 }
1676
1677 NV_STATUS knvlinkGetP2POptimalCEs_GP100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0, NvU32 *arg1, NvU32 *arg2, NvU32 *arg3, NvU32 *arg4);
1678
knvlinkGetP2POptimalCEs_DISPATCH(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU32 arg0,NvU32 * arg1,NvU32 * arg2,NvU32 * arg3,NvU32 * arg4)1679 static inline NV_STATUS knvlinkGetP2POptimalCEs_DISPATCH(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 arg0, NvU32 *arg1, NvU32 *arg2, NvU32 *arg3, NvU32 *arg4) {
1680 return pKernelNvlink->__knvlinkGetP2POptimalCEs__(pGpu, pKernelNvlink, arg0, arg1, arg2, arg3, arg4);
1681 }
1682
knvlinkConstructHal_56cd7a(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1683 static inline NV_STATUS knvlinkConstructHal_56cd7a(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1684 return NV_OK;
1685 }
1686
1687 NV_STATUS knvlinkConstructHal_GV100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
1688
knvlinkConstructHal_DISPATCH(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1689 static inline NV_STATUS knvlinkConstructHal_DISPATCH(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1690 return pKernelNvlink->__knvlinkConstructHal__(pGpu, pKernelNvlink);
1691 }
1692
knvlinkSetupPeerMapping_b3696a(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,struct OBJGPU * pRemoteGpu,NvU32 peerId)1693 static inline void knvlinkSetupPeerMapping_b3696a(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, struct OBJGPU *pRemoteGpu, NvU32 peerId) {
1694 return;
1695 }
1696
1697 void knvlinkSetupPeerMapping_GP100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, struct OBJGPU *pRemoteGpu, NvU32 peerId);
1698
knvlinkSetupPeerMapping_DISPATCH(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,struct OBJGPU * pRemoteGpu,NvU32 peerId)1699 static inline void knvlinkSetupPeerMapping_DISPATCH(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, struct OBJGPU *pRemoteGpu, NvU32 peerId) {
1700 pKernelNvlink->__knvlinkSetupPeerMapping__(pGpu, pKernelNvlink, pRemoteGpu, peerId);
1701 }
1702
knvlinkProgramLinkSpeed_56cd7a(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1703 static inline NV_STATUS knvlinkProgramLinkSpeed_56cd7a(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1704 return NV_OK;
1705 }
1706
1707 NV_STATUS knvlinkProgramLinkSpeed_GV100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
1708
knvlinkProgramLinkSpeed_DISPATCH(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1709 static inline NV_STATUS knvlinkProgramLinkSpeed_DISPATCH(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1710 return pKernelNvlink->__knvlinkProgramLinkSpeed__(pGpu, pKernelNvlink);
1711 }
1712
knvlinkPoweredUpForD3_491d52(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1713 static inline NvBool knvlinkPoweredUpForD3_491d52(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1714 return ((NvBool)(0 != 0));
1715 }
1716
1717 NvBool knvlinkPoweredUpForD3_TU102(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
1718
knvlinkPoweredUpForD3_DISPATCH(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1719 static inline NvBool knvlinkPoweredUpForD3_DISPATCH(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1720 return pKernelNvlink->__knvlinkPoweredUpForD3__(pGpu, pKernelNvlink);
1721 }
1722
knvlinkIsAliSupported_56cd7a(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1723 static inline NV_STATUS knvlinkIsAliSupported_56cd7a(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1724 return NV_OK;
1725 }
1726
1727 NV_STATUS knvlinkIsAliSupported_GH100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
1728
knvlinkIsAliSupported_DISPATCH(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1729 static inline NV_STATUS knvlinkIsAliSupported_DISPATCH(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1730 return pKernelNvlink->__knvlinkIsAliSupported__(pGpu, pKernelNvlink);
1731 }
1732
knvlinkPostSetupNvlinkPeer_56cd7a(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1733 static inline NV_STATUS knvlinkPostSetupNvlinkPeer_56cd7a(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1734 return NV_OK;
1735 }
1736
1737 NV_STATUS knvlinkPostSetupNvlinkPeer_GH100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
1738
knvlinkPostSetupNvlinkPeer_DISPATCH(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1739 static inline NV_STATUS knvlinkPostSetupNvlinkPeer_DISPATCH(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1740 return pKernelNvlink->__knvlinkPostSetupNvlinkPeer__(pGpu, pKernelNvlink);
1741 }
1742
1743 NV_STATUS knvlinkDiscoverPostRxDetLinks_GH100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, struct OBJGPU *pPeerGpu);
1744
knvlinkDiscoverPostRxDetLinks_46f6a7(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,struct OBJGPU * pPeerGpu)1745 static inline NV_STATUS knvlinkDiscoverPostRxDetLinks_46f6a7(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, struct OBJGPU *pPeerGpu) {
1746 return NV_ERR_NOT_SUPPORTED;
1747 }
1748
knvlinkDiscoverPostRxDetLinks_DISPATCH(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,struct OBJGPU * pPeerGpu)1749 static inline NV_STATUS knvlinkDiscoverPostRxDetLinks_DISPATCH(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, struct OBJGPU *pPeerGpu) {
1750 return pKernelNvlink->__knvlinkDiscoverPostRxDetLinks__(pGpu, pKernelNvlink, pPeerGpu);
1751 }
1752
1753 NV_STATUS knvlinkLogAliDebugMessages_GH100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
1754
knvlinkLogAliDebugMessages_46f6a7(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1755 static inline NV_STATUS knvlinkLogAliDebugMessages_46f6a7(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1756 return NV_ERR_NOT_SUPPORTED;
1757 }
1758
knvlinkLogAliDebugMessages_DISPATCH(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1759 static inline NV_STATUS knvlinkLogAliDebugMessages_DISPATCH(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1760 return pKernelNvlink->__knvlinkLogAliDebugMessages__(pGpu, pKernelNvlink);
1761 }
1762
knvlinkGetEffectivePeerLinkMask_b3696a(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,struct OBJGPU * pRemoteGpu,NvU32 * pPeerLinkMask)1763 static inline void knvlinkGetEffectivePeerLinkMask_b3696a(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, struct OBJGPU *pRemoteGpu, NvU32 *pPeerLinkMask) {
1764 return;
1765 }
1766
1767 void knvlinkGetEffectivePeerLinkMask_GH100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, struct OBJGPU *pRemoteGpu, NvU32 *pPeerLinkMask);
1768
knvlinkGetEffectivePeerLinkMask_DISPATCH(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,struct OBJGPU * pRemoteGpu,NvU32 * pPeerLinkMask)1769 static inline void knvlinkGetEffectivePeerLinkMask_DISPATCH(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, struct OBJGPU *pRemoteGpu, NvU32 *pPeerLinkMask) {
1770 pKernelNvlink->__knvlinkGetEffectivePeerLinkMask__(pGpu, pKernelNvlink, pRemoteGpu, pPeerLinkMask);
1771 }
1772
knvlinkGetNumLinksToBeReducedPerIoctrl_4a4dee(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1773 static inline NvU32 knvlinkGetNumLinksToBeReducedPerIoctrl_4a4dee(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1774 return 0;
1775 }
1776
1777 NvU32 knvlinkGetNumLinksToBeReducedPerIoctrl_GH100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
1778
knvlinkGetNumLinksToBeReducedPerIoctrl_DISPATCH(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1779 static inline NvU32 knvlinkGetNumLinksToBeReducedPerIoctrl_DISPATCH(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1780 return pKernelNvlink->__knvlinkGetNumLinksToBeReducedPerIoctrl__(pGpu, pKernelNvlink);
1781 }
1782
knvlinkIsBandwidthModeOff_491d52(struct KernelNvlink * pKernelNvlink)1783 static inline NvBool knvlinkIsBandwidthModeOff_491d52(struct KernelNvlink *pKernelNvlink) {
1784 return ((NvBool)(0 != 0));
1785 }
1786
1787 NvBool knvlinkIsBandwidthModeOff_GH100(struct KernelNvlink *pKernelNvlink);
1788
knvlinkIsBandwidthModeOff_DISPATCH(struct KernelNvlink * pKernelNvlink)1789 static inline NvBool knvlinkIsBandwidthModeOff_DISPATCH(struct KernelNvlink *pKernelNvlink) {
1790 return pKernelNvlink->__knvlinkIsBandwidthModeOff__(pKernelNvlink);
1791 }
1792
knvlinkDirectConnectCheck_b3696a(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1793 static inline void knvlinkDirectConnectCheck_b3696a(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1794 return;
1795 }
1796
1797 void knvlinkDirectConnectCheck_GH100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
1798
knvlinkDirectConnectCheck_DISPATCH(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1799 static inline void knvlinkDirectConnectCheck_DISPATCH(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1800 pKernelNvlink->__knvlinkDirectConnectCheck__(pGpu, pKernelNvlink);
1801 }
1802
knvlinkIsGpuReducedNvlinkConfig_491d52(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1803 static inline NvBool knvlinkIsGpuReducedNvlinkConfig_491d52(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1804 return ((NvBool)(0 != 0));
1805 }
1806
1807 NvBool knvlinkIsGpuReducedNvlinkConfig_GA100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink);
1808
knvlinkIsGpuReducedNvlinkConfig_DISPATCH(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1809 static inline NvBool knvlinkIsGpuReducedNvlinkConfig_DISPATCH(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1810 return pKernelNvlink->__knvlinkIsGpuReducedNvlinkConfig__(pGpu, pKernelNvlink);
1811 }
1812
knvlinkIsFloorSweepingNeeded_491d52(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU32 numActiveLinksPerIoctrl,NvU32 numLinksPerIoctrl)1813 static inline NvBool knvlinkIsFloorSweepingNeeded_491d52(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 numActiveLinksPerIoctrl, NvU32 numLinksPerIoctrl) {
1814 return ((NvBool)(0 != 0));
1815 }
1816
1817 NvBool knvlinkIsFloorSweepingNeeded_GH100(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 numActiveLinksPerIoctrl, NvU32 numLinksPerIoctrl);
1818
knvlinkIsFloorSweepingNeeded_DISPATCH(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU32 numActiveLinksPerIoctrl,NvU32 numLinksPerIoctrl)1819 static inline NvBool knvlinkIsFloorSweepingNeeded_DISPATCH(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 numActiveLinksPerIoctrl, NvU32 numLinksPerIoctrl) {
1820 return pKernelNvlink->__knvlinkIsFloorSweepingNeeded__(pGpu, pKernelNvlink, numActiveLinksPerIoctrl, numLinksPerIoctrl);
1821 }
1822
knvlinkStateInitLocked_DISPATCH(POBJGPU pGpu,struct KernelNvlink * pEngstate)1823 static inline NV_STATUS knvlinkStateInitLocked_DISPATCH(POBJGPU pGpu, struct KernelNvlink *pEngstate) {
1824 return pEngstate->__knvlinkStateInitLocked__(pGpu, pEngstate);
1825 }
1826
knvlinkStatePreLoad_DISPATCH(POBJGPU pGpu,struct KernelNvlink * pEngstate,NvU32 arg0)1827 static inline NV_STATUS knvlinkStatePreLoad_DISPATCH(POBJGPU pGpu, struct KernelNvlink *pEngstate, NvU32 arg0) {
1828 return pEngstate->__knvlinkStatePreLoad__(pGpu, pEngstate, arg0);
1829 }
1830
knvlinkStateDestroy_DISPATCH(POBJGPU pGpu,struct KernelNvlink * pEngstate)1831 static inline void knvlinkStateDestroy_DISPATCH(POBJGPU pGpu, struct KernelNvlink *pEngstate) {
1832 pEngstate->__knvlinkStateDestroy__(pGpu, pEngstate);
1833 }
1834
knvlinkStatePreUnload_DISPATCH(POBJGPU pGpu,struct KernelNvlink * pEngstate,NvU32 arg0)1835 static inline NV_STATUS knvlinkStatePreUnload_DISPATCH(POBJGPU pGpu, struct KernelNvlink *pEngstate, NvU32 arg0) {
1836 return pEngstate->__knvlinkStatePreUnload__(pGpu, pEngstate, arg0);
1837 }
1838
knvlinkStateInitUnlocked_DISPATCH(POBJGPU pGpu,struct KernelNvlink * pEngstate)1839 static inline NV_STATUS knvlinkStateInitUnlocked_DISPATCH(POBJGPU pGpu, struct KernelNvlink *pEngstate) {
1840 return pEngstate->__knvlinkStateInitUnlocked__(pGpu, pEngstate);
1841 }
1842
knvlinkInitMissing_DISPATCH(POBJGPU pGpu,struct KernelNvlink * pEngstate)1843 static inline void knvlinkInitMissing_DISPATCH(POBJGPU pGpu, struct KernelNvlink *pEngstate) {
1844 pEngstate->__knvlinkInitMissing__(pGpu, pEngstate);
1845 }
1846
knvlinkStatePreInitUnlocked_DISPATCH(POBJGPU pGpu,struct KernelNvlink * pEngstate)1847 static inline NV_STATUS knvlinkStatePreInitUnlocked_DISPATCH(POBJGPU pGpu, struct KernelNvlink *pEngstate) {
1848 return pEngstate->__knvlinkStatePreInitUnlocked__(pGpu, pEngstate);
1849 }
1850
knvlinkGetInitializedLinkMask(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1851 static inline NvU32 knvlinkGetInitializedLinkMask(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1852 struct KernelNvlink_PRIVATE *pKernelNvlink_PRIVATE = (struct KernelNvlink_PRIVATE *)pKernelNvlink;
1853 return pKernelNvlink_PRIVATE->initializedLinks;
1854 }
1855
knvlinkAreLinksRegistryOverriden(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1856 static inline NvBool knvlinkAreLinksRegistryOverriden(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1857 struct KernelNvlink_PRIVATE *pKernelNvlink_PRIVATE = (struct KernelNvlink_PRIVATE *)pKernelNvlink;
1858 return pKernelNvlink_PRIVATE->bRegistryLinkOverride;
1859 }
1860
knvlinkGetPeerLinkMask(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU32 peerId)1861 static inline NvU32 knvlinkGetPeerLinkMask(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 peerId) {
1862 struct KernelNvlink_PRIVATE *pKernelNvlink_PRIVATE = (struct KernelNvlink_PRIVATE *)pKernelNvlink;
1863 return (peerId < ((sizeof (pKernelNvlink_PRIVATE->peerLinkMasks) / sizeof ((pKernelNvlink_PRIVATE->peerLinkMasks)[0])))) ? pKernelNvlink_PRIVATE->peerLinkMasks[peerId] : 0;
1864 }
1865
knvlinkGetLinkData(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink,NvU32 linkId)1866 static inline KNVLINK_RM_LINK *knvlinkGetLinkData(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 linkId) {
1867 struct KernelNvlink_PRIVATE *pKernelNvlink_PRIVATE = (struct KernelNvlink_PRIVATE *)pKernelNvlink;
1868 return (linkId < ((sizeof (pKernelNvlink_PRIVATE->nvlinkLinks) / sizeof ((pKernelNvlink_PRIVATE->nvlinkLinks)[0])))) ? &pKernelNvlink_PRIVATE->nvlinkLinks[linkId] : ((void *)0);
1869 }
1870
knvlinkGetIPVersion(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1871 static inline NvU32 knvlinkGetIPVersion(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1872 struct KernelNvlink_PRIVATE *pKernelNvlink_PRIVATE = (struct KernelNvlink_PRIVATE *)pKernelNvlink;
1873 return pKernelNvlink_PRIVATE->ipVerNvlink;
1874 }
1875
knvlinkGetMinionControl(struct OBJGPU * pGpu,struct KernelNvlink * pKernelNvlink)1876 static inline NvU32 knvlinkGetMinionControl(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink) {
1877 struct KernelNvlink_PRIVATE *pKernelNvlink_PRIVATE = (struct KernelNvlink_PRIVATE *)pKernelNvlink;
1878 return pKernelNvlink_PRIVATE->minionControl;
1879 }
1880
1881 void knvlinkDestruct_IMPL(struct KernelNvlink *arg0);
1882
1883 #define __nvoc_knvlinkDestruct(arg0) knvlinkDestruct_IMPL(arg0)
1884 NV_STATUS knvlinkRemoveMissingIoctrlObjects_IMPL(struct OBJGPU *arg0, struct KernelNvlink *arg1);
1885
1886 #ifdef __nvoc_kernel_nvlink_h_disabled
knvlinkRemoveMissingIoctrlObjects(struct OBJGPU * arg0,struct KernelNvlink * arg1)1887 static inline NV_STATUS knvlinkRemoveMissingIoctrlObjects(struct OBJGPU *arg0, struct KernelNvlink *arg1) {
1888 NV_ASSERT_FAILED_PRECOMP("KernelNvlink was disabled!");
1889 return NV_ERR_NOT_SUPPORTED;
1890 }
1891 #else //__nvoc_kernel_nvlink_h_disabled
1892 #define knvlinkRemoveMissingIoctrlObjects(arg0, arg1) knvlinkRemoveMissingIoctrlObjects_IMPL(arg0, arg1)
1893 #endif //__nvoc_kernel_nvlink_h_disabled
1894
1895 #undef PRIVATE_FIELD
1896
1897
1898
1899 // IOCTRL GET defines
1900 #define KNVLINK_GET_IOCTRL(pKernelNvlink, PublicId) (pKernelNvlink->pKernelIoctrl[PublicId])
1901 #define KNVLINK_LINK_GET_IOCTRL(pKernelNvlink, linkId) \
1902 (KNVLINK_GET_IOCTRL(pKernelNvlink, pKernelNvlink->nvlinkLinks[linkId].ioctrlId))
1903
1904 #define KNVLINK_IS_LINK_CONNECTED_TO_GPU(pKernelNvlink, linkId, pRemoteGpu) \
1905 ((pKernelNvlink != NULL) && (pRemoteGpu != NULL) && \
1906 (pKernelNvlink->nvlinkLinks[linkId].remoteEndInfo.bConnected) && \
1907 (pKernelNvlink->nvlinkLinks[linkId].remoteEndInfo.domain == gpuGetDomain(pRemoteGpu)) && \
1908 (pKernelNvlink->nvlinkLinks[linkId].remoteEndInfo.bus == gpuGetBus(pRemoteGpu)) && \
1909 (pKernelNvlink->nvlinkLinks[linkId].remoteEndInfo.device == gpuGetDevice(pRemoteGpu)) && \
1910 (pKernelNvlink->nvlinkLinks[linkId].remoteEndInfo.function == 0))
1911
1912 //
1913 // NVLINK internal functions
1914 //
1915 NV_STATUS knvlinkRetrainLinkFromOff (struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 linkId);
1916 NV_STATUS knvlinkRetrainLinkFromSafe(struct OBJGPU *pGpu, struct KernelNvlink *pKernelNvlink, NvU32 linkId);
1917
1918 //
1919 // NVLINK Callback functions from core library
1920 //
1921 #if defined(INCLUDE_NVLINK_LIB)
1922
1923 // Device callback functions
1924
1925 NvlStatus knvlinkCoreAddDeviceCallback (nvlink_device *dev);
1926 NvlStatus knvlinkCoreRemoveDeviceCallback(nvlink_device *dev);
1927
1928 // Link callback functions
1929
1930 NvlStatus knvlinkCoreAddLinkCallback (nvlink_link *link);
1931 NvlStatus knvlinkCoreRemoveLinkCallback (nvlink_link *link);
1932 NvlStatus knvlinkCoreLockLinkCallback (nvlink_link *link);
1933 void knvlinkCoreUnlockLinkCallback (nvlink_link *link);
1934 NvlStatus knvlinkCoreQueueLinkChangeCallback (nvlink_link_change *link_change);
1935 NvlStatus knvlinkCoreSetDlLinkModeCallback (nvlink_link *link, NvU64 mode, NvU32 flags);
1936 NvlStatus knvlinkCoreGetDlLinkModeCallback (nvlink_link *link, NvU64 *mode);
1937 NvlStatus knvlinkCoreSetTlLinkModeCallback (nvlink_link *link, NvU64 mode, NvU32 flags);
1938 NvlStatus knvlinkCoreGetTlLinkModeCallback (nvlink_link *link, NvU64 *mode);
1939 NvlStatus knvlinkCoreWriteDiscoveryTokenCallback (nvlink_link *link, NvU64 token);
1940 NvlStatus knvlinkCoreReadDiscoveryTokenCallback (nvlink_link *link, NvU64 *token);
1941 NvlStatus knvlinkCoreSetTxSublinkModeCallback (nvlink_link *link, NvU64 mode, NvU32 flags);
1942 NvlStatus knvlinkCoreSetRxSublinkModeCallback (nvlink_link *link, NvU64 mode, NvU32 flags);
1943 NvlStatus knvlinkCoreGetTxSublinkModeCallback (nvlink_link *link, NvU64 *mode, NvU32 *subMode);
1944 NvlStatus knvlinkCoreGetRxSublinkModeCallback (nvlink_link *link, NvU64 *mode, NvU32 *subMode);
1945 NvlStatus knvlinkCoreSetRxSublinkDetectCallback (nvlink_link *link, NvU32 flags);
1946 NvlStatus knvlinkCoreGetRxSublinkDetectCallback (nvlink_link *link);
1947 void knvlinkCoreTrainingCompleteCallback (nvlink_link *link);
1948 void knvlinkCoreGetUphyLoadCallback (nvlink_link *link, NvBool *bUnlocked);
1949 NvlStatus knvlinkCoreAliTrainingCallback (nvlink_link *link);
1950
1951 NvlStatus knvlinkCoreGetCciLinkModeCallback (nvlink_link *link, NvU64 *mode);
1952
1953 #endif
1954
1955 // NVLINK Utility Functions
1956 void knvlinkUtoa(NvU8 *, NvU64, NvU64);
1957
1958 NV_STATUS ioctrlFaultUpTmrHandler(struct OBJGPU *, struct OBJTMR *,TMR_EVENT *);
1959
1960 #endif // _KERNEL_NVLINK_H_
1961
1962 #ifdef __cplusplus
1963 } // extern "C"
1964 #endif
1965
1966 #endif // _G_KERNEL_NVLINK_NVOC_H_
1967