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