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