1 #ifndef _G_SYSTEM_NVOC_H_
2 #define _G_SYSTEM_NVOC_H_
3 #include "nvoc/runtime.h"
4
5 #ifdef __cplusplus
6 extern "C" {
7 #endif
8
9 /*
10 * SPDX-FileCopyrightText: Copyright (c) 1993-2024 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 #include "g_system_nvoc.h"
32
33 #ifndef SYSTEM_H
34 #define SYSTEM_H
35
36 /**************** Resource Manager Defines and Structures ******************\
37 * *
38 * Defines and structures used for the System Object. *
39 * *
40 \***************************************************************************/
41
42 #include "core/core.h"
43 #include "nvlimits.h" // NV_MAX_DEVICES
44 #include "ctrl/ctrl2080/ctrl2080gpu.h"
45 #include "diagnostics/traceable.h"
46 #include "nvCpuUuid.h"
47 #include "os/capability.h"
48 #include "containers/btree.h"
49
50 #include "containers/multimap.h"
51
52 #define SYS_GET_INSTANCE() (g_pSys)
53 #define SYS_GET_GPUMGR(p) ((p)->pGpuMgr)
54 #define SYS_GET_GSYNCMGR(p) ((p)->pGsyncMgr)
55 #define SYS_GET_VGPUMGR(p) ((p)->pVgpuMgr)
56 #define SYS_GET_KERNEL_VGPUMGR(p) (RMCFG_FEATURE_KERNEL_RM ? (p)->pKernelVgpuMgr : NULL)
57 #define SYS_GET_OS(p) sysGetOs((p))
58 #define SYS_GET_PFM(p) ((p)->pPfm)
59 #define SYS_GET_CL(p) ((p)->pCl)
60 #define SYS_GET_SWINSTR(p) ((p)->pSwInstr)
61 #define SYS_GET_GPUACCT(p) ((p)->pGpuAcct)
62 #define SYS_GET_PFM_REQ_HNDLR(p) ((p)->pPlatformRequestHandler)
63 #define SYS_GET_RCDB(p) ((p)->pRcDB)
64 #define SYS_GET_VMM(p) (RMCFG_MODULE_VMM ? (p)->pVmm : NULL)
65 #define SYS_GET_HYPERVISOR(p) ((p)->pHypervisor)
66 #define SYS_GET_VRRMGR(p) ((p)->pVrrMgr)
67 #define SYS_GET_GPUBOOSTMGR(p) ((p)->pGpuBoostMgr)
68 #define SYS_GET_DISPMGR(p) ((p)->pDispMgr)
69 #define SYS_GET_FABRIC(p) ((p)->pFabric)
70 #define SYS_GET_GPUDB(p) ((p)->pGpuDb)
71 #define SYS_GET_HALMGR(p) ((p)->pHalMgr)
72
73 #define IsMobile(p) ((p)->getProperty((p), PDB_PROP_GPU_IS_MOBILE))
74
75 //
76 // OS defines (Windows flavor can be added later on)
77 // Unix flavor need to be sync with defines in file "nv.h"
78 //
79 #define OS_TYPE_LINUX 0x1
80 #define OS_TYPE_FREEBSD 0x2
81 #define OS_TYPE_SUNOS 0x3
82 #define OS_TYPE_VMWARE 0x4
83
84 // Child class forward declarations.
85 struct OBJPFM;
86
87 #ifndef __NVOC_CLASS_OBJPFM_TYPEDEF__
88 #define __NVOC_CLASS_OBJPFM_TYPEDEF__
89 typedef struct OBJPFM OBJPFM;
90 #endif /* __NVOC_CLASS_OBJPFM_TYPEDEF__ */
91
92 #ifndef __nvoc_class_id_OBJPFM
93 #define __nvoc_class_id_OBJPFM 0xb543ae
94 #endif /* __nvoc_class_id_OBJPFM */
95
96
97 struct OBJVMM;
98
99 #ifndef __NVOC_CLASS_OBJVMM_TYPEDEF__
100 #define __NVOC_CLASS_OBJVMM_TYPEDEF__
101 typedef struct OBJVMM OBJVMM;
102 #endif /* __NVOC_CLASS_OBJVMM_TYPEDEF__ */
103
104 #ifndef __nvoc_class_id_OBJVMM
105 #define __nvoc_class_id_OBJVMM 0xa030ab
106 #endif /* __nvoc_class_id_OBJVMM */
107
108
109 struct OBJHYPERVISOR;
110
111 #ifndef __NVOC_CLASS_OBJHYPERVISOR_TYPEDEF__
112 #define __NVOC_CLASS_OBJHYPERVISOR_TYPEDEF__
113 typedef struct OBJHYPERVISOR OBJHYPERVISOR;
114 #endif /* __NVOC_CLASS_OBJHYPERVISOR_TYPEDEF__ */
115
116 #ifndef __nvoc_class_id_OBJHYPERVISOR
117 #define __nvoc_class_id_OBJHYPERVISOR 0x33c1ba
118 #endif /* __nvoc_class_id_OBJHYPERVISOR */
119
120
121 struct OBJGPUMGR;
122
123 #ifndef __NVOC_CLASS_OBJGPUMGR_TYPEDEF__
124 #define __NVOC_CLASS_OBJGPUMGR_TYPEDEF__
125 typedef struct OBJGPUMGR OBJGPUMGR;
126 #endif /* __NVOC_CLASS_OBJGPUMGR_TYPEDEF__ */
127
128 #ifndef __nvoc_class_id_OBJGPUMGR
129 #define __nvoc_class_id_OBJGPUMGR 0xcf1b25
130 #endif /* __nvoc_class_id_OBJGPUMGR */
131
132
133 struct OBJDISPMGR;
134
135 #ifndef __NVOC_CLASS_OBJDISPMGR_TYPEDEF__
136 #define __NVOC_CLASS_OBJDISPMGR_TYPEDEF__
137 typedef struct OBJDISPMGR OBJDISPMGR;
138 #endif /* __NVOC_CLASS_OBJDISPMGR_TYPEDEF__ */
139
140 #ifndef __nvoc_class_id_OBJDISPMGR
141 #define __nvoc_class_id_OBJDISPMGR 0x69ad03
142 #endif /* __nvoc_class_id_OBJDISPMGR */
143
144
145 struct PlatformRequestHandler;
146
147 #ifndef __NVOC_CLASS_PlatformRequestHandler_TYPEDEF__
148 #define __NVOC_CLASS_PlatformRequestHandler_TYPEDEF__
149 typedef struct PlatformRequestHandler PlatformRequestHandler;
150 #endif /* __NVOC_CLASS_PlatformRequestHandler_TYPEDEF__ */
151
152 #ifndef __nvoc_class_id_PlatformRequestHandler
153 #define __nvoc_class_id_PlatformRequestHandler 0x641a7f
154 #endif /* __nvoc_class_id_PlatformRequestHandler */
155
156
157 struct GpuAccounting;
158
159 #ifndef __NVOC_CLASS_GpuAccounting_TYPEDEF__
160 #define __NVOC_CLASS_GpuAccounting_TYPEDEF__
161 typedef struct GpuAccounting GpuAccounting;
162 #endif /* __NVOC_CLASS_GpuAccounting_TYPEDEF__ */
163
164 #ifndef __nvoc_class_id_GpuAccounting
165 #define __nvoc_class_id_GpuAccounting 0x0f1350
166 #endif /* __nvoc_class_id_GpuAccounting */
167
168
169 struct OBJHALMGR;
170
171 #ifndef __NVOC_CLASS_OBJHALMGR_TYPEDEF__
172 #define __NVOC_CLASS_OBJHALMGR_TYPEDEF__
173 typedef struct OBJHALMGR OBJHALMGR;
174 #endif /* __NVOC_CLASS_OBJHALMGR_TYPEDEF__ */
175
176 #ifndef __nvoc_class_id_OBJHALMGR
177 #define __nvoc_class_id_OBJHALMGR 0xbf26de
178 #endif /* __nvoc_class_id_OBJHALMGR */
179
180
181 struct Fabric;
182
183 #ifndef __NVOC_CLASS_Fabric_TYPEDEF__
184 #define __NVOC_CLASS_Fabric_TYPEDEF__
185 typedef struct Fabric Fabric;
186 #endif /* __NVOC_CLASS_Fabric_TYPEDEF__ */
187
188 #ifndef __nvoc_class_id_Fabric
189 #define __nvoc_class_id_Fabric 0x0ac791
190 #endif /* __nvoc_class_id_Fabric */
191
192
193 struct GpuDb;
194
195 #ifndef __NVOC_CLASS_GpuDb_TYPEDEF__
196 #define __NVOC_CLASS_GpuDb_TYPEDEF__
197 typedef struct GpuDb GpuDb;
198 #endif /* __NVOC_CLASS_GpuDb_TYPEDEF__ */
199
200 #ifndef __nvoc_class_id_GpuDb
201 #define __nvoc_class_id_GpuDb 0xcdd250
202 #endif /* __nvoc_class_id_GpuDb */
203
204
205 struct OBJCL;
206
207 #ifndef __NVOC_CLASS_OBJCL_TYPEDEF__
208 #define __NVOC_CLASS_OBJCL_TYPEDEF__
209 typedef struct OBJCL OBJCL;
210 #endif /* __NVOC_CLASS_OBJCL_TYPEDEF__ */
211
212 #ifndef __nvoc_class_id_OBJCL
213 #define __nvoc_class_id_OBJCL 0x547dbb
214 #endif /* __nvoc_class_id_OBJCL */
215
216
217 struct KernelVgpuMgr;
218
219 #ifndef __NVOC_CLASS_KernelVgpuMgr_TYPEDEF__
220 #define __NVOC_CLASS_KernelVgpuMgr_TYPEDEF__
221 typedef struct KernelVgpuMgr KernelVgpuMgr;
222 #endif /* __NVOC_CLASS_KernelVgpuMgr_TYPEDEF__ */
223
224 #ifndef __nvoc_class_id_KernelVgpuMgr
225 #define __nvoc_class_id_KernelVgpuMgr 0xa793dd
226 #endif /* __nvoc_class_id_KernelVgpuMgr */
227
228
229 struct OBJVRRMGR;
230
231 #ifndef __NVOC_CLASS_OBJVRRMGR_TYPEDEF__
232 #define __NVOC_CLASS_OBJVRRMGR_TYPEDEF__
233 typedef struct OBJVRRMGR OBJVRRMGR;
234 #endif /* __NVOC_CLASS_OBJVRRMGR_TYPEDEF__ */
235
236 #ifndef __nvoc_class_id_OBJVRRMGR
237 #define __nvoc_class_id_OBJVRRMGR 0x442804
238 #endif /* __nvoc_class_id_OBJVRRMGR */
239
240
241 struct OBJGPUBOOSTMGR;
242
243 #ifndef __NVOC_CLASS_OBJGPUBOOSTMGR_TYPEDEF__
244 #define __NVOC_CLASS_OBJGPUBOOSTMGR_TYPEDEF__
245 typedef struct OBJGPUBOOSTMGR OBJGPUBOOSTMGR;
246 #endif /* __NVOC_CLASS_OBJGPUBOOSTMGR_TYPEDEF__ */
247
248 #ifndef __nvoc_class_id_OBJGPUBOOSTMGR
249 #define __nvoc_class_id_OBJGPUBOOSTMGR 0x9f6bbf
250 #endif /* __nvoc_class_id_OBJGPUBOOSTMGR */
251
252
253 struct OBJGSYNCMGR;
254
255 #ifndef __NVOC_CLASS_OBJGSYNCMGR_TYPEDEF__
256 #define __NVOC_CLASS_OBJGSYNCMGR_TYPEDEF__
257 typedef struct OBJGSYNCMGR OBJGSYNCMGR;
258 #endif /* __NVOC_CLASS_OBJGSYNCMGR_TYPEDEF__ */
259
260 #ifndef __nvoc_class_id_OBJGSYNCMGR
261 #define __nvoc_class_id_OBJGSYNCMGR 0xd07fd0
262 #endif /* __nvoc_class_id_OBJGSYNCMGR */
263
264
265 struct OBJVGPUMGR;
266
267 #ifndef __NVOC_CLASS_OBJVGPUMGR_TYPEDEF__
268 #define __NVOC_CLASS_OBJVGPUMGR_TYPEDEF__
269 typedef struct OBJVGPUMGR OBJVGPUMGR;
270 #endif /* __NVOC_CLASS_OBJVGPUMGR_TYPEDEF__ */
271
272 #ifndef __nvoc_class_id_OBJVGPUMGR
273 #define __nvoc_class_id_OBJVGPUMGR 0x0e9beb
274 #endif /* __nvoc_class_id_OBJVGPUMGR */
275
276
277 struct OBJOS;
278
279 #ifndef __NVOC_CLASS_OBJOS_TYPEDEF__
280 #define __NVOC_CLASS_OBJOS_TYPEDEF__
281 typedef struct OBJOS OBJOS;
282 #endif /* __NVOC_CLASS_OBJOS_TYPEDEF__ */
283
284 #ifndef __nvoc_class_id_OBJOS
285 #define __nvoc_class_id_OBJOS 0xaa1d70
286 #endif /* __nvoc_class_id_OBJOS */
287
288
289
290 typedef struct OBJRCDB Journal;
291
292 /*!
293 * This structure contains static system configuration data. This structure
294 * will become a typesafe structure that can be exchanged with code
295 * running on GSP.
296 */
297 typedef struct SYS_STATIC_CONFIG
298 {
299 /*! Indicates if the GPU is in a notebook or not. */
300 NvBool bIsNotebook;
301
302 /*! Initial SLI configuration flags */
303 NvU32 initialSliFlags;
304
305 /*! Indicates the type of OS flavor */
306 NvU32 osType;
307
308 /*! Indicates confidentail compute OS support is enabled or not */
309 NvBool bOsCCEnabled;
310
311 /*! Indicates Intel TDX confidentail compute OS support is enabled or not */
312 NvBool bOsCCTdxEnabled;
313 } SYS_STATIC_CONFIG;
314
315 typedef struct
316 {
317 NvBool bInitialized; // Set to true once we id the CPU
318 NvU32 type; // NV0000_CTRL_SYSTEM_CPU_TYPE value
319 NvU32 caps; // NV0000_CTRL_SYSTEM_CPU_CAP value
320 NvU32 brandId; // CPU Brand ID
321 NvU32 clock;
322 NvU32 l1DataCacheSize; // L1 data (or unified) cache size (KB)
323 NvU32 l2DataCacheSize; // L2 data (or unified) cache size (KB)
324 NvU32 dataCacheLineSize; // Bytes per line in the L1 data cache
325 NvU64 hostPageSize; // Native host os page size (4k/64k/etc)
326 NvU32 numPhysicalCpus; // Number of physical cpus
327 NvU32 numLogicalCpus; // Total number of logical cpus
328 NvU32 maxLogicalCpus; // Max Number of Cores on the System
329 char name[52]; // Embedded processor name; only filled
330 // filled in if CPU has embedded name
331 NvU32 family; // Vendor defined Family/extended Family
332 NvU32 model; // Vendor defined Model/extended Model
333 NvU32 coresOnDie; // # of cores on the die (0 if unknown)
334 NvU32 platformID; // Chip package type
335 NvU8 stepping; // Silicon stepping
336 NvBool bSEVCapable; // Is capable of SEV (Secure Encrypted Virtualization)
337 NvU32 maxEncryptedGuests; // Max # of encrypted guests supported
338 } SYS_CPU_INFO;
339
340 typedef struct
341 {
342 NvU32 strapUser;
343 NvU32 genRegsVse2VidsysEn;
344 NvU32 genRegsMiscIoAdr;
345 } SYS_VGA_POST_STATE;
346
347 typedef struct
348 {
349 void *pData;
350 } SysMemExportCacheEntry;
351
352 MAKE_MULTIMAP(SYS_MEM_EXPORT_CACHE, SysMemExportCacheEntry);
353
354
355 // Private field names are wrapped in PRIVATE_FIELD, which does nothing for
356 // the matching C source file, but causes diagnostics to be issued if another
357 // source file references the field.
358 #ifdef NVOC_SYSTEM_H_PRIVATE_ACCESS_ALLOWED
359 #define PRIVATE_FIELD(x) x
360 #else
361 #define PRIVATE_FIELD(x) NVOC_PRIVATE_FIELD(x)
362 #endif
363
364 struct OBJSYS {
365 const struct NVOC_RTTI *__nvoc_rtti;
366 struct Object __nvoc_base_Object;
367 struct OBJTRACEABLE __nvoc_base_OBJTRACEABLE;
368 struct Object *__nvoc_pbase_Object;
369 struct OBJTRACEABLE *__nvoc_pbase_OBJTRACEABLE;
370 struct OBJSYS *__nvoc_pbase_OBJSYS;
371 NV_STATUS (*__sysCaptureState__)(struct OBJSYS *);
372 NvBool PDB_PROP_SYS_SBIOS_NVIF_POWERMIZER_LIMIT;
373 NvBool PDB_PROP_SYS_MXM_THERMAL_CONTROL_PRESENT;
374 NvBool PDB_PROP_SYS_POWER_BATTERY;
375 NvBool PDB_PROP_SYS_NVIF_INIT_DONE;
376 NvBool PDB_PROP_SYS_REGISTRY_OVERRIDES_INITIALIZED;
377 NvBool PDB_PROP_SYS_PRIMARY_VBIOS_STATE_SAVED;
378 NvBool PDB_PROP_SYS_INITIALIZE_SYSTEM_MEMORY_ALLOCATIONS;
379 NvBool PDB_PROP_SYS_ENABLE_STREAM_MEMOPS;
380 NvBool PDB_PROP_SYS_IS_UEFI;
381 NvBool PDB_PROP_SYS_WIN_PRIMARY_DEVICE_MARKED;
382 NvBool PDB_PROP_SYS_IS_GSYNC_ENABLED;
383 NvBool PDB_PROP_SYS_NVSWITCH_IS_PRESENT;
384 NvBool PDB_PROP_SYS_FABRIC_IS_EXTERNALLY_MANAGED;
385 NvBool PDB_PROP_SYS_FABRIC_MANAGER_IS_INITIALIZED;
386 NvBool PDB_PROP_SYS_FABRIC_MANAGER_IS_REGISTERED;
387 NvBool PDB_PROP_SYS_HASWELL_CPU_C0_STEPPING;
388 NvBool PDB_PROP_SYS_VALIDATE_CLIENT_HANDLE;
389 NvBool PDB_PROP_SYS_VALIDATE_CLIENT_HANDLE_STRICT;
390 NvBool PDB_PROP_SYS_VALIDATE_KERNEL_BUFFERS;
391 NvBool PDB_PROP_SYS_INTERNAL_EVENT_BUFFER_ALLOC_ALLOWED;
392 NvBool PDB_PROP_SYS_IS_AGGRESSIVE_GC6_ENABLED;
393 NvBool PDB_PROP_SYS_IS_EFI_INIT;
394 NvBool PDB_PROP_SYS_IN_OCA_DATA_COLLECTION;
395 NvBool PDB_PROP_SYS_DEBUGGER_DISABLED;
396 NvBool PDB_PROP_SYS_PRIORITY_BOOST;
397 NvU32 PDB_PROP_SYS_PRIORITY_THROTTLE_DELAY_US;
398 NvBool PDB_PROP_SYS_BUGCHECK_ON_TIMEOUT;
399 NvBool PDB_PROP_SYS_CLIENT_HANDLE_LOOKUP;
400 NvBool PDB_PROP_SYS_RM_LOCK_TIME_COLLECT;
401 NvU32 apiLockMask;
402 NvU32 apiLockModuleMask;
403 NvU32 gpuLockModuleMask;
404 NvBool PDB_PROP_SYS_ROUTE_TO_PHYSICAL_LOCK_BYPASS;
405 NvU32 pwrTransitionTimeoutOverride;
406 SYS_STATIC_CONFIG staticConfig;
407 NvU32 debugFlags;
408 NvU32 backtraceStackDepth;
409 SYS_CPU_INFO cpuInfo;
410 SYS_VGA_POST_STATE vgaPostState;
411 NvBool gpuHotPlugPollingActive[32];
412 NvU32 gridSwPkg;
413 void *pSema;
414 NvU32 binMask;
415 PNODE pMemFilterList;
416 NvBool PDB_PROP_SYS_IS_QSYNC_FW_REVISION_CHECK_DISABLED;
417 NvBool PDB_PROP_SYS_GPU_LOCK_MIDPATH_ENABLED;
418 NvBool PDB_PROP_SYS_DESTRUCTING;
419 NvU64 rmInstanceId;
420 NvU32 currentCid;
421 NvBool bUseDeferredClientListFree;
422 NvU32 clientListDeferredFreeLimit;
423 OS_RM_CAPS *pOsRmCaps;
424 SYS_MEM_EXPORT_CACHE sysMemExportCache;
425 PORT_RWLOCK *pSysMemExportModuleLock;
426 volatile NvU64 sysExportObjectCounter;
427 NvHandle hSysMemExportClient;
428 struct OBJGPUMGR *pGpuMgr;
429 struct OBJGSYNCMGR *pGsyncMgr;
430 struct OBJVGPUMGR *pVgpuMgr;
431 struct KernelVgpuMgr *pKernelVgpuMgr;
432 struct OBJOS *pOS;
433 struct OBJCL *pCl;
434 struct OBJPFM *pPfm;
435 struct GpuAccounting *pGpuAcct;
436 struct PlatformRequestHandler *pPlatformRequestHandler;
437 Journal *pRcDB;
438 struct OBJVMM *pVmm;
439 struct OBJHYPERVISOR *pHypervisor;
440 struct OBJVRRMGR *pVrrMgr;
441 struct OBJGPUBOOSTMGR *pGpuBoostMgr;
442 struct OBJDISPMGR *pDispMgr;
443 struct OBJHALMGR *pHalMgr;
444 struct Fabric *pFabric;
445 struct GpuDb *pGpuDb;
446 };
447
448 #ifndef __NVOC_CLASS_OBJSYS_TYPEDEF__
449 #define __NVOC_CLASS_OBJSYS_TYPEDEF__
450 typedef struct OBJSYS OBJSYS;
451 #endif /* __NVOC_CLASS_OBJSYS_TYPEDEF__ */
452
453 #ifndef __nvoc_class_id_OBJSYS
454 #define __nvoc_class_id_OBJSYS 0x40e2c8
455 #endif /* __nvoc_class_id_OBJSYS */
456
457 extern const struct NVOC_CLASS_DEF __nvoc_class_def_OBJSYS;
458
459 #define __staticCast_OBJSYS(pThis) \
460 ((pThis)->__nvoc_pbase_OBJSYS)
461
462 #ifdef __nvoc_system_h_disabled
463 #define __dynamicCast_OBJSYS(pThis) ((OBJSYS*)NULL)
464 #else //__nvoc_system_h_disabled
465 #define __dynamicCast_OBJSYS(pThis) \
466 ((OBJSYS*)__nvoc_dynamicCast(staticCast((pThis), Dynamic), classInfo(OBJSYS)))
467 #endif //__nvoc_system_h_disabled
468
469 #define PDB_PROP_SYS_REGISTRY_OVERRIDES_INITIALIZED_BASE_CAST
470 #define PDB_PROP_SYS_REGISTRY_OVERRIDES_INITIALIZED_BASE_NAME PDB_PROP_SYS_REGISTRY_OVERRIDES_INITIALIZED
471 #define PDB_PROP_SYS_IS_EFI_INIT_BASE_CAST
472 #define PDB_PROP_SYS_IS_EFI_INIT_BASE_NAME PDB_PROP_SYS_IS_EFI_INIT
473 #define PDB_PROP_SYS_GPU_LOCK_MIDPATH_ENABLED_BASE_CAST
474 #define PDB_PROP_SYS_GPU_LOCK_MIDPATH_ENABLED_BASE_NAME PDB_PROP_SYS_GPU_LOCK_MIDPATH_ENABLED
475 #define PDB_PROP_SYS_INITIALIZE_SYSTEM_MEMORY_ALLOCATIONS_BASE_CAST
476 #define PDB_PROP_SYS_INITIALIZE_SYSTEM_MEMORY_ALLOCATIONS_BASE_NAME PDB_PROP_SYS_INITIALIZE_SYSTEM_MEMORY_ALLOCATIONS
477 #define PDB_PROP_SYS_POWER_BATTERY_BASE_CAST
478 #define PDB_PROP_SYS_POWER_BATTERY_BASE_NAME PDB_PROP_SYS_POWER_BATTERY
479 #define PDB_PROP_SYS_IS_QSYNC_FW_REVISION_CHECK_DISABLED_BASE_CAST
480 #define PDB_PROP_SYS_IS_QSYNC_FW_REVISION_CHECK_DISABLED_BASE_NAME PDB_PROP_SYS_IS_QSYNC_FW_REVISION_CHECK_DISABLED
481 #define PDB_PROP_SYS_ROUTE_TO_PHYSICAL_LOCK_BYPASS_BASE_CAST
482 #define PDB_PROP_SYS_ROUTE_TO_PHYSICAL_LOCK_BYPASS_BASE_NAME PDB_PROP_SYS_ROUTE_TO_PHYSICAL_LOCK_BYPASS
483 #define PDB_PROP_SYS_NVIF_INIT_DONE_BASE_CAST
484 #define PDB_PROP_SYS_NVIF_INIT_DONE_BASE_NAME PDB_PROP_SYS_NVIF_INIT_DONE
485 #define PDB_PROP_SYS_VALIDATE_CLIENT_HANDLE_STRICT_BASE_CAST
486 #define PDB_PROP_SYS_VALIDATE_CLIENT_HANDLE_STRICT_BASE_NAME PDB_PROP_SYS_VALIDATE_CLIENT_HANDLE_STRICT
487 #define PDB_PROP_SYS_DESTRUCTING_BASE_CAST
488 #define PDB_PROP_SYS_DESTRUCTING_BASE_NAME PDB_PROP_SYS_DESTRUCTING
489 #define PDB_PROP_SYS_VALIDATE_KERNEL_BUFFERS_BASE_CAST
490 #define PDB_PROP_SYS_VALIDATE_KERNEL_BUFFERS_BASE_NAME PDB_PROP_SYS_VALIDATE_KERNEL_BUFFERS
491 #define PDB_PROP_SYS_PRIMARY_VBIOS_STATE_SAVED_BASE_CAST
492 #define PDB_PROP_SYS_PRIMARY_VBIOS_STATE_SAVED_BASE_NAME PDB_PROP_SYS_PRIMARY_VBIOS_STATE_SAVED
493 #define PDB_PROP_SYS_BUGCHECK_ON_TIMEOUT_BASE_CAST
494 #define PDB_PROP_SYS_BUGCHECK_ON_TIMEOUT_BASE_NAME PDB_PROP_SYS_BUGCHECK_ON_TIMEOUT
495 #define PDB_PROP_SYS_ENABLE_STREAM_MEMOPS_BASE_CAST
496 #define PDB_PROP_SYS_ENABLE_STREAM_MEMOPS_BASE_NAME PDB_PROP_SYS_ENABLE_STREAM_MEMOPS
497 #define PDB_PROP_SYS_SBIOS_NVIF_POWERMIZER_LIMIT_BASE_CAST
498 #define PDB_PROP_SYS_SBIOS_NVIF_POWERMIZER_LIMIT_BASE_NAME PDB_PROP_SYS_SBIOS_NVIF_POWERMIZER_LIMIT
499 #define PDB_PROP_SYS_IS_UEFI_BASE_CAST
500 #define PDB_PROP_SYS_IS_UEFI_BASE_NAME PDB_PROP_SYS_IS_UEFI
501 #define PDB_PROP_SYS_CLIENT_HANDLE_LOOKUP_BASE_CAST
502 #define PDB_PROP_SYS_CLIENT_HANDLE_LOOKUP_BASE_NAME PDB_PROP_SYS_CLIENT_HANDLE_LOOKUP
503 #define PDB_PROP_SYS_INTERNAL_EVENT_BUFFER_ALLOC_ALLOWED_BASE_CAST
504 #define PDB_PROP_SYS_INTERNAL_EVENT_BUFFER_ALLOC_ALLOWED_BASE_NAME PDB_PROP_SYS_INTERNAL_EVENT_BUFFER_ALLOC_ALLOWED
505 #define PDB_PROP_SYS_IS_GSYNC_ENABLED_BASE_CAST
506 #define PDB_PROP_SYS_IS_GSYNC_ENABLED_BASE_NAME PDB_PROP_SYS_IS_GSYNC_ENABLED
507 #define PDB_PROP_SYS_FABRIC_MANAGER_IS_REGISTERED_BASE_CAST
508 #define PDB_PROP_SYS_FABRIC_MANAGER_IS_REGISTERED_BASE_NAME PDB_PROP_SYS_FABRIC_MANAGER_IS_REGISTERED
509 #define PDB_PROP_SYS_PRIORITY_BOOST_BASE_CAST
510 #define PDB_PROP_SYS_PRIORITY_BOOST_BASE_NAME PDB_PROP_SYS_PRIORITY_BOOST
511 #define PDB_PROP_SYS_PRIORITY_THROTTLE_DELAY_US_BASE_CAST
512 #define PDB_PROP_SYS_PRIORITY_THROTTLE_DELAY_US_BASE_NAME PDB_PROP_SYS_PRIORITY_THROTTLE_DELAY_US
513 #define PDB_PROP_SYS_IN_OCA_DATA_COLLECTION_BASE_CAST
514 #define PDB_PROP_SYS_IN_OCA_DATA_COLLECTION_BASE_NAME PDB_PROP_SYS_IN_OCA_DATA_COLLECTION
515 #define PDB_PROP_SYS_NVSWITCH_IS_PRESENT_BASE_CAST
516 #define PDB_PROP_SYS_NVSWITCH_IS_PRESENT_BASE_NAME PDB_PROP_SYS_NVSWITCH_IS_PRESENT
517 #define PDB_PROP_SYS_FABRIC_MANAGER_IS_INITIALIZED_BASE_CAST
518 #define PDB_PROP_SYS_FABRIC_MANAGER_IS_INITIALIZED_BASE_NAME PDB_PROP_SYS_FABRIC_MANAGER_IS_INITIALIZED
519 #define PDB_PROP_SYS_WIN_PRIMARY_DEVICE_MARKED_BASE_CAST
520 #define PDB_PROP_SYS_WIN_PRIMARY_DEVICE_MARKED_BASE_NAME PDB_PROP_SYS_WIN_PRIMARY_DEVICE_MARKED
521 #define PDB_PROP_SYS_VALIDATE_CLIENT_HANDLE_BASE_CAST
522 #define PDB_PROP_SYS_VALIDATE_CLIENT_HANDLE_BASE_NAME PDB_PROP_SYS_VALIDATE_CLIENT_HANDLE
523 #define PDB_PROP_SYS_FABRIC_IS_EXTERNALLY_MANAGED_BASE_CAST
524 #define PDB_PROP_SYS_FABRIC_IS_EXTERNALLY_MANAGED_BASE_NAME PDB_PROP_SYS_FABRIC_IS_EXTERNALLY_MANAGED
525 #define PDB_PROP_SYS_IS_AGGRESSIVE_GC6_ENABLED_BASE_CAST
526 #define PDB_PROP_SYS_IS_AGGRESSIVE_GC6_ENABLED_BASE_NAME PDB_PROP_SYS_IS_AGGRESSIVE_GC6_ENABLED
527 #define PDB_PROP_SYS_HASWELL_CPU_C0_STEPPING_BASE_CAST
528 #define PDB_PROP_SYS_HASWELL_CPU_C0_STEPPING_BASE_NAME PDB_PROP_SYS_HASWELL_CPU_C0_STEPPING
529 #define PDB_PROP_SYS_RM_LOCK_TIME_COLLECT_BASE_CAST
530 #define PDB_PROP_SYS_RM_LOCK_TIME_COLLECT_BASE_NAME PDB_PROP_SYS_RM_LOCK_TIME_COLLECT
531 #define PDB_PROP_SYS_DEBUGGER_DISABLED_BASE_CAST
532 #define PDB_PROP_SYS_DEBUGGER_DISABLED_BASE_NAME PDB_PROP_SYS_DEBUGGER_DISABLED
533 #define PDB_PROP_SYS_MXM_THERMAL_CONTROL_PRESENT_BASE_CAST
534 #define PDB_PROP_SYS_MXM_THERMAL_CONTROL_PRESENT_BASE_NAME PDB_PROP_SYS_MXM_THERMAL_CONTROL_PRESENT
535
536 NV_STATUS __nvoc_objCreateDynamic_OBJSYS(OBJSYS**, Dynamic*, NvU32, va_list);
537
538 NV_STATUS __nvoc_objCreate_OBJSYS(OBJSYS**, Dynamic*, NvU32);
539 #define __objCreate_OBJSYS(ppNewObj, pParent, createFlags) \
540 __nvoc_objCreate_OBJSYS((ppNewObj), staticCast((pParent), Dynamic), (createFlags))
541
542 #define sysCaptureState(arg0) sysCaptureState_DISPATCH(arg0)
543 NV_STATUS sysCaptureState_IMPL(struct OBJSYS *arg0);
544
sysCaptureState_DISPATCH(struct OBJSYS * arg0)545 static inline NV_STATUS sysCaptureState_DISPATCH(struct OBJSYS *arg0) {
546 return arg0->__sysCaptureState__(arg0);
547 }
548
sysGetPwrTransitionTimeout(struct OBJSYS * pSys)549 static inline NvU32 sysGetPwrTransitionTimeout(struct OBJSYS *pSys) {
550 return pSys->pwrTransitionTimeoutOverride;
551 }
552
sysGetStaticConfig(struct OBJSYS * pSys)553 static inline const SYS_STATIC_CONFIG *sysGetStaticConfig(struct OBJSYS *pSys) {
554 return &pSys->staticConfig;
555 }
556
557 NV_STATUS sysConstruct_IMPL(struct OBJSYS *arg_);
558
559 #define __nvoc_sysConstruct(arg_) sysConstruct_IMPL(arg_)
560 void sysDestruct_IMPL(struct OBJSYS *arg0);
561
562 #define __nvoc_sysDestruct(arg0) sysDestruct_IMPL(arg0)
563 void sysInitRegistryOverrides_IMPL(struct OBJSYS *arg0);
564
565 #ifdef __nvoc_system_h_disabled
sysInitRegistryOverrides(struct OBJSYS * arg0)566 static inline void sysInitRegistryOverrides(struct OBJSYS *arg0) {
567 NV_ASSERT_FAILED_PRECOMP("OBJSYS was disabled!");
568 }
569 #else //__nvoc_system_h_disabled
570 #define sysInitRegistryOverrides(arg0) sysInitRegistryOverrides_IMPL(arg0)
571 #endif //__nvoc_system_h_disabled
572
573 void sysApplyLockingPolicy_IMPL(struct OBJSYS *arg0);
574
575 #ifdef __nvoc_system_h_disabled
sysApplyLockingPolicy(struct OBJSYS * arg0)576 static inline void sysApplyLockingPolicy(struct OBJSYS *arg0) {
577 NV_ASSERT_FAILED_PRECOMP("OBJSYS was disabled!");
578 }
579 #else //__nvoc_system_h_disabled
580 #define sysApplyLockingPolicy(arg0) sysApplyLockingPolicy_IMPL(arg0)
581 #endif //__nvoc_system_h_disabled
582
583 struct OBJOS *sysGetOs_IMPL(struct OBJSYS *arg0);
584
585 #ifdef __nvoc_system_h_disabled
sysGetOs(struct OBJSYS * arg0)586 static inline struct OBJOS *sysGetOs(struct OBJSYS *arg0) {
587 NV_ASSERT_FAILED_PRECOMP("OBJSYS was disabled!");
588 return NULL;
589 }
590 #else //__nvoc_system_h_disabled
591 #define sysGetOs(arg0) sysGetOs_IMPL(arg0)
592 #endif //__nvoc_system_h_disabled
593
594 void sysEnableExternalFabricMgmt_IMPL(struct OBJSYS *arg0);
595
596 #ifdef __nvoc_system_h_disabled
sysEnableExternalFabricMgmt(struct OBJSYS * arg0)597 static inline void sysEnableExternalFabricMgmt(struct OBJSYS *arg0) {
598 NV_ASSERT_FAILED_PRECOMP("OBJSYS was disabled!");
599 }
600 #else //__nvoc_system_h_disabled
601 #define sysEnableExternalFabricMgmt(arg0) sysEnableExternalFabricMgmt_IMPL(arg0)
602 #endif //__nvoc_system_h_disabled
603
604 void sysForceInitFabricManagerState_IMPL(struct OBJSYS *arg0);
605
606 #ifdef __nvoc_system_h_disabled
sysForceInitFabricManagerState(struct OBJSYS * arg0)607 static inline void sysForceInitFabricManagerState(struct OBJSYS *arg0) {
608 NV_ASSERT_FAILED_PRECOMP("OBJSYS was disabled!");
609 }
610 #else //__nvoc_system_h_disabled
611 #define sysForceInitFabricManagerState(arg0) sysForceInitFabricManagerState_IMPL(arg0)
612 #endif //__nvoc_system_h_disabled
613
614 NV_STATUS sysSyncExternalFabricMgmtWAR_IMPL(struct OBJSYS *arg0, OBJGPU *arg1);
615
616 #ifdef __nvoc_system_h_disabled
sysSyncExternalFabricMgmtWAR(struct OBJSYS * arg0,OBJGPU * arg1)617 static inline NV_STATUS sysSyncExternalFabricMgmtWAR(struct OBJSYS *arg0, OBJGPU *arg1) {
618 NV_ASSERT_FAILED_PRECOMP("OBJSYS was disabled!");
619 return NV_ERR_NOT_SUPPORTED;
620 }
621 #else //__nvoc_system_h_disabled
622 #define sysSyncExternalFabricMgmtWAR(arg0, arg1) sysSyncExternalFabricMgmtWAR_IMPL(arg0, arg1)
623 #endif //__nvoc_system_h_disabled
624
625 #undef PRIVATE_FIELD
626
627
628 extern struct OBJSYS *g_pSys;
629
630 #endif // SYSTEM_H
631
632 #ifdef __cplusplus
633 } // extern "C"
634 #endif
635
636 #endif // _G_SYSTEM_NVOC_H_
637