1 #ifndef _G_KERNEL_GSP_NVOC_H_ 2 #define _G_KERNEL_GSP_NVOC_H_ 3 #include "nvoc/runtime.h" 4 5 #ifdef __cplusplus 6 extern "C" { 7 #endif 8 9 /* 10 * SPDX-FileCopyrightText: Copyright (c) 2017-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_gsp_nvoc.h" 33 34 #ifndef KERNEL_GSP_H 35 #define KERNEL_GSP_H 36 37 /*! 38 * This file provides definitions for all KernelGsp data structures 39 * and interfaces. KernelGsp is responsible for initiating the boot 40 * of RM on the GSP core (GSP-RM) and helps facilitate communication 41 * between Kernel RM and GSP-RM. 42 */ 43 44 #include "core/core.h" 45 #include "core/bin_data.h" 46 #include "gpu/eng_state.h" 47 #include "gpu/intr/intr_service.h" 48 #include "gpu/falcon/kernel_falcon.h" 49 #include "gpu/gsp/gsp_static_config.h" 50 #include "gpu/gsp/gsp_init_args.h" 51 #include "gpu/gsp/gsp_fw_heap.h" 52 #include "nv-firmware.h" 53 #include "nv_sriov_defines.h" 54 #include "rmRiscvUcode.h" 55 56 #include "libos_init_args.h" 57 #include "gsp_fw_wpr_meta.h" 58 #include "gsp_fw_sr_meta.h" 59 #include "liblogdecode.h" 60 61 /*! 62 * Forward declarations 63 */ 64 typedef struct SimAccessBuffer SimAccessBuffer; 65 typedef struct GSP_FMC_BOOT_PARAMS GSP_FMC_BOOT_PARAMS; 66 67 /*! 68 * Structure for VBIOS image for early FRTS. 69 */ 70 typedef struct KernelGspVbiosImg 71 { 72 NvU8 *pImage; 73 NvU32 biosSize; 74 NvU32 expansionRomOffset; 75 } KernelGspVbiosImg; 76 77 /*! 78 * Variant of KernelGspFlcnUcode representing a non-Boot-from-HS ucode that 79 * loads directly without the generic falcon bootloader. 80 */ 81 typedef struct KernelGspFlcnUcodeBootDirect 82 { 83 NvU8 *pImage; 84 NvU32 size; 85 86 NvU32 imemSize; 87 NvU32 imemNsSize; 88 NvU32 imemNsPa; 89 NvU32 imemSecSize; 90 NvU32 imemSecPa; 91 92 NvU32 dataOffset; 93 NvU32 dmemSize; 94 NvU32 dmemPa; 95 } KernelGspFlcnUcodeBootDirect; 96 97 /*! 98 * Variant of KernelGspFlcnUcode representing a non-Boot-from-HS ucode that 99 * loads via the generic falcon bootloader. 100 */ 101 typedef struct KernelGspFlcnUcodeBootWithLoader 102 { 103 MEMORY_DESCRIPTOR *pCodeMemDesc; 104 MEMORY_DESCRIPTOR *pDataMemDesc; 105 106 NvU32 codeOffset; 107 NvU32 imemSize; 108 NvU32 imemNsSize; 109 NvU32 imemNsPa; 110 NvU32 imemSecSize; 111 NvU32 imemSecPa; 112 NvU32 codeEntry; 113 114 NvU32 dataOffset; 115 NvU32 dmemSize; 116 NvU32 dmemPa; 117 118 // Extra fields used for falcon ucodes from VBIOS 119 NvU32 interfaceOffset; 120 } KernelGspFlcnUcodeBootWithLoader; 121 122 /*! 123 * Variant of KernelGspFlcnUcode representing a Boot-from-HS ucode. 124 */ 125 typedef struct KernelGspFlcnUcodeBootFromHs 126 { 127 MEMORY_DESCRIPTOR *pUcodeMemDesc; 128 NvU32 size; 129 130 NvU32 codeOffset; 131 NvU32 imemSize; 132 NvU32 imemPa; 133 NvU32 imemVa; 134 135 NvU32 dataOffset; 136 NvU32 dmemSize; 137 NvU32 dmemPa; 138 NvU32 dmemVa; 139 140 NvU32 hsSigDmemAddr; 141 NvU32 ucodeId; 142 NvU32 engineIdMask; 143 144 // Extra fields used for falcon ucodes from VBIOS 145 NvU32 *pSignatures; 146 NvU32 signaturesTotalSize; // size of buffer pointed by pSignatures 147 NvU32 sigSize; // size of one signature 148 NvU32 sigCount; 149 150 NvU32 vbiosSigVersions; 151 NvU32 interfaceOffset; 152 } KernelGspFlcnUcodeBootFromHs; 153 154 /*! 155 * Type of KernelGspFlcnUcode. Used as tag in tagged union KernelGspFlcnUcode. 156 * Affects how the ucode is loaded/booted. 157 */ 158 typedef enum KernelGspFlcnUcodeBootType 159 { 160 KGSP_FLCN_UCODE_BOOT_DIRECT, 161 KGSP_FLCN_UCODE_BOOT_WITH_LOADER, 162 KGSP_FLCN_UCODE_BOOT_FROM_HS 163 } KernelGspFlcnUcodeBootType; 164 165 /*! 166 * Tagged union of falcon ucode variants used by early FRTS and GSP-RM boot. 167 */ 168 typedef struct KernelGspFlcnUcode 169 { 170 KernelGspFlcnUcodeBootType bootType; 171 union 172 { 173 KernelGspFlcnUcodeBootDirect ucodeBootDirect; 174 KernelGspFlcnUcodeBootWithLoader ucodeBootWithLoader; 175 KernelGspFlcnUcodeBootFromHs ucodeBootFromHs; 176 }; 177 } KernelGspFlcnUcode; 178 179 /*! 180 * GSP-RM source when running in Emulated/Simulated RISCV environment is 181 * extremely slow, so we need a factor (X) to scale timeouts by. 182 */ 183 #define GSP_SCALE_TIMEOUT_EMU_SIM 2500 184 185 /*! 186 * Size of libos init arguments packet. 187 */ 188 #define LIBOS_INIT_ARGUMENTS_SIZE 0x1000 189 190 /*! 191 * Structure for passing GSP-RM firmware data 192 */ 193 typedef struct GSP_FIRMWARE 194 { 195 const void *pBuf; // buffer holding the firmware (ucode) 196 NvU32 size; // size of the firmware 197 const void *pImageData; // points to the GSP FW image start inside the pBuf buffer 198 NvU64 imageSize; // GSP FW image size inside the pBuf buffer 199 const void *pSignatureData; // points to the GSP FW signature start inside the pBuf buffer 200 NvU64 signatureSize; // GSP FW signature size inside the pBuf buffer 201 const void *pLogElf; // firmware logging section and symbol information to decode logs 202 NvU32 logElfSize; // size of the gsp log elf binary 203 } GSP_FIRMWARE; 204 205 /*! 206 * Known ELF section names (or name prefixes) of gsp_*.bin or gsp_log_*.bin. 207 */ 208 #define GSP_VERSION_SECTION_NAME ".fwversion" 209 #define GSP_IMAGE_SECTION_NAME ".fwimage" 210 #define GSP_LOGGING_SECTION_NAME ".fwlogging" 211 #define GSP_SIGNATURE_SECTION_NAME_PREFIX ".fwsignature_" 212 #define GSP_CC_SIGNATURE_SECTION_NAME_PREFIX ".fwsignature_cc_" 213 214 /*! 215 * Index into libosLogDecode array. 216 */ 217 enum 218 { 219 LOGIDX_INIT, 220 LOGIDX_INTR, 221 LOGIDX_RM, 222 LOGIDX_SIZE 223 }; 224 225 /*! 226 * LIBOS task logging. 227 */ 228 typedef struct 229 { 230 /* Memory for task logging */ 231 MEMORY_DESCRIPTOR *pTaskLogDescriptor; 232 NvU64 *pTaskLogBuffer; 233 NvP64 pTaskLogMappingPriv; 234 NvU64 id8; 235 } RM_LIBOS_LOG_MEM; 236 237 /*! 238 * KernelGsp object definition 239 */ 240 #ifdef NVOC_KERNEL_GSP_H_PRIVATE_ACCESS_ALLOWED 241 #define PRIVATE_FIELD(x) x 242 #else 243 #define PRIVATE_FIELD(x) NVOC_PRIVATE_FIELD(x) 244 #endif 245 struct MESSAGE_QUEUE_COLLECTION; 246 247 248 struct KernelGsp { 249 const struct NVOC_RTTI *__nvoc_rtti; 250 struct OBJENGSTATE __nvoc_base_OBJENGSTATE; 251 struct IntrService __nvoc_base_IntrService; 252 struct KernelFalcon __nvoc_base_KernelFalcon; 253 struct Object *__nvoc_pbase_Object; 254 struct OBJENGSTATE *__nvoc_pbase_OBJENGSTATE; 255 struct IntrService *__nvoc_pbase_IntrService; 256 struct KernelFalcon *__nvoc_pbase_KernelFalcon; 257 struct KernelGsp *__nvoc_pbase_KernelGsp; 258 NV_STATUS (*__kgspConstructEngine__)(struct OBJGPU *, struct KernelGsp *, ENGDESCRIPTOR); 259 void (*__kgspRegisterIntrService__)(struct OBJGPU *, struct KernelGsp *, IntrServiceRecord *); 260 NvU32 (*__kgspServiceInterrupt__)(struct OBJGPU *, struct KernelGsp *, IntrServiceServiceInterruptArguments *); 261 void (*__kgspConfigureFalcon__)(struct OBJGPU *, struct KernelGsp *); 262 NvBool (*__kgspIsDebugModeEnabled__)(struct OBJGPU *, struct KernelGsp *); 263 NV_STATUS (*__kgspAllocBootArgs__)(struct OBJGPU *, struct KernelGsp *); 264 void (*__kgspFreeBootArgs__)(struct OBJGPU *, struct KernelGsp *); 265 NV_STATUS (*__kgspBootstrapRiscvOSEarly__)(struct OBJGPU *, struct KernelGsp *, GSP_FIRMWARE *); 266 void (*__kgspGetGspRmBootUcodeStorage__)(struct OBJGPU *, struct KernelGsp *, BINDATA_STORAGE **, BINDATA_STORAGE **); 267 const BINDATA_ARCHIVE *(*__kgspGetBinArchiveGspRmBoot__)(struct KernelGsp *); 268 const BINDATA_ARCHIVE *(*__kgspGetBinArchiveConcatenatedFMCDesc__)(struct KernelGsp *); 269 const BINDATA_ARCHIVE *(*__kgspGetBinArchiveConcatenatedFMC__)(struct KernelGsp *); 270 const BINDATA_ARCHIVE *(*__kgspGetBinArchiveGspRmFmcGfwDebugSigned__)(struct KernelGsp *); 271 const BINDATA_ARCHIVE *(*__kgspGetBinArchiveGspRmFmcGfwProdSigned__)(struct KernelGsp *); 272 const BINDATA_ARCHIVE *(*__kgspGetBinArchiveGspRmCcFmcGfwProdSigned__)(struct KernelGsp *); 273 NV_STATUS (*__kgspCalculateFbLayout__)(struct OBJGPU *, struct KernelGsp *, GSP_FIRMWARE *); 274 NvU32 (*__kgspGetNonWprHeapSize__)(struct OBJGPU *, struct KernelGsp *); 275 NV_STATUS (*__kgspExecuteSequencerCommand__)(struct OBJGPU *, struct KernelGsp *, NvU32, NvU32 *, NvU32); 276 NvU32 (*__kgspReadUcodeFuseVersion__)(struct OBJGPU *, struct KernelGsp *, NvU32); 277 NV_STATUS (*__kgspResetHw__)(struct OBJGPU *, struct KernelGsp *); 278 NvBool (*__kgspIsWpr2Up__)(struct OBJGPU *, struct KernelGsp *); 279 NvU32 (*__kgspGetFrtsSize__)(struct OBJGPU *, struct KernelGsp *); 280 NvU64 (*__kgspGetPrescrubbedTopFbSize__)(struct OBJGPU *, struct KernelGsp *); 281 NV_STATUS (*__kgspExtractVbiosFromRom__)(struct OBJGPU *, struct KernelGsp *, KernelGspVbiosImg **); 282 NV_STATUS (*__kgspExecuteFwsecFrts__)(struct OBJGPU *, struct KernelGsp *, KernelGspFlcnUcode *, const NvU64); 283 NV_STATUS (*__kgspExecuteFwsecSb__)(struct OBJGPU *, struct KernelGsp *, KernelGspFlcnUcode *); 284 NV_STATUS (*__kgspExecuteScrubberIfNeeded__)(struct OBJGPU *, struct KernelGsp *); 285 NV_STATUS (*__kgspExecuteBooterLoad__)(struct OBJGPU *, struct KernelGsp *, const NvU64); 286 NV_STATUS (*__kgspExecuteBooterUnloadIfNeeded__)(struct OBJGPU *, struct KernelGsp *, const NvU64); 287 NV_STATUS (*__kgspExecuteHsFalcon__)(struct OBJGPU *, struct KernelGsp *, KernelGspFlcnUcode *, struct KernelFalcon *, NvU32 *, NvU32 *); 288 NV_STATUS (*__kgspWaitForGfwBootOk__)(struct OBJGPU *, struct KernelGsp *); 289 const BINDATA_ARCHIVE *(*__kgspGetBinArchiveBooterLoadUcode__)(struct KernelGsp *); 290 const BINDATA_ARCHIVE *(*__kgspGetBinArchiveBooterUnloadUcode__)(struct KernelGsp *); 291 NvU64 (*__kgspGetMinWprHeapSizeMB__)(struct OBJGPU *, struct KernelGsp *); 292 NvU64 (*__kgspGetMaxWprHeapSizeMB__)(struct OBJGPU *, struct KernelGsp *); 293 NV_STATUS (*__kgspInitVgpuPartitionLogging__)(struct OBJGPU *, struct KernelGsp *, NvU32, NvU64, NvU64, NvU64, NvU64); 294 NV_STATUS (*__kgspFreeVgpuPartitionLogging__)(struct OBJGPU *, struct KernelGsp *, NvU32); 295 const char *(*__kgspGetSignatureSectionNamePrefix__)(struct OBJGPU *, struct KernelGsp *); 296 NV_STATUS (*__kgspSetupGspFmcArgs__)(struct OBJGPU *, struct KernelGsp *, GSP_FIRMWARE *); 297 NV_STATUS (*__kgspStateLoad__)(POBJGPU, struct KernelGsp *, NvU32); 298 NV_STATUS (*__kgspStateUnload__)(POBJGPU, struct KernelGsp *, NvU32); 299 NV_STATUS (*__kgspServiceNotificationInterrupt__)(struct OBJGPU *, struct KernelGsp *, IntrServiceServiceNotificationInterruptArguments *); 300 NV_STATUS (*__kgspStateInitLocked__)(POBJGPU, struct KernelGsp *); 301 NV_STATUS (*__kgspStatePreLoad__)(POBJGPU, struct KernelGsp *, NvU32); 302 NV_STATUS (*__kgspStatePostUnload__)(POBJGPU, struct KernelGsp *, NvU32); 303 void (*__kgspStateDestroy__)(POBJGPU, struct KernelGsp *); 304 NV_STATUS (*__kgspStatePreUnload__)(POBJGPU, struct KernelGsp *, NvU32); 305 NV_STATUS (*__kgspStateInitUnlocked__)(POBJGPU, struct KernelGsp *); 306 void (*__kgspInitMissing__)(POBJGPU, struct KernelGsp *); 307 NV_STATUS (*__kgspStatePreInitLocked__)(POBJGPU, struct KernelGsp *); 308 NV_STATUS (*__kgspStatePreInitUnlocked__)(POBJGPU, struct KernelGsp *); 309 NvBool (*__kgspClearInterrupt__)(struct OBJGPU *, struct KernelGsp *, IntrServiceClearInterruptArguments *); 310 NV_STATUS (*__kgspStatePostLoad__)(POBJGPU, struct KernelGsp *, NvU32); 311 NvBool (*__kgspIsPresent__)(POBJGPU, struct KernelGsp *); 312 struct MESSAGE_QUEUE_COLLECTION *pMQCollection; 313 struct OBJRPC *pRpc; 314 struct OBJRPC *pLocklessRpc; 315 KernelGspFlcnUcode *pFwsecUcode; 316 KernelGspFlcnUcode *pScrubberUcode; 317 KernelGspFlcnUcode *pBooterLoadUcode; 318 KernelGspFlcnUcode *pBooterUnloadUcode; 319 MEMORY_DESCRIPTOR *pWprMetaDescriptor; 320 GspFwWprMeta *pWprMeta; 321 NvP64 pWprMetaMappingPriv; 322 MEMORY_DESCRIPTOR *pSRMetaDescriptor; 323 MEMORY_DESCRIPTOR *pSRRadix3Descriptor; 324 MEMORY_DESCRIPTOR *pGspFmcArgumentsDescriptor; 325 GSP_FMC_BOOT_PARAMS *pGspFmcArgumentsCached; 326 NvP64 pGspFmcArgumentsMappingPriv; 327 MEMORY_DESCRIPTOR *pLibosInitArgumentsDescriptor; 328 LibosMemoryRegionInitArgument *pLibosInitArgumentsCached; 329 NvP64 pLibosInitArgumentsMappingPriv; 330 MEMORY_DESCRIPTOR *pGspArgumentsDescriptor; 331 GSP_ARGUMENTS_CACHED *pGspArgumentsCached; 332 NvP64 pGspArgumentsMappingPriv; 333 MEMORY_DESCRIPTOR *pGspRmBootUcodeMemdesc; 334 NvP64 pGspRmBootUcodeMemdescPriv; 335 NvU32 gspRmBootUcodeSize; 336 NvU8 *pGspRmBootUcodeImage; 337 RM_RISCV_UCODE_DESC *pGspRmBootUcodeDesc; 338 MEMORY_DESCRIPTOR *pGspUCodeRadix3Descriptor; 339 MEMORY_DESCRIPTOR *pSignatureMemdesc; 340 LIBOS_LOG_DECODE logDecode; 341 LIBOS_LOG_DECODE logDecodeVgpuPartition[32]; 342 RM_LIBOS_LOG_MEM rmLibosLogMem[3]; 343 RM_LIBOS_LOG_MEM gspPluginInitTaskLogMem[32]; 344 RM_LIBOS_LOG_MEM gspPluginVgpuTaskLogMem[32]; 345 void *pLogElf; 346 NvU64 logElfDataSize; 347 NvBool bLibosLogsPollingEnabled; 348 NvBool bInInit; 349 NvBool bInLockdown; 350 NvBool bPollingForRpcResponse; 351 MEMORY_DESCRIPTOR *pMemDesc_simAccessBuf; 352 SimAccessBuffer *pSimAccessBuf; 353 NvP64 pSimAccessBufPriv; 354 MEMORY_DESCRIPTOR *pProfilerSamplesMD; 355 void *pProfilerSamplesMDPriv; 356 void *pProfilerSamples; 357 GspStaticConfigInfo gspStaticInfo; 358 NvBool bIsTaskIsrQueueRequired; 359 NvBool bPartitionedFmc; 360 NvBool bScrubberUcodeSupported; 361 NvU32 fwHeapParamBaseSize; 362 NvU32 fwHeapParamOsCarveoutSize; 363 }; 364 365 #ifndef __NVOC_CLASS_KernelGsp_TYPEDEF__ 366 #define __NVOC_CLASS_KernelGsp_TYPEDEF__ 367 typedef struct KernelGsp KernelGsp; 368 #endif /* __NVOC_CLASS_KernelGsp_TYPEDEF__ */ 369 370 #ifndef __nvoc_class_id_KernelGsp 371 #define __nvoc_class_id_KernelGsp 0x311d4e 372 #endif /* __nvoc_class_id_KernelGsp */ 373 374 extern const struct NVOC_CLASS_DEF __nvoc_class_def_KernelGsp; 375 376 #define __staticCast_KernelGsp(pThis) \ 377 ((pThis)->__nvoc_pbase_KernelGsp) 378 379 #ifdef __nvoc_kernel_gsp_h_disabled 380 #define __dynamicCast_KernelGsp(pThis) ((KernelGsp*)NULL) 381 #else //__nvoc_kernel_gsp_h_disabled 382 #define __dynamicCast_KernelGsp(pThis) \ 383 ((KernelGsp*)__nvoc_dynamicCast(staticCast((pThis), Dynamic), classInfo(KernelGsp))) 384 #endif //__nvoc_kernel_gsp_h_disabled 385 386 #define PDB_PROP_KGSP_IS_MISSING_BASE_CAST __nvoc_base_OBJENGSTATE. 387 #define PDB_PROP_KGSP_IS_MISSING_BASE_NAME PDB_PROP_ENGSTATE_IS_MISSING 388 389 NV_STATUS __nvoc_objCreateDynamic_KernelGsp(KernelGsp**, Dynamic*, NvU32, va_list); 390 391 NV_STATUS __nvoc_objCreate_KernelGsp(KernelGsp**, Dynamic*, NvU32); 392 #define __objCreate_KernelGsp(ppNewObj, pParent, createFlags) \ 393 __nvoc_objCreate_KernelGsp((ppNewObj), staticCast((pParent), Dynamic), (createFlags)) 394 395 #define kgspConstructEngine(pGpu, pKernelGsp, arg0) kgspConstructEngine_DISPATCH(pGpu, pKernelGsp, arg0) 396 #define kgspRegisterIntrService(pGpu, pKernelGsp, pRecords) kgspRegisterIntrService_DISPATCH(pGpu, pKernelGsp, pRecords) 397 #define kgspServiceInterrupt(pGpu, pKernelGsp, pParams) kgspServiceInterrupt_DISPATCH(pGpu, pKernelGsp, pParams) 398 #define kgspConfigureFalcon(pGpu, pKernelGsp) kgspConfigureFalcon_DISPATCH(pGpu, pKernelGsp) 399 #define kgspConfigureFalcon_HAL(pGpu, pKernelGsp) kgspConfigureFalcon_DISPATCH(pGpu, pKernelGsp) 400 #define kgspIsDebugModeEnabled(pGpu, pKernelGsp) kgspIsDebugModeEnabled_DISPATCH(pGpu, pKernelGsp) 401 #define kgspIsDebugModeEnabled_HAL(pGpu, pKernelGsp) kgspIsDebugModeEnabled_DISPATCH(pGpu, pKernelGsp) 402 #define kgspAllocBootArgs(pGpu, pKernelGsp) kgspAllocBootArgs_DISPATCH(pGpu, pKernelGsp) 403 #define kgspAllocBootArgs_HAL(pGpu, pKernelGsp) kgspAllocBootArgs_DISPATCH(pGpu, pKernelGsp) 404 #define kgspFreeBootArgs(pGpu, pKernelGsp) kgspFreeBootArgs_DISPATCH(pGpu, pKernelGsp) 405 #define kgspFreeBootArgs_HAL(pGpu, pKernelGsp) kgspFreeBootArgs_DISPATCH(pGpu, pKernelGsp) 406 #define kgspBootstrapRiscvOSEarly(pGpu, pKernelGsp, pGspFw) kgspBootstrapRiscvOSEarly_DISPATCH(pGpu, pKernelGsp, pGspFw) 407 #define kgspBootstrapRiscvOSEarly_HAL(pGpu, pKernelGsp, pGspFw) kgspBootstrapRiscvOSEarly_DISPATCH(pGpu, pKernelGsp, pGspFw) 408 #define kgspGetGspRmBootUcodeStorage(pGpu, pKernelGsp, ppBinStorageImage, ppBinStorageDesc) kgspGetGspRmBootUcodeStorage_DISPATCH(pGpu, pKernelGsp, ppBinStorageImage, ppBinStorageDesc) 409 #define kgspGetGspRmBootUcodeStorage_HAL(pGpu, pKernelGsp, ppBinStorageImage, ppBinStorageDesc) kgspGetGspRmBootUcodeStorage_DISPATCH(pGpu, pKernelGsp, ppBinStorageImage, ppBinStorageDesc) 410 #define kgspGetBinArchiveGspRmBoot(pKernelGsp) kgspGetBinArchiveGspRmBoot_DISPATCH(pKernelGsp) 411 #define kgspGetBinArchiveGspRmBoot_HAL(pKernelGsp) kgspGetBinArchiveGspRmBoot_DISPATCH(pKernelGsp) 412 #define kgspGetBinArchiveConcatenatedFMCDesc(pKernelGsp) kgspGetBinArchiveConcatenatedFMCDesc_DISPATCH(pKernelGsp) 413 #define kgspGetBinArchiveConcatenatedFMCDesc_HAL(pKernelGsp) kgspGetBinArchiveConcatenatedFMCDesc_DISPATCH(pKernelGsp) 414 #define kgspGetBinArchiveConcatenatedFMC(pKernelGsp) kgspGetBinArchiveConcatenatedFMC_DISPATCH(pKernelGsp) 415 #define kgspGetBinArchiveConcatenatedFMC_HAL(pKernelGsp) kgspGetBinArchiveConcatenatedFMC_DISPATCH(pKernelGsp) 416 #define kgspGetBinArchiveGspRmFmcGfwDebugSigned(pKernelGsp) kgspGetBinArchiveGspRmFmcGfwDebugSigned_DISPATCH(pKernelGsp) 417 #define kgspGetBinArchiveGspRmFmcGfwDebugSigned_HAL(pKernelGsp) kgspGetBinArchiveGspRmFmcGfwDebugSigned_DISPATCH(pKernelGsp) 418 #define kgspGetBinArchiveGspRmFmcGfwProdSigned(pKernelGsp) kgspGetBinArchiveGspRmFmcGfwProdSigned_DISPATCH(pKernelGsp) 419 #define kgspGetBinArchiveGspRmFmcGfwProdSigned_HAL(pKernelGsp) kgspGetBinArchiveGspRmFmcGfwProdSigned_DISPATCH(pKernelGsp) 420 #define kgspGetBinArchiveGspRmCcFmcGfwProdSigned(pKernelGsp) kgspGetBinArchiveGspRmCcFmcGfwProdSigned_DISPATCH(pKernelGsp) 421 #define kgspGetBinArchiveGspRmCcFmcGfwProdSigned_HAL(pKernelGsp) kgspGetBinArchiveGspRmCcFmcGfwProdSigned_DISPATCH(pKernelGsp) 422 #define kgspCalculateFbLayout(pGpu, pKernelGsp, pGspFw) kgspCalculateFbLayout_DISPATCH(pGpu, pKernelGsp, pGspFw) 423 #define kgspCalculateFbLayout_HAL(pGpu, pKernelGsp, pGspFw) kgspCalculateFbLayout_DISPATCH(pGpu, pKernelGsp, pGspFw) 424 #define kgspGetNonWprHeapSize(pGpu, pKernelGsp) kgspGetNonWprHeapSize_DISPATCH(pGpu, pKernelGsp) 425 #define kgspGetNonWprHeapSize_HAL(pGpu, pKernelGsp) kgspGetNonWprHeapSize_DISPATCH(pGpu, pKernelGsp) 426 #define kgspExecuteSequencerCommand(pGpu, pKernelGsp, opCode, pPayLoad, payloadSize) kgspExecuteSequencerCommand_DISPATCH(pGpu, pKernelGsp, opCode, pPayLoad, payloadSize) 427 #define kgspExecuteSequencerCommand_HAL(pGpu, pKernelGsp, opCode, pPayLoad, payloadSize) kgspExecuteSequencerCommand_DISPATCH(pGpu, pKernelGsp, opCode, pPayLoad, payloadSize) 428 #define kgspReadUcodeFuseVersion(pGpu, pKernelGsp, ucodeId) kgspReadUcodeFuseVersion_DISPATCH(pGpu, pKernelGsp, ucodeId) 429 #define kgspReadUcodeFuseVersion_HAL(pGpu, pKernelGsp, ucodeId) kgspReadUcodeFuseVersion_DISPATCH(pGpu, pKernelGsp, ucodeId) 430 #define kgspResetHw(pGpu, pKernelGsp) kgspResetHw_DISPATCH(pGpu, pKernelGsp) 431 #define kgspResetHw_HAL(pGpu, pKernelGsp) kgspResetHw_DISPATCH(pGpu, pKernelGsp) 432 #define kgspIsWpr2Up(pGpu, pKernelGsp) kgspIsWpr2Up_DISPATCH(pGpu, pKernelGsp) 433 #define kgspIsWpr2Up_HAL(pGpu, pKernelGsp) kgspIsWpr2Up_DISPATCH(pGpu, pKernelGsp) 434 #define kgspGetFrtsSize(pGpu, pKernelGsp) kgspGetFrtsSize_DISPATCH(pGpu, pKernelGsp) 435 #define kgspGetFrtsSize_HAL(pGpu, pKernelGsp) kgspGetFrtsSize_DISPATCH(pGpu, pKernelGsp) 436 #define kgspGetPrescrubbedTopFbSize(pGpu, pKernelGsp) kgspGetPrescrubbedTopFbSize_DISPATCH(pGpu, pKernelGsp) 437 #define kgspGetPrescrubbedTopFbSize_HAL(pGpu, pKernelGsp) kgspGetPrescrubbedTopFbSize_DISPATCH(pGpu, pKernelGsp) 438 #define kgspExtractVbiosFromRom(pGpu, pKernelGsp, ppVbiosImg) kgspExtractVbiosFromRom_DISPATCH(pGpu, pKernelGsp, ppVbiosImg) 439 #define kgspExtractVbiosFromRom_HAL(pGpu, pKernelGsp, ppVbiosImg) kgspExtractVbiosFromRom_DISPATCH(pGpu, pKernelGsp, ppVbiosImg) 440 #define kgspExecuteFwsecFrts(pGpu, pKernelGsp, pFwsecUcode, frtsOffset) kgspExecuteFwsecFrts_DISPATCH(pGpu, pKernelGsp, pFwsecUcode, frtsOffset) 441 #define kgspExecuteFwsecFrts_HAL(pGpu, pKernelGsp, pFwsecUcode, frtsOffset) kgspExecuteFwsecFrts_DISPATCH(pGpu, pKernelGsp, pFwsecUcode, frtsOffset) 442 #define kgspExecuteFwsecSb(pGpu, pKernelGsp, pFwsecUcode) kgspExecuteFwsecSb_DISPATCH(pGpu, pKernelGsp, pFwsecUcode) 443 #define kgspExecuteFwsecSb_HAL(pGpu, pKernelGsp, pFwsecUcode) kgspExecuteFwsecSb_DISPATCH(pGpu, pKernelGsp, pFwsecUcode) 444 #define kgspExecuteScrubberIfNeeded(pGpu, pKernelGsp) kgspExecuteScrubberIfNeeded_DISPATCH(pGpu, pKernelGsp) 445 #define kgspExecuteScrubberIfNeeded_HAL(pGpu, pKernelGsp) kgspExecuteScrubberIfNeeded_DISPATCH(pGpu, pKernelGsp) 446 #define kgspExecuteBooterLoad(pGpu, pKernelGsp, sysmemAddrOfData) kgspExecuteBooterLoad_DISPATCH(pGpu, pKernelGsp, sysmemAddrOfData) 447 #define kgspExecuteBooterLoad_HAL(pGpu, pKernelGsp, sysmemAddrOfData) kgspExecuteBooterLoad_DISPATCH(pGpu, pKernelGsp, sysmemAddrOfData) 448 #define kgspExecuteBooterUnloadIfNeeded(pGpu, pKernelGsp, sysmemAddrOfSuspendResumeData) kgspExecuteBooterUnloadIfNeeded_DISPATCH(pGpu, pKernelGsp, sysmemAddrOfSuspendResumeData) 449 #define kgspExecuteBooterUnloadIfNeeded_HAL(pGpu, pKernelGsp, sysmemAddrOfSuspendResumeData) kgspExecuteBooterUnloadIfNeeded_DISPATCH(pGpu, pKernelGsp, sysmemAddrOfSuspendResumeData) 450 #define kgspExecuteHsFalcon(pGpu, pKernelGsp, pFlcnUcode, pKernelFlcn, pMailbox0, pMailbox1) kgspExecuteHsFalcon_DISPATCH(pGpu, pKernelGsp, pFlcnUcode, pKernelFlcn, pMailbox0, pMailbox1) 451 #define kgspExecuteHsFalcon_HAL(pGpu, pKernelGsp, pFlcnUcode, pKernelFlcn, pMailbox0, pMailbox1) kgspExecuteHsFalcon_DISPATCH(pGpu, pKernelGsp, pFlcnUcode, pKernelFlcn, pMailbox0, pMailbox1) 452 #define kgspWaitForGfwBootOk(pGpu, pKernelGsp) kgspWaitForGfwBootOk_DISPATCH(pGpu, pKernelGsp) 453 #define kgspWaitForGfwBootOk_HAL(pGpu, pKernelGsp) kgspWaitForGfwBootOk_DISPATCH(pGpu, pKernelGsp) 454 #define kgspGetBinArchiveBooterLoadUcode(pKernelGsp) kgspGetBinArchiveBooterLoadUcode_DISPATCH(pKernelGsp) 455 #define kgspGetBinArchiveBooterLoadUcode_HAL(pKernelGsp) kgspGetBinArchiveBooterLoadUcode_DISPATCH(pKernelGsp) 456 #define kgspGetBinArchiveBooterUnloadUcode(pKernelGsp) kgspGetBinArchiveBooterUnloadUcode_DISPATCH(pKernelGsp) 457 #define kgspGetBinArchiveBooterUnloadUcode_HAL(pKernelGsp) kgspGetBinArchiveBooterUnloadUcode_DISPATCH(pKernelGsp) 458 #define kgspGetMinWprHeapSizeMB(pGpu, pKernelGsp) kgspGetMinWprHeapSizeMB_DISPATCH(pGpu, pKernelGsp) 459 #define kgspGetMinWprHeapSizeMB_HAL(pGpu, pKernelGsp) kgspGetMinWprHeapSizeMB_DISPATCH(pGpu, pKernelGsp) 460 #define kgspGetMaxWprHeapSizeMB(pGpu, pKernelGsp) kgspGetMaxWprHeapSizeMB_DISPATCH(pGpu, pKernelGsp) 461 #define kgspGetMaxWprHeapSizeMB_HAL(pGpu, pKernelGsp) kgspGetMaxWprHeapSizeMB_DISPATCH(pGpu, pKernelGsp) 462 #define kgspInitVgpuPartitionLogging(pGpu, pKernelGsp, gfid, initTaskLogBUffOffset, initTaskLogBUffSize, vgpuTaskLogBUffOffset, vgpuTaskLogBuffSize) kgspInitVgpuPartitionLogging_DISPATCH(pGpu, pKernelGsp, gfid, initTaskLogBUffOffset, initTaskLogBUffSize, vgpuTaskLogBUffOffset, vgpuTaskLogBuffSize) 463 #define kgspInitVgpuPartitionLogging_HAL(pGpu, pKernelGsp, gfid, initTaskLogBUffOffset, initTaskLogBUffSize, vgpuTaskLogBUffOffset, vgpuTaskLogBuffSize) kgspInitVgpuPartitionLogging_DISPATCH(pGpu, pKernelGsp, gfid, initTaskLogBUffOffset, initTaskLogBUffSize, vgpuTaskLogBUffOffset, vgpuTaskLogBuffSize) 464 #define kgspFreeVgpuPartitionLogging(pGpu, pKernelGsp, gfid) kgspFreeVgpuPartitionLogging_DISPATCH(pGpu, pKernelGsp, gfid) 465 #define kgspFreeVgpuPartitionLogging_HAL(pGpu, pKernelGsp, gfid) kgspFreeVgpuPartitionLogging_DISPATCH(pGpu, pKernelGsp, gfid) 466 #define kgspGetSignatureSectionNamePrefix(pGpu, pKernelGsp) kgspGetSignatureSectionNamePrefix_DISPATCH(pGpu, pKernelGsp) 467 #define kgspGetSignatureSectionNamePrefix_HAL(pGpu, pKernelGsp) kgspGetSignatureSectionNamePrefix_DISPATCH(pGpu, pKernelGsp) 468 #define kgspSetupGspFmcArgs(pGpu, pKernelGsp, pGspFw) kgspSetupGspFmcArgs_DISPATCH(pGpu, pKernelGsp, pGspFw) 469 #define kgspSetupGspFmcArgs_HAL(pGpu, pKernelGsp, pGspFw) kgspSetupGspFmcArgs_DISPATCH(pGpu, pKernelGsp, pGspFw) 470 #define kgspStateLoad(pGpu, pEngstate, arg0) kgspStateLoad_DISPATCH(pGpu, pEngstate, arg0) 471 #define kgspStateUnload(pGpu, pEngstate, arg0) kgspStateUnload_DISPATCH(pGpu, pEngstate, arg0) 472 #define kgspServiceNotificationInterrupt(pGpu, pIntrService, pParams) kgspServiceNotificationInterrupt_DISPATCH(pGpu, pIntrService, pParams) 473 #define kgspStateInitLocked(pGpu, pEngstate) kgspStateInitLocked_DISPATCH(pGpu, pEngstate) 474 #define kgspStatePreLoad(pGpu, pEngstate, arg0) kgspStatePreLoad_DISPATCH(pGpu, pEngstate, arg0) 475 #define kgspStatePostUnload(pGpu, pEngstate, arg0) kgspStatePostUnload_DISPATCH(pGpu, pEngstate, arg0) 476 #define kgspStateDestroy(pGpu, pEngstate) kgspStateDestroy_DISPATCH(pGpu, pEngstate) 477 #define kgspStatePreUnload(pGpu, pEngstate, arg0) kgspStatePreUnload_DISPATCH(pGpu, pEngstate, arg0) 478 #define kgspStateInitUnlocked(pGpu, pEngstate) kgspStateInitUnlocked_DISPATCH(pGpu, pEngstate) 479 #define kgspInitMissing(pGpu, pEngstate) kgspInitMissing_DISPATCH(pGpu, pEngstate) 480 #define kgspStatePreInitLocked(pGpu, pEngstate) kgspStatePreInitLocked_DISPATCH(pGpu, pEngstate) 481 #define kgspStatePreInitUnlocked(pGpu, pEngstate) kgspStatePreInitUnlocked_DISPATCH(pGpu, pEngstate) 482 #define kgspClearInterrupt(pGpu, pIntrService, pParams) kgspClearInterrupt_DISPATCH(pGpu, pIntrService, pParams) 483 #define kgspStatePostLoad(pGpu, pEngstate, arg0) kgspStatePostLoad_DISPATCH(pGpu, pEngstate, arg0) 484 #define kgspIsPresent(pGpu, pEngstate) kgspIsPresent_DISPATCH(pGpu, pEngstate) 485 void kgspProgramLibosBootArgsAddr_TU102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 486 487 488 #ifdef __nvoc_kernel_gsp_h_disabled 489 static inline void kgspProgramLibosBootArgsAddr(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 490 NV_ASSERT_FAILED_PRECOMP("KernelGsp was disabled!"); 491 } 492 #else //__nvoc_kernel_gsp_h_disabled 493 #define kgspProgramLibosBootArgsAddr(pGpu, pKernelGsp) kgspProgramLibosBootArgsAddr_TU102(pGpu, pKernelGsp) 494 #endif //__nvoc_kernel_gsp_h_disabled 495 496 #define kgspProgramLibosBootArgsAddr_HAL(pGpu, pKernelGsp) kgspProgramLibosBootArgsAddr(pGpu, pKernelGsp) 497 498 NV_STATUS kgspSetCmdQueueHead_TU102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, NvU32 queueIdx, NvU32 value); 499 500 501 #ifdef __nvoc_kernel_gsp_h_disabled 502 static inline NV_STATUS kgspSetCmdQueueHead(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, NvU32 queueIdx, NvU32 value) { 503 NV_ASSERT_FAILED_PRECOMP("KernelGsp was disabled!"); 504 return NV_ERR_NOT_SUPPORTED; 505 } 506 #else //__nvoc_kernel_gsp_h_disabled 507 #define kgspSetCmdQueueHead(pGpu, pKernelGsp, queueIdx, value) kgspSetCmdQueueHead_TU102(pGpu, pKernelGsp, queueIdx, value) 508 #endif //__nvoc_kernel_gsp_h_disabled 509 510 #define kgspSetCmdQueueHead_HAL(pGpu, pKernelGsp, queueIdx, value) kgspSetCmdQueueHead(pGpu, pKernelGsp, queueIdx, value) 511 512 void kgspHealthCheck_TU102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 513 514 515 #ifdef __nvoc_kernel_gsp_h_disabled 516 static inline void kgspHealthCheck(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 517 NV_ASSERT_FAILED_PRECOMP("KernelGsp was disabled!"); 518 } 519 #else //__nvoc_kernel_gsp_h_disabled 520 #define kgspHealthCheck(pGpu, pKernelGsp) kgspHealthCheck_TU102(pGpu, pKernelGsp) 521 #endif //__nvoc_kernel_gsp_h_disabled 522 523 #define kgspHealthCheck_HAL(pGpu, pKernelGsp) kgspHealthCheck(pGpu, pKernelGsp) 524 525 NvU32 kgspService_TU102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 526 527 528 #ifdef __nvoc_kernel_gsp_h_disabled 529 static inline NvU32 kgspService(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 530 NV_ASSERT_FAILED_PRECOMP("KernelGsp was disabled!"); 531 return 0; 532 } 533 #else //__nvoc_kernel_gsp_h_disabled 534 #define kgspService(pGpu, pKernelGsp) kgspService_TU102(pGpu, pKernelGsp) 535 #endif //__nvoc_kernel_gsp_h_disabled 536 537 #define kgspService_HAL(pGpu, pKernelGsp) kgspService(pGpu, pKernelGsp) 538 539 NV_STATUS kgspWaitForProcessorSuspend_TU102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 540 541 542 #ifdef __nvoc_kernel_gsp_h_disabled 543 static inline NV_STATUS kgspWaitForProcessorSuspend(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 544 NV_ASSERT_FAILED_PRECOMP("KernelGsp was disabled!"); 545 return NV_ERR_NOT_SUPPORTED; 546 } 547 #else //__nvoc_kernel_gsp_h_disabled 548 #define kgspWaitForProcessorSuspend(pGpu, pKernelGsp) kgspWaitForProcessorSuspend_TU102(pGpu, pKernelGsp) 549 #endif //__nvoc_kernel_gsp_h_disabled 550 551 #define kgspWaitForProcessorSuspend_HAL(pGpu, pKernelGsp) kgspWaitForProcessorSuspend(pGpu, pKernelGsp) 552 553 NV_STATUS kgspSavePowerMgmtState_TU102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 554 555 556 #ifdef __nvoc_kernel_gsp_h_disabled 557 static inline NV_STATUS kgspSavePowerMgmtState(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 558 NV_ASSERT_FAILED_PRECOMP("KernelGsp was disabled!"); 559 return NV_ERR_NOT_SUPPORTED; 560 } 561 #else //__nvoc_kernel_gsp_h_disabled 562 #define kgspSavePowerMgmtState(pGpu, pKernelGsp) kgspSavePowerMgmtState_TU102(pGpu, pKernelGsp) 563 #endif //__nvoc_kernel_gsp_h_disabled 564 565 #define kgspSavePowerMgmtState_HAL(pGpu, pKernelGsp) kgspSavePowerMgmtState(pGpu, pKernelGsp) 566 567 NV_STATUS kgspRestorePowerMgmtState_TU102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 568 569 570 #ifdef __nvoc_kernel_gsp_h_disabled 571 static inline NV_STATUS kgspRestorePowerMgmtState(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 572 NV_ASSERT_FAILED_PRECOMP("KernelGsp was disabled!"); 573 return NV_ERR_NOT_SUPPORTED; 574 } 575 #else //__nvoc_kernel_gsp_h_disabled 576 #define kgspRestorePowerMgmtState(pGpu, pKernelGsp) kgspRestorePowerMgmtState_TU102(pGpu, pKernelGsp) 577 #endif //__nvoc_kernel_gsp_h_disabled 578 579 #define kgspRestorePowerMgmtState_HAL(pGpu, pKernelGsp) kgspRestorePowerMgmtState(pGpu, pKernelGsp) 580 581 void kgspFreeSuspendResumeData_TU102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 582 583 584 #ifdef __nvoc_kernel_gsp_h_disabled 585 static inline void kgspFreeSuspendResumeData(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 586 NV_ASSERT_FAILED_PRECOMP("KernelGsp was disabled!"); 587 } 588 #else //__nvoc_kernel_gsp_h_disabled 589 #define kgspFreeSuspendResumeData(pGpu, pKernelGsp) kgspFreeSuspendResumeData_TU102(pGpu, pKernelGsp) 590 #endif //__nvoc_kernel_gsp_h_disabled 591 592 #define kgspFreeSuspendResumeData_HAL(pGpu, pKernelGsp) kgspFreeSuspendResumeData(pGpu, pKernelGsp) 593 594 NV_STATUS kgspConstructEngine_IMPL(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, ENGDESCRIPTOR arg0); 595 596 static inline NV_STATUS kgspConstructEngine_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, ENGDESCRIPTOR arg0) { 597 return pKernelGsp->__kgspConstructEngine__(pGpu, pKernelGsp, arg0); 598 } 599 600 void kgspRegisterIntrService_IMPL(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, IntrServiceRecord pRecords[167]); 601 602 static inline void kgspRegisterIntrService_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, IntrServiceRecord pRecords[167]) { 603 pKernelGsp->__kgspRegisterIntrService__(pGpu, pKernelGsp, pRecords); 604 } 605 606 NvU32 kgspServiceInterrupt_IMPL(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, IntrServiceServiceInterruptArguments *pParams); 607 608 static inline NvU32 kgspServiceInterrupt_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, IntrServiceServiceInterruptArguments *pParams) { 609 return pKernelGsp->__kgspServiceInterrupt__(pGpu, pKernelGsp, pParams); 610 } 611 612 void kgspConfigureFalcon_TU102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 613 614 void kgspConfigureFalcon_GA102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 615 616 static inline void kgspConfigureFalcon_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 617 pKernelGsp->__kgspConfigureFalcon__(pGpu, pKernelGsp); 618 } 619 620 NvBool kgspIsDebugModeEnabled_TU102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 621 622 NvBool kgspIsDebugModeEnabled_GA100(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 623 624 static inline NvBool kgspIsDebugModeEnabled_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 625 return pKernelGsp->__kgspIsDebugModeEnabled__(pGpu, pKernelGsp); 626 } 627 628 NV_STATUS kgspAllocBootArgs_TU102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 629 630 NV_STATUS kgspAllocBootArgs_GH100(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 631 632 static inline NV_STATUS kgspAllocBootArgs_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 633 return pKernelGsp->__kgspAllocBootArgs__(pGpu, pKernelGsp); 634 } 635 636 void kgspFreeBootArgs_TU102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 637 638 void kgspFreeBootArgs_GH100(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 639 640 static inline void kgspFreeBootArgs_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 641 pKernelGsp->__kgspFreeBootArgs__(pGpu, pKernelGsp); 642 } 643 644 NV_STATUS kgspBootstrapRiscvOSEarly_TU102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, GSP_FIRMWARE *pGspFw); 645 646 NV_STATUS kgspBootstrapRiscvOSEarly_GA102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, GSP_FIRMWARE *pGspFw); 647 648 NV_STATUS kgspBootstrapRiscvOSEarly_GH100(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, GSP_FIRMWARE *pGspFw); 649 650 static inline NV_STATUS kgspBootstrapRiscvOSEarly_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, GSP_FIRMWARE *pGspFw) { 651 return pKernelGsp->__kgspBootstrapRiscvOSEarly__(pGpu, pKernelGsp, pGspFw); 652 } 653 654 void kgspGetGspRmBootUcodeStorage_TU102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, BINDATA_STORAGE **ppBinStorageImage, BINDATA_STORAGE **ppBinStorageDesc); 655 656 void kgspGetGspRmBootUcodeStorage_GA102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, BINDATA_STORAGE **ppBinStorageImage, BINDATA_STORAGE **ppBinStorageDesc); 657 658 void kgspGetGspRmBootUcodeStorage_GH100(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, BINDATA_STORAGE **ppBinStorageImage, BINDATA_STORAGE **ppBinStorageDesc); 659 660 static inline void kgspGetGspRmBootUcodeStorage_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, BINDATA_STORAGE **ppBinStorageImage, BINDATA_STORAGE **ppBinStorageDesc) { 661 pKernelGsp->__kgspGetGspRmBootUcodeStorage__(pGpu, pKernelGsp, ppBinStorageImage, ppBinStorageDesc); 662 } 663 664 const BINDATA_ARCHIVE *kgspGetBinArchiveGspRmBoot_TU102(struct KernelGsp *pKernelGsp); 665 666 const BINDATA_ARCHIVE *kgspGetBinArchiveGspRmBoot_GA100(struct KernelGsp *pKernelGsp); 667 668 const BINDATA_ARCHIVE *kgspGetBinArchiveGspRmBoot_GA102(struct KernelGsp *pKernelGsp); 669 670 const BINDATA_ARCHIVE *kgspGetBinArchiveGspRmBoot_GH100(struct KernelGsp *pKernelGsp); 671 672 const BINDATA_ARCHIVE *kgspGetBinArchiveGspRmBoot_AD102(struct KernelGsp *pKernelGsp); 673 674 static inline const BINDATA_ARCHIVE *kgspGetBinArchiveGspRmBoot_DISPATCH(struct KernelGsp *pKernelGsp) { 675 return pKernelGsp->__kgspGetBinArchiveGspRmBoot__(pKernelGsp); 676 } 677 678 const BINDATA_ARCHIVE *kgspGetBinArchiveConcatenatedFMCDesc_GH100(struct KernelGsp *pKernelGsp); 679 680 static inline const BINDATA_ARCHIVE *kgspGetBinArchiveConcatenatedFMCDesc_80f438(struct KernelGsp *pKernelGsp) { 681 NV_ASSERT_OR_RETURN_PRECOMP(0, ((void *)0)); 682 } 683 684 static inline const BINDATA_ARCHIVE *kgspGetBinArchiveConcatenatedFMCDesc_DISPATCH(struct KernelGsp *pKernelGsp) { 685 return pKernelGsp->__kgspGetBinArchiveConcatenatedFMCDesc__(pKernelGsp); 686 } 687 688 const BINDATA_ARCHIVE *kgspGetBinArchiveConcatenatedFMC_GH100(struct KernelGsp *pKernelGsp); 689 690 static inline const BINDATA_ARCHIVE *kgspGetBinArchiveConcatenatedFMC_80f438(struct KernelGsp *pKernelGsp) { 691 NV_ASSERT_OR_RETURN_PRECOMP(0, ((void *)0)); 692 } 693 694 static inline const BINDATA_ARCHIVE *kgspGetBinArchiveConcatenatedFMC_DISPATCH(struct KernelGsp *pKernelGsp) { 695 return pKernelGsp->__kgspGetBinArchiveConcatenatedFMC__(pKernelGsp); 696 } 697 698 const BINDATA_ARCHIVE *kgspGetBinArchiveGspRmFmcGfwDebugSigned_GH100(struct KernelGsp *pKernelGsp); 699 700 static inline const BINDATA_ARCHIVE *kgspGetBinArchiveGspRmFmcGfwDebugSigned_80f438(struct KernelGsp *pKernelGsp) { 701 NV_ASSERT_OR_RETURN_PRECOMP(0, ((void *)0)); 702 } 703 704 static inline const BINDATA_ARCHIVE *kgspGetBinArchiveGspRmFmcGfwDebugSigned_DISPATCH(struct KernelGsp *pKernelGsp) { 705 return pKernelGsp->__kgspGetBinArchiveGspRmFmcGfwDebugSigned__(pKernelGsp); 706 } 707 708 const BINDATA_ARCHIVE *kgspGetBinArchiveGspRmFmcGfwProdSigned_GH100(struct KernelGsp *pKernelGsp); 709 710 static inline const BINDATA_ARCHIVE *kgspGetBinArchiveGspRmFmcGfwProdSigned_80f438(struct KernelGsp *pKernelGsp) { 711 NV_ASSERT_OR_RETURN_PRECOMP(0, ((void *)0)); 712 } 713 714 static inline const BINDATA_ARCHIVE *kgspGetBinArchiveGspRmFmcGfwProdSigned_DISPATCH(struct KernelGsp *pKernelGsp) { 715 return pKernelGsp->__kgspGetBinArchiveGspRmFmcGfwProdSigned__(pKernelGsp); 716 } 717 718 const BINDATA_ARCHIVE *kgspGetBinArchiveGspRmCcFmcGfwProdSigned_GH100(struct KernelGsp *pKernelGsp); 719 720 static inline const BINDATA_ARCHIVE *kgspGetBinArchiveGspRmCcFmcGfwProdSigned_80f438(struct KernelGsp *pKernelGsp) { 721 NV_ASSERT_OR_RETURN_PRECOMP(0, ((void *)0)); 722 } 723 724 static inline const BINDATA_ARCHIVE *kgspGetBinArchiveGspRmCcFmcGfwProdSigned_DISPATCH(struct KernelGsp *pKernelGsp) { 725 return pKernelGsp->__kgspGetBinArchiveGspRmCcFmcGfwProdSigned__(pKernelGsp); 726 } 727 728 NV_STATUS kgspCalculateFbLayout_TU102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, GSP_FIRMWARE *pGspFw); 729 730 NV_STATUS kgspCalculateFbLayout_GH100(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, GSP_FIRMWARE *pGspFw); 731 732 static inline NV_STATUS kgspCalculateFbLayout_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, GSP_FIRMWARE *pGspFw) { 733 return pKernelGsp->__kgspCalculateFbLayout__(pGpu, pKernelGsp, pGspFw); 734 } 735 736 static inline NvU32 kgspGetNonWprHeapSize_ed6b8b(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 737 return 1048576; 738 } 739 740 static inline NvU32 kgspGetNonWprHeapSize_d505ea(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 741 return 2097152; 742 } 743 744 static inline NvU32 kgspGetNonWprHeapSize_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 745 return pKernelGsp->__kgspGetNonWprHeapSize__(pGpu, pKernelGsp); 746 } 747 748 NV_STATUS kgspExecuteSequencerCommand_TU102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, NvU32 opCode, NvU32 *pPayLoad, NvU32 payloadSize); 749 750 NV_STATUS kgspExecuteSequencerCommand_GA102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, NvU32 opCode, NvU32 *pPayLoad, NvU32 payloadSize); 751 752 static inline NV_STATUS kgspExecuteSequencerCommand_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, NvU32 opCode, NvU32 *pPayLoad, NvU32 payloadSize) { 753 return pKernelGsp->__kgspExecuteSequencerCommand__(pGpu, pKernelGsp, opCode, pPayLoad, payloadSize); 754 } 755 756 static inline NvU32 kgspReadUcodeFuseVersion_b2b553(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, NvU32 ucodeId) { 757 return 0; 758 } 759 760 NvU32 kgspReadUcodeFuseVersion_GA100(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, NvU32 ucodeId); 761 762 static inline NvU32 kgspReadUcodeFuseVersion_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, NvU32 ucodeId) { 763 return pKernelGsp->__kgspReadUcodeFuseVersion__(pGpu, pKernelGsp, ucodeId); 764 } 765 766 NV_STATUS kgspResetHw_TU102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 767 768 NV_STATUS kgspResetHw_GH100(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 769 770 static inline NV_STATUS kgspResetHw_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 771 return pKernelGsp->__kgspResetHw__(pGpu, pKernelGsp); 772 } 773 774 NvBool kgspIsWpr2Up_TU102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 775 776 NvBool kgspIsWpr2Up_GH100(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 777 778 static inline NvBool kgspIsWpr2Up_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 779 return pKernelGsp->__kgspIsWpr2Up__(pGpu, pKernelGsp); 780 } 781 782 NvU32 kgspGetFrtsSize_TU102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 783 784 static inline NvU32 kgspGetFrtsSize_4a4dee(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 785 return 0; 786 } 787 788 static inline NvU32 kgspGetFrtsSize_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 789 return pKernelGsp->__kgspGetFrtsSize__(pGpu, pKernelGsp); 790 } 791 792 static inline NvU64 kgspGetPrescrubbedTopFbSize_e1e623(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 793 return 256 * 1024 * 1024; 794 } 795 796 static inline NvU64 kgspGetPrescrubbedTopFbSize_604eb7(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 797 return (+18446744073709551615ULL); 798 } 799 800 static inline NvU64 kgspGetPrescrubbedTopFbSize_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 801 return pKernelGsp->__kgspGetPrescrubbedTopFbSize__(pGpu, pKernelGsp); 802 } 803 804 NV_STATUS kgspExtractVbiosFromRom_TU102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, KernelGspVbiosImg **ppVbiosImg); 805 806 static inline NV_STATUS kgspExtractVbiosFromRom_395e98(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, KernelGspVbiosImg **ppVbiosImg) { 807 return NV_ERR_NOT_SUPPORTED; 808 } 809 810 static inline NV_STATUS kgspExtractVbiosFromRom_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, KernelGspVbiosImg **ppVbiosImg) { 811 return pKernelGsp->__kgspExtractVbiosFromRom__(pGpu, pKernelGsp, ppVbiosImg); 812 } 813 814 NV_STATUS kgspExecuteFwsecFrts_TU102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, KernelGspFlcnUcode *pFwsecUcode, const NvU64 frtsOffset); 815 816 static inline NV_STATUS kgspExecuteFwsecFrts_5baef9(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, KernelGspFlcnUcode *pFwsecUcode, const NvU64 frtsOffset) { 817 NV_ASSERT_OR_RETURN_PRECOMP(0, NV_ERR_NOT_SUPPORTED); 818 } 819 820 static inline NV_STATUS kgspExecuteFwsecFrts_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, KernelGspFlcnUcode *pFwsecUcode, const NvU64 frtsOffset) { 821 return pKernelGsp->__kgspExecuteFwsecFrts__(pGpu, pKernelGsp, pFwsecUcode, frtsOffset); 822 } 823 824 NV_STATUS kgspExecuteFwsecSb_TU102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, KernelGspFlcnUcode *pFwsecUcode); 825 826 static inline NV_STATUS kgspExecuteFwsecSb_ac1694(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, KernelGspFlcnUcode *pFwsecUcode) { 827 return NV_OK; 828 } 829 830 static inline NV_STATUS kgspExecuteFwsecSb_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, KernelGspFlcnUcode *pFwsecUcode) { 831 return pKernelGsp->__kgspExecuteFwsecSb__(pGpu, pKernelGsp, pFwsecUcode); 832 } 833 834 NV_STATUS kgspExecuteScrubberIfNeeded_AD102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 835 836 static inline NV_STATUS kgspExecuteScrubberIfNeeded_5baef9(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 837 NV_ASSERT_OR_RETURN_PRECOMP(0, NV_ERR_NOT_SUPPORTED); 838 } 839 840 static inline NV_STATUS kgspExecuteScrubberIfNeeded_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 841 return pKernelGsp->__kgspExecuteScrubberIfNeeded__(pGpu, pKernelGsp); 842 } 843 844 NV_STATUS kgspExecuteBooterLoad_TU102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, const NvU64 sysmemAddrOfData); 845 846 static inline NV_STATUS kgspExecuteBooterLoad_5baef9(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, const NvU64 sysmemAddrOfData) { 847 NV_ASSERT_OR_RETURN_PRECOMP(0, NV_ERR_NOT_SUPPORTED); 848 } 849 850 static inline NV_STATUS kgspExecuteBooterLoad_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, const NvU64 sysmemAddrOfData) { 851 return pKernelGsp->__kgspExecuteBooterLoad__(pGpu, pKernelGsp, sysmemAddrOfData); 852 } 853 854 NV_STATUS kgspExecuteBooterUnloadIfNeeded_TU102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, const NvU64 sysmemAddrOfSuspendResumeData); 855 856 static inline NV_STATUS kgspExecuteBooterUnloadIfNeeded_5baef9(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, const NvU64 sysmemAddrOfSuspendResumeData) { 857 NV_ASSERT_OR_RETURN_PRECOMP(0, NV_ERR_NOT_SUPPORTED); 858 } 859 860 static inline NV_STATUS kgspExecuteBooterUnloadIfNeeded_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, const NvU64 sysmemAddrOfSuspendResumeData) { 861 return pKernelGsp->__kgspExecuteBooterUnloadIfNeeded__(pGpu, pKernelGsp, sysmemAddrOfSuspendResumeData); 862 } 863 864 NV_STATUS kgspExecuteHsFalcon_TU102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, KernelGspFlcnUcode *pFlcnUcode, struct KernelFalcon *pKernelFlcn, NvU32 *pMailbox0, NvU32 *pMailbox1); 865 866 NV_STATUS kgspExecuteHsFalcon_GA102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, KernelGspFlcnUcode *pFlcnUcode, struct KernelFalcon *pKernelFlcn, NvU32 *pMailbox0, NvU32 *pMailbox1); 867 868 static inline NV_STATUS kgspExecuteHsFalcon_5baef9(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, KernelGspFlcnUcode *pFlcnUcode, struct KernelFalcon *pKernelFlcn, NvU32 *pMailbox0, NvU32 *pMailbox1) { 869 NV_ASSERT_OR_RETURN_PRECOMP(0, NV_ERR_NOT_SUPPORTED); 870 } 871 872 static inline NV_STATUS kgspExecuteHsFalcon_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, KernelGspFlcnUcode *pFlcnUcode, struct KernelFalcon *pKernelFlcn, NvU32 *pMailbox0, NvU32 *pMailbox1) { 873 return pKernelGsp->__kgspExecuteHsFalcon__(pGpu, pKernelGsp, pFlcnUcode, pKernelFlcn, pMailbox0, pMailbox1); 874 } 875 876 NV_STATUS kgspWaitForGfwBootOk_TU102(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 877 878 NV_STATUS kgspWaitForGfwBootOk_GH100(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 879 880 static inline NV_STATUS kgspWaitForGfwBootOk_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 881 return pKernelGsp->__kgspWaitForGfwBootOk__(pGpu, pKernelGsp); 882 } 883 884 const BINDATA_ARCHIVE *kgspGetBinArchiveBooterLoadUcode_TU102(struct KernelGsp *pKernelGsp); 885 886 const BINDATA_ARCHIVE *kgspGetBinArchiveBooterLoadUcode_TU116(struct KernelGsp *pKernelGsp); 887 888 const BINDATA_ARCHIVE *kgspGetBinArchiveBooterLoadUcode_GA100(struct KernelGsp *pKernelGsp); 889 890 const BINDATA_ARCHIVE *kgspGetBinArchiveBooterLoadUcode_GA102(struct KernelGsp *pKernelGsp); 891 892 const BINDATA_ARCHIVE *kgspGetBinArchiveBooterLoadUcode_AD102(struct KernelGsp *pKernelGsp); 893 894 static inline const BINDATA_ARCHIVE *kgspGetBinArchiveBooterLoadUcode_80f438(struct KernelGsp *pKernelGsp) { 895 NV_ASSERT_OR_RETURN_PRECOMP(0, ((void *)0)); 896 } 897 898 static inline const BINDATA_ARCHIVE *kgspGetBinArchiveBooterLoadUcode_DISPATCH(struct KernelGsp *pKernelGsp) { 899 return pKernelGsp->__kgspGetBinArchiveBooterLoadUcode__(pKernelGsp); 900 } 901 902 const BINDATA_ARCHIVE *kgspGetBinArchiveBooterUnloadUcode_TU102(struct KernelGsp *pKernelGsp); 903 904 const BINDATA_ARCHIVE *kgspGetBinArchiveBooterUnloadUcode_TU116(struct KernelGsp *pKernelGsp); 905 906 const BINDATA_ARCHIVE *kgspGetBinArchiveBooterUnloadUcode_GA100(struct KernelGsp *pKernelGsp); 907 908 const BINDATA_ARCHIVE *kgspGetBinArchiveBooterUnloadUcode_GA102(struct KernelGsp *pKernelGsp); 909 910 const BINDATA_ARCHIVE *kgspGetBinArchiveBooterUnloadUcode_AD102(struct KernelGsp *pKernelGsp); 911 912 static inline const BINDATA_ARCHIVE *kgspGetBinArchiveBooterUnloadUcode_80f438(struct KernelGsp *pKernelGsp) { 913 NV_ASSERT_OR_RETURN_PRECOMP(0, ((void *)0)); 914 } 915 916 static inline const BINDATA_ARCHIVE *kgspGetBinArchiveBooterUnloadUcode_DISPATCH(struct KernelGsp *pKernelGsp) { 917 return pKernelGsp->__kgspGetBinArchiveBooterUnloadUcode__(pKernelGsp); 918 } 919 920 static inline NvU64 kgspGetMinWprHeapSizeMB_7185bf(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 921 return (64U); 922 } 923 924 static inline NvU64 kgspGetMinWprHeapSizeMB_907c84(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 925 return pGpu->bVgpuGspPluginOffloadEnabled ? (549U) : (84U); 926 } 927 928 static inline NvU64 kgspGetMinWprHeapSizeMB_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 929 return pKernelGsp->__kgspGetMinWprHeapSizeMB__(pGpu, pKernelGsp); 930 } 931 932 static inline NvU64 kgspGetMaxWprHeapSizeMB_ad4e6a(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 933 return (256U); 934 } 935 936 static inline NvU64 kgspGetMaxWprHeapSizeMB_5839e2(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 937 return pGpu->bVgpuGspPluginOffloadEnabled ? (1024U) : (276U); 938 } 939 940 static inline NvU64 kgspGetMaxWprHeapSizeMB_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 941 return pKernelGsp->__kgspGetMaxWprHeapSizeMB__(pGpu, pKernelGsp); 942 } 943 944 static inline NV_STATUS kgspInitVgpuPartitionLogging_395e98(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, NvU32 gfid, NvU64 initTaskLogBUffOffset, NvU64 initTaskLogBUffSize, NvU64 vgpuTaskLogBUffOffset, NvU64 vgpuTaskLogBuffSize) { 945 return NV_ERR_NOT_SUPPORTED; 946 } 947 948 NV_STATUS kgspInitVgpuPartitionLogging_IMPL(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, NvU32 gfid, NvU64 initTaskLogBUffOffset, NvU64 initTaskLogBUffSize, NvU64 vgpuTaskLogBUffOffset, NvU64 vgpuTaskLogBuffSize); 949 950 static inline NV_STATUS kgspInitVgpuPartitionLogging_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, NvU32 gfid, NvU64 initTaskLogBUffOffset, NvU64 initTaskLogBUffSize, NvU64 vgpuTaskLogBUffOffset, NvU64 vgpuTaskLogBuffSize) { 951 return pKernelGsp->__kgspInitVgpuPartitionLogging__(pGpu, pKernelGsp, gfid, initTaskLogBUffOffset, initTaskLogBUffSize, vgpuTaskLogBUffOffset, vgpuTaskLogBuffSize); 952 } 953 954 static inline NV_STATUS kgspFreeVgpuPartitionLogging_395e98(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, NvU32 gfid) { 955 return NV_ERR_NOT_SUPPORTED; 956 } 957 958 NV_STATUS kgspFreeVgpuPartitionLogging_IMPL(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, NvU32 gfid); 959 960 static inline NV_STATUS kgspFreeVgpuPartitionLogging_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, NvU32 gfid) { 961 return pKernelGsp->__kgspFreeVgpuPartitionLogging__(pGpu, pKernelGsp, gfid); 962 } 963 964 const char *kgspGetSignatureSectionNamePrefix_GH100(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 965 966 static inline const char *kgspGetSignatureSectionNamePrefix_789efb(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 967 return ".fwsignature_"; 968 } 969 970 static inline const char *kgspGetSignatureSectionNamePrefix_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 971 return pKernelGsp->__kgspGetSignatureSectionNamePrefix__(pGpu, pKernelGsp); 972 } 973 974 NV_STATUS kgspSetupGspFmcArgs_GH100(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, GSP_FIRMWARE *pGspFw); 975 976 static inline NV_STATUS kgspSetupGspFmcArgs_5baef9(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, GSP_FIRMWARE *pGspFw) { 977 NV_ASSERT_OR_RETURN_PRECOMP(0, NV_ERR_NOT_SUPPORTED); 978 } 979 980 static inline NV_STATUS kgspSetupGspFmcArgs_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, GSP_FIRMWARE *pGspFw) { 981 return pKernelGsp->__kgspSetupGspFmcArgs__(pGpu, pKernelGsp, pGspFw); 982 } 983 984 static inline NV_STATUS kgspStateLoad_DISPATCH(POBJGPU pGpu, struct KernelGsp *pEngstate, NvU32 arg0) { 985 return pEngstate->__kgspStateLoad__(pGpu, pEngstate, arg0); 986 } 987 988 static inline NV_STATUS kgspStateUnload_DISPATCH(POBJGPU pGpu, struct KernelGsp *pEngstate, NvU32 arg0) { 989 return pEngstate->__kgspStateUnload__(pGpu, pEngstate, arg0); 990 } 991 992 static inline NV_STATUS kgspServiceNotificationInterrupt_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pIntrService, IntrServiceServiceNotificationInterruptArguments *pParams) { 993 return pIntrService->__kgspServiceNotificationInterrupt__(pGpu, pIntrService, pParams); 994 } 995 996 static inline NV_STATUS kgspStateInitLocked_DISPATCH(POBJGPU pGpu, struct KernelGsp *pEngstate) { 997 return pEngstate->__kgspStateInitLocked__(pGpu, pEngstate); 998 } 999 1000 static inline NV_STATUS kgspStatePreLoad_DISPATCH(POBJGPU pGpu, struct KernelGsp *pEngstate, NvU32 arg0) { 1001 return pEngstate->__kgspStatePreLoad__(pGpu, pEngstate, arg0); 1002 } 1003 1004 static inline NV_STATUS kgspStatePostUnload_DISPATCH(POBJGPU pGpu, struct KernelGsp *pEngstate, NvU32 arg0) { 1005 return pEngstate->__kgspStatePostUnload__(pGpu, pEngstate, arg0); 1006 } 1007 1008 static inline void kgspStateDestroy_DISPATCH(POBJGPU pGpu, struct KernelGsp *pEngstate) { 1009 pEngstate->__kgspStateDestroy__(pGpu, pEngstate); 1010 } 1011 1012 static inline NV_STATUS kgspStatePreUnload_DISPATCH(POBJGPU pGpu, struct KernelGsp *pEngstate, NvU32 arg0) { 1013 return pEngstate->__kgspStatePreUnload__(pGpu, pEngstate, arg0); 1014 } 1015 1016 static inline NV_STATUS kgspStateInitUnlocked_DISPATCH(POBJGPU pGpu, struct KernelGsp *pEngstate) { 1017 return pEngstate->__kgspStateInitUnlocked__(pGpu, pEngstate); 1018 } 1019 1020 static inline void kgspInitMissing_DISPATCH(POBJGPU pGpu, struct KernelGsp *pEngstate) { 1021 pEngstate->__kgspInitMissing__(pGpu, pEngstate); 1022 } 1023 1024 static inline NV_STATUS kgspStatePreInitLocked_DISPATCH(POBJGPU pGpu, struct KernelGsp *pEngstate) { 1025 return pEngstate->__kgspStatePreInitLocked__(pGpu, pEngstate); 1026 } 1027 1028 static inline NV_STATUS kgspStatePreInitUnlocked_DISPATCH(POBJGPU pGpu, struct KernelGsp *pEngstate) { 1029 return pEngstate->__kgspStatePreInitUnlocked__(pGpu, pEngstate); 1030 } 1031 1032 static inline NvBool kgspClearInterrupt_DISPATCH(struct OBJGPU *pGpu, struct KernelGsp *pIntrService, IntrServiceClearInterruptArguments *pParams) { 1033 return pIntrService->__kgspClearInterrupt__(pGpu, pIntrService, pParams); 1034 } 1035 1036 static inline NV_STATUS kgspStatePostLoad_DISPATCH(POBJGPU pGpu, struct KernelGsp *pEngstate, NvU32 arg0) { 1037 return pEngstate->__kgspStatePostLoad__(pGpu, pEngstate, arg0); 1038 } 1039 1040 static inline NvBool kgspIsPresent_DISPATCH(POBJGPU pGpu, struct KernelGsp *pEngstate) { 1041 return pEngstate->__kgspIsPresent__(pGpu, pEngstate); 1042 } 1043 1044 void kgspDestruct_IMPL(struct KernelGsp *pKernelGsp); 1045 1046 #define __nvoc_kgspDestruct(pKernelGsp) kgspDestruct_IMPL(pKernelGsp) 1047 void kgspPopulateGspRmInitArgs_IMPL(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, GSP_SR_INIT_ARGUMENTS *pGspSrInitArgs); 1048 1049 #ifdef __nvoc_kernel_gsp_h_disabled 1050 static inline void kgspPopulateGspRmInitArgs(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, GSP_SR_INIT_ARGUMENTS *pGspSrInitArgs) { 1051 NV_ASSERT_FAILED_PRECOMP("KernelGsp was disabled!"); 1052 } 1053 #else //__nvoc_kernel_gsp_h_disabled 1054 #define kgspPopulateGspRmInitArgs(pGpu, pKernelGsp, pGspSrInitArgs) kgspPopulateGspRmInitArgs_IMPL(pGpu, pKernelGsp, pGspSrInitArgs) 1055 #endif //__nvoc_kernel_gsp_h_disabled 1056 1057 NV_STATUS kgspInitRm_IMPL(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, GSP_FIRMWARE *pGspFw); 1058 1059 #ifdef __nvoc_kernel_gsp_h_disabled 1060 static inline NV_STATUS kgspInitRm(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, GSP_FIRMWARE *pGspFw) { 1061 NV_ASSERT_FAILED_PRECOMP("KernelGsp was disabled!"); 1062 return NV_ERR_NOT_SUPPORTED; 1063 } 1064 #else //__nvoc_kernel_gsp_h_disabled 1065 #define kgspInitRm(pGpu, pKernelGsp, pGspFw) kgspInitRm_IMPL(pGpu, pKernelGsp, pGspFw) 1066 #endif //__nvoc_kernel_gsp_h_disabled 1067 1068 NV_STATUS kgspCreateRadix3_IMPL(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, MEMORY_DESCRIPTOR **ppMemdescRadix3, MEMORY_DESCRIPTOR *pMemdescData, const void *pData, NvU64 sizeOfData); 1069 1070 #ifdef __nvoc_kernel_gsp_h_disabled 1071 static inline NV_STATUS kgspCreateRadix3(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, MEMORY_DESCRIPTOR **ppMemdescRadix3, MEMORY_DESCRIPTOR *pMemdescData, const void *pData, NvU64 sizeOfData) { 1072 NV_ASSERT_FAILED_PRECOMP("KernelGsp was disabled!"); 1073 return NV_ERR_NOT_SUPPORTED; 1074 } 1075 #else //__nvoc_kernel_gsp_h_disabled 1076 #define kgspCreateRadix3(pGpu, pKernelGsp, ppMemdescRadix3, pMemdescData, pData, sizeOfData) kgspCreateRadix3_IMPL(pGpu, pKernelGsp, ppMemdescRadix3, pMemdescData, pData, sizeOfData) 1077 #endif //__nvoc_kernel_gsp_h_disabled 1078 1079 NV_STATUS kgspUnloadRm_IMPL(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 1080 1081 #ifdef __nvoc_kernel_gsp_h_disabled 1082 static inline NV_STATUS kgspUnloadRm(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 1083 NV_ASSERT_FAILED_PRECOMP("KernelGsp was disabled!"); 1084 return NV_ERR_NOT_SUPPORTED; 1085 } 1086 #else //__nvoc_kernel_gsp_h_disabled 1087 #define kgspUnloadRm(pGpu, pKernelGsp) kgspUnloadRm_IMPL(pGpu, pKernelGsp) 1088 #endif //__nvoc_kernel_gsp_h_disabled 1089 1090 NV_STATUS kgspPrepareBootBinaryImage_IMPL(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 1091 1092 #ifdef __nvoc_kernel_gsp_h_disabled 1093 static inline NV_STATUS kgspPrepareBootBinaryImage(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 1094 NV_ASSERT_FAILED_PRECOMP("KernelGsp was disabled!"); 1095 return NV_ERR_NOT_SUPPORTED; 1096 } 1097 #else //__nvoc_kernel_gsp_h_disabled 1098 #define kgspPrepareBootBinaryImage(pGpu, pKernelGsp) kgspPrepareBootBinaryImage_IMPL(pGpu, pKernelGsp) 1099 #endif //__nvoc_kernel_gsp_h_disabled 1100 1101 NvU64 kgspGetFwHeapSize_IMPL(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, NvU64 posteriorFbSize); 1102 1103 #ifdef __nvoc_kernel_gsp_h_disabled 1104 static inline NvU64 kgspGetFwHeapSize(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, NvU64 posteriorFbSize) { 1105 NV_ASSERT_FAILED_PRECOMP("KernelGsp was disabled!"); 1106 return 0; 1107 } 1108 #else //__nvoc_kernel_gsp_h_disabled 1109 #define kgspGetFwHeapSize(pGpu, pKernelGsp, posteriorFbSize) kgspGetFwHeapSize_IMPL(pGpu, pKernelGsp, posteriorFbSize) 1110 #endif //__nvoc_kernel_gsp_h_disabled 1111 1112 void kgspSetupLibosInitArgs_IMPL(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 1113 1114 #ifdef __nvoc_kernel_gsp_h_disabled 1115 static inline void kgspSetupLibosInitArgs(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 1116 NV_ASSERT_FAILED_PRECOMP("KernelGsp was disabled!"); 1117 } 1118 #else //__nvoc_kernel_gsp_h_disabled 1119 #define kgspSetupLibosInitArgs(pGpu, pKernelGsp) kgspSetupLibosInitArgs_IMPL(pGpu, pKernelGsp) 1120 #endif //__nvoc_kernel_gsp_h_disabled 1121 1122 void kgspRpcRecvEvents_IMPL(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 1123 1124 #ifdef __nvoc_kernel_gsp_h_disabled 1125 static inline void kgspRpcRecvEvents(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 1126 NV_ASSERT_FAILED_PRECOMP("KernelGsp was disabled!"); 1127 } 1128 #else //__nvoc_kernel_gsp_h_disabled 1129 #define kgspRpcRecvEvents(pGpu, pKernelGsp) kgspRpcRecvEvents_IMPL(pGpu, pKernelGsp) 1130 #endif //__nvoc_kernel_gsp_h_disabled 1131 1132 NV_STATUS kgspWaitForRmInitDone_IMPL(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 1133 1134 #ifdef __nvoc_kernel_gsp_h_disabled 1135 static inline NV_STATUS kgspWaitForRmInitDone(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 1136 NV_ASSERT_FAILED_PRECOMP("KernelGsp was disabled!"); 1137 return NV_ERR_NOT_SUPPORTED; 1138 } 1139 #else //__nvoc_kernel_gsp_h_disabled 1140 #define kgspWaitForRmInitDone(pGpu, pKernelGsp) kgspWaitForRmInitDone_IMPL(pGpu, pKernelGsp) 1141 #endif //__nvoc_kernel_gsp_h_disabled 1142 1143 NV_STATUS kgspStartLogPolling_IMPL(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp); 1144 1145 #ifdef __nvoc_kernel_gsp_h_disabled 1146 static inline NV_STATUS kgspStartLogPolling(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp) { 1147 NV_ASSERT_FAILED_PRECOMP("KernelGsp was disabled!"); 1148 return NV_ERR_NOT_SUPPORTED; 1149 } 1150 #else //__nvoc_kernel_gsp_h_disabled 1151 #define kgspStartLogPolling(pGpu, pKernelGsp) kgspStartLogPolling_IMPL(pGpu, pKernelGsp) 1152 #endif //__nvoc_kernel_gsp_h_disabled 1153 1154 void kgspDumpGspLogs_IMPL(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, NvBool arg0); 1155 1156 #ifdef __nvoc_kernel_gsp_h_disabled 1157 static inline void kgspDumpGspLogs(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, NvBool arg0) { 1158 NV_ASSERT_FAILED_PRECOMP("KernelGsp was disabled!"); 1159 } 1160 #else //__nvoc_kernel_gsp_h_disabled 1161 #define kgspDumpGspLogs(pGpu, pKernelGsp, arg0) kgspDumpGspLogs_IMPL(pGpu, pKernelGsp, arg0) 1162 #endif //__nvoc_kernel_gsp_h_disabled 1163 1164 NV_STATUS kgspExecuteSequencerBuffer_IMPL(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, void *pRunCpuSeqParams); 1165 1166 #ifdef __nvoc_kernel_gsp_h_disabled 1167 static inline NV_STATUS kgspExecuteSequencerBuffer(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, void *pRunCpuSeqParams) { 1168 NV_ASSERT_FAILED_PRECOMP("KernelGsp was disabled!"); 1169 return NV_ERR_NOT_SUPPORTED; 1170 } 1171 #else //__nvoc_kernel_gsp_h_disabled 1172 #define kgspExecuteSequencerBuffer(pGpu, pKernelGsp, pRunCpuSeqParams) kgspExecuteSequencerBuffer_IMPL(pGpu, pKernelGsp, pRunCpuSeqParams) 1173 #endif //__nvoc_kernel_gsp_h_disabled 1174 1175 NV_STATUS kgspParseFwsecUcodeFromVbiosImg_IMPL(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, const KernelGspVbiosImg *const pVbiosImg, KernelGspFlcnUcode **ppFwsecUcode); 1176 1177 #ifdef __nvoc_kernel_gsp_h_disabled 1178 static inline NV_STATUS kgspParseFwsecUcodeFromVbiosImg(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, const KernelGspVbiosImg *const pVbiosImg, KernelGspFlcnUcode **ppFwsecUcode) { 1179 NV_ASSERT_FAILED_PRECOMP("KernelGsp was disabled!"); 1180 return NV_ERR_NOT_SUPPORTED; 1181 } 1182 #else //__nvoc_kernel_gsp_h_disabled 1183 #define kgspParseFwsecUcodeFromVbiosImg(pGpu, pKernelGsp, pVbiosImg, ppFwsecUcode) kgspParseFwsecUcodeFromVbiosImg_IMPL(pGpu, pKernelGsp, pVbiosImg, ppFwsecUcode) 1184 #endif //__nvoc_kernel_gsp_h_disabled 1185 1186 NV_STATUS kgspAllocateScrubberUcodeImage_IMPL(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, KernelGspFlcnUcode **ppScrubberUcode); 1187 1188 #ifdef __nvoc_kernel_gsp_h_disabled 1189 static inline NV_STATUS kgspAllocateScrubberUcodeImage(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, KernelGspFlcnUcode **ppScrubberUcode) { 1190 NV_ASSERT_FAILED_PRECOMP("KernelGsp was disabled!"); 1191 return NV_ERR_NOT_SUPPORTED; 1192 } 1193 #else //__nvoc_kernel_gsp_h_disabled 1194 #define kgspAllocateScrubberUcodeImage(pGpu, pKernelGsp, ppScrubberUcode) kgspAllocateScrubberUcodeImage_IMPL(pGpu, pKernelGsp, ppScrubberUcode) 1195 #endif //__nvoc_kernel_gsp_h_disabled 1196 1197 NV_STATUS kgspAllocateBooterLoadUcodeImage_IMPL(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, KernelGspFlcnUcode **ppBooterLoadUcode); 1198 1199 #ifdef __nvoc_kernel_gsp_h_disabled 1200 static inline NV_STATUS kgspAllocateBooterLoadUcodeImage(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, KernelGspFlcnUcode **ppBooterLoadUcode) { 1201 NV_ASSERT_FAILED_PRECOMP("KernelGsp was disabled!"); 1202 return NV_ERR_NOT_SUPPORTED; 1203 } 1204 #else //__nvoc_kernel_gsp_h_disabled 1205 #define kgspAllocateBooterLoadUcodeImage(pGpu, pKernelGsp, ppBooterLoadUcode) kgspAllocateBooterLoadUcodeImage_IMPL(pGpu, pKernelGsp, ppBooterLoadUcode) 1206 #endif //__nvoc_kernel_gsp_h_disabled 1207 1208 NV_STATUS kgspAllocateBooterUnloadUcodeImage_IMPL(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, KernelGspFlcnUcode **ppBooterUnloadUcode); 1209 1210 #ifdef __nvoc_kernel_gsp_h_disabled 1211 static inline NV_STATUS kgspAllocateBooterUnloadUcodeImage(struct OBJGPU *pGpu, struct KernelGsp *pKernelGsp, KernelGspFlcnUcode **ppBooterUnloadUcode) { 1212 NV_ASSERT_FAILED_PRECOMP("KernelGsp was disabled!"); 1213 return NV_ERR_NOT_SUPPORTED; 1214 } 1215 #else //__nvoc_kernel_gsp_h_disabled 1216 #define kgspAllocateBooterUnloadUcodeImage(pGpu, pKernelGsp, ppBooterUnloadUcode) kgspAllocateBooterUnloadUcodeImage_IMPL(pGpu, pKernelGsp, ppBooterUnloadUcode) 1217 #endif //__nvoc_kernel_gsp_h_disabled 1218 1219 #undef PRIVATE_FIELD 1220 1221 1222 NV_STATUS rpcRmApiControl_GSP(RM_API *pRmApi, NvHandle hClient, NvHandle hObject, 1223 NvU32 cmd, void *pParamStructPtr, NvU32 paramsSize); 1224 NV_STATUS rpcRmApiAlloc_GSP(RM_API *pRmApi, NvHandle hClient, NvHandle hParent, 1225 NvHandle hObject, NvU32 hClass, void *pAllocParams, NvU32 allocParamsSize); 1226 NV_STATUS rpcRmApiDupObject_GSP(RM_API *pRmApi, NvHandle hClient, NvHandle hParent, NvHandle *phObject, 1227 NvHandle hClientSrc, NvHandle hObjectSrc, NvU32 flags); 1228 NV_STATUS rpcRmApiFree_GSP(RM_API *pRmApi, NvHandle hClient, NvHandle hObject); 1229 1230 /* Free a KernelGspVbiosImg structure */ 1231 void kgspFreeVbiosImg(KernelGspVbiosImg *pVbiosImg); 1232 /* Free a KernelGspFlcnUcode structure */ 1233 void kgspFreeFlcnUcode(KernelGspFlcnUcode *pFlcnUcode); 1234 1235 #endif // KERNEL_GSP_H 1236 1237 #ifdef __cplusplus 1238 } // extern "C" 1239 #endif 1240 #endif // _G_KERNEL_GSP_NVOC_H_ 1241