summaryrefslogtreecommitdiffstats
path: root/userspace/sdks/nv570/inc/ctrl/ctrl208f/ctrl208ffb.h
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-09-13 18:36:21 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-09-13 18:36:21 -0400
commit00e54c13c7c9030c4d5f7151467f2d85a3730e29 (patch)
tree17a45239df8d2e4912ff3697ed06e85a10b969de /userspace/sdks/nv570/inc/ctrl/ctrl208f/ctrl208ffb.h
downloadopen-iov-00e54c13c7c9030c4d5f7151467f2d85a3730e29.tar.gz
open-iov-00e54c13c7c9030c4d5f7151467f2d85a3730e29.zip
Initial commit: Open-IOV vGPU-IO complete stack
- Firmware decompilation: GSP 570.144W (28.5MB ELF, RV64IMAC), 132 decompiled C files - Kernel modules: nvidia.ko (34MB, OpenRM), open-iov-vfio.ko (2.8MB, VFIO mdev), gsp-vgpu.ko (1.8MB, guest driver) - Userspace: libiov.so/libvgpu.so (76KB), example_vgpu (28KB), rpc_emulator.c - PCI config space emulation (256B with PM, MSI, MSI-X, PCIe caps) - 12 RPC types fully mapped from firmware decompilation - BAR trap, WPR, scheduling, notification, migration emulation - Helper scripts: load_vgpu_stack, create_mdev, launch_qemu_vgpu, test_vgpu_stack, setup_guest_driver, unload_vgpu_stack - Architecture documentation - Wiki: 10 technical documents - Git LFS for large binaries (.ko, .bin, .iso, .img, .o, ghidra repos) - nvidia-open-gpu-kernel-modules as submodule
Diffstat (limited to 'userspace/sdks/nv570/inc/ctrl/ctrl208f/ctrl208ffb.h')
-rw-r--r--userspace/sdks/nv570/inc/ctrl/ctrl208f/ctrl208ffb.h842
1 files changed, 842 insertions, 0 deletions
diff --git a/userspace/sdks/nv570/inc/ctrl/ctrl208f/ctrl208ffb.h b/userspace/sdks/nv570/inc/ctrl/ctrl208f/ctrl208ffb.h
new file mode 100644
index 0000000..2add87a
--- /dev/null
+++ b/userspace/sdks/nv570/inc/ctrl/ctrl208f/ctrl208ffb.h
@@ -0,0 +1,842 @@
+/*
+ * SPDX-FileCopyrightText: Copyright (c) 2009-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+ * SPDX-License-Identifier: MIT
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+#pragma once
+
+#include <nvtypes.h>
+
+//
+// This file was generated with FINN, an NVIDIA coding tool.
+// Source file: ctrl/ctrl208f/ctrl208ffb.finn
+//
+
+#include "ctrl/ctrl208f/ctrl208fbase.h"
+
+/*
+ * NV208F_CTRL_CMD_FB_GET_INFO
+ *
+ * This command returns fb engine information for the associated GPU.
+ * The client specifies what information to query through 'index' param.
+ * On success, the information is stored in the 'data' param.
+ *
+ * index
+ * Specify what information to query. Please see below for valid values of
+ * indexes for this command.
+ * data
+ * On success, this param will hold the data that the client queried for.
+ *
+ * Possible status values returned are:
+ * NV_OK
+ * NV_ERR_INVALID_PARAM_STRUCT
+ * NV_ERR_INVALID_ARGUMENT
+ */
+#define NV208F_CTRL_CMD_FB_GET_INFO (0x208f0501) /* finn: Evaluated from "(FINN_NV20_SUBDEVICE_DIAG_FB_INTERFACE_ID << 8) | NV208F_CTRL_FB_GET_INFO_PARAMS_MESSAGE_ID" */
+
+#define NV208F_CTRL_FB_GET_INFO_PARAMS_MESSAGE_ID (0x1U)
+
+typedef struct NV208F_CTRL_FB_GET_INFO_PARAMS {
+ NvU32 index;
+ NV_DECLARE_ALIGNED(NvU64 data, 8);
+} NV208F_CTRL_FB_GET_INFO_PARAMS;
+
+/* valid fb info index values */
+#define NV208F_CTRL_FB_INFO_INDEX_FREE_CONTIG_COMPRESSION_SIZE (0x00000001)
+
+#define NV208F_CTRL_FB_INFO_INDEX_MAX NV208F_CTRL_FB_INFO_INDEX_FREE_CONTIG_COMPRESSION_SIZE
+
+/*
+ * NV208F_CTRL_CMD_FB_GET_ZBC_REFCOUNT
+ *
+ * This command gets the ZBC reference count associated with a given
+ * compression tag address. It is not supported on GPUs which support class
+ * GF100_ZBC_CLEAR as it is specific to a different hardware implementation.
+ *
+ * compTagAddress
+ * The input parameter indicating the compression tag address for which the
+ * associated ZBC refcount should be looked up.
+ * zbcRefCount
+ * An array of reference counts for the ZBC clear values associated with
+ * compTagAddress.
+ *
+ * Possible status values returned are:
+ * NV_OK
+ * NV_ERR_INVALID_ARGUMENT
+ */
+#define NV208F_CTRL_CMD_FB_GET_ZBC_REFCOUNT (0x208f0505) /* finn: Evaluated from "(FINN_NV20_SUBDEVICE_DIAG_FB_INTERFACE_ID << 8) | 0x5" */ // Deprecated, removed form RM
+
+#define NV208F_CTRL_FB_GET_ZBC_REFCOUNT_MAX_REFCOUNTS 2
+typedef struct NV208F_CTRL_FB_GET_ZBC_REFCOUNT_PARAMS {
+ NvU32 compTagAddress;
+ NvU32 zbcRefCount[NV208F_CTRL_FB_GET_ZBC_REFCOUNT_MAX_REFCOUNTS];
+} NV208F_CTRL_FB_GET_ZBC_REFCOUNT_PARAMS;
+
+/*
+ * NV208F_CTRL_CMD_FB_CTRL_GPU_CACHE
+ *
+ * This command controls the state of a cache which all GPU memory accesses go
+ * through. If supported, it allows changing of the power state and the write
+ * mode. This is only supported when NV_VERIF_FEATURES is defined. An error
+ * will be returned if the requested combination of settings is not possible.
+ *
+ * writeMode
+ * Specifies the write mode of the cache. Possible values are defined in
+ * NV208F_CTRL_FB_CTRL_GPU_CACHE_WRITE_MODE. Passing _DEFAULT means to
+ * maintain the current write mode. It is illegal to change the write mode
+ * while the cache is disabled or in the same call as a request to disable
+ * it.
+ * powerState
+ * Specifies the power state of the cache. Possible values are defined in
+ * NV208F_CTRL_FB_CTRL_GPU_CACHE_POWER_STATE. Passing _DEFAULT means
+ * to maintain the current power state.
+ * rcmState
+ * Specifies the reduced cache mode of the cache. Possible values are
+ * defined in NV208F_CTRL_FB_CTRL_GPU_CACHE_RCM_STATE. Passing _DEFAULT
+ * means to maintain the current RCM state.
+ * vgaCacheMode
+ * Specifies whether or not to enable VGA out-of-cache mode. Possible
+ * values are defined in NV208F_CTRL_FB_CTRL_GPU_CACHE_VGA_MODE. Passing
+ * _DEFAULT means to maintain the current VGA caching mode.
+ * cacheReset
+ * Triggers a hardware reset of the cache. Possible values are defined in
+ * NV208F_CTRL_FB_CTRL_GPU_CACHE_CACHE_RESET. Passing _DEFAULT does
+ * nothing while passing _RESET clears all data in the cache.
+ * flags
+ * Contains flags to control the details of how transitions should be
+ * handled. Possible values are defined in
+ * NV208F_CTRL_FB_CTRL_GPU_CACHE_FLAGS. Passing _DEFAULT for any of
+ * the fields means to use the defaults specified by the Resource Manager.
+ * Note not all options are available for all transitions. Flags that are
+ * set but not applicable will be silently ignored.
+ * bypassMode
+ * (Fermi only) Specifies the bypass mode of the L2 cache. Normal GPU
+ * operation is _DISABLE. For TEST ONLY, setting _ENABLE enables a debug
+ * mode where all transactions miss in L2 and no writes are combined,
+ * essentially disabling the caching feature of the L2 cache.
+ *
+ * Possible status values returned are:
+ * NV_OK
+ * NV_ERR_NOT_SUPPORTED
+ * NV_ERR_INVALID_STATE
+ * NV_ERR_INVALID_ARGUMENT
+ */
+
+#define NV208F_CTRL_CMD_FB_CTRL_GPU_CACHE (0x208f0506) /* finn: Evaluated from "(FINN_NV20_SUBDEVICE_DIAG_FB_INTERFACE_ID << 8) | NV208F_CTRL_FB_CTRL_GPU_CACHE_PARAMS_MESSAGE_ID" */
+
+#define NV208F_CTRL_FB_CTRL_GPU_CACHE_PARAMS_MESSAGE_ID (0x6U)
+
+typedef struct NV208F_CTRL_FB_CTRL_GPU_CACHE_PARAMS {
+ NvU32 writeMode;
+ NvU32 powerState;
+ NvU32 rcmState;
+ NvU32 vgaCacheMode;
+ NvU32 cacheReset;
+ NvU32 flags;
+ NvU32 bypassMode;
+} NV208F_CTRL_FB_CTRL_GPU_CACHE_PARAMS;
+
+/* valid values for writeMode */
+#define NV208F_CTRL_FB_CTRL_GPU_CACHE_WRITE_MODE_DEFAULT (0x00000000)
+#define NV208F_CTRL_FB_CTRL_GPU_CACHE_WRITE_MODE_WRITETHROUGH (0x00000001)
+#define NV208F_CTRL_FB_CTRL_GPU_CACHE_WRITE_MODE_WRITEBACK (0x00000002)
+
+/* valid values for powerState */
+#define NV208F_CTRL_FB_CTRL_GPU_CACHE_POWER_STATE_DEFAULT (0x00000000)
+#define NV208F_CTRL_FB_CTRL_GPU_CACHE_POWER_STATE_ENABLED (0x00000001)
+#define NV208F_CTRL_FB_CTRL_GPU_CACHE_POWER_STATE_DISABLED (0x00000002)
+
+/* valid values for rcmState */
+#define NV208F_CTRL_FB_CTRL_GPU_CACHE_RCM_STATE_DEFAULT (0x00000000)
+#define NV208F_CTRL_FB_CTRL_GPU_CACHE_RCM_STATE_FULL (0x00000001)
+#define NV208F_CTRL_FB_CTRL_GPU_CACHE_RCM_STATE_REDUCED (0x00000002)
+#define NV208F_CTRL_FB_CTRL_GPU_CACHE_RCM_STATE_ZERO_CACHE (0x00000003)
+
+/* valid values for vgaCacheMode */
+#define NV208F_CTRL_FB_CTRL_GPU_CACHE_VGA_MODE_DEFAULT (0x00000000)
+#define NV208F_CTRL_FB_CTRL_GPU_CACHE_VGA_MODE_ENABLED (0x00000001)
+#define NV208F_CTRL_FB_CTRL_GPU_CACHE_VGA_MODE_DISABLED (0x00000002)
+
+/* valid values for cacheReset */
+#define NV208F_CTRL_FB_CTRL_GPU_CACHE_CACHE_RESET_DEFAULT (0x00000000)
+#define NV208F_CTRL_FB_CTRL_GPU_CACHE_CACHE_RESET_RESET (0x00000001)
+
+/* valid fields and values for flags */
+#define NV208F_CTRL_FB_CTRL_GPU_CACHE_FLAGS_MODE 1:0
+#define NV208F_CTRL_FB_CTRL_GPU_CACHE_FLAGS_MODE_DEFAULT (0x00000000)
+#define NV208F_CTRL_FB_CTRL_GPU_CACHE_FLAGS_MODE_RM (0x00000001)
+#define NV208F_CTRL_FB_CTRL_GPU_CACHE_FLAGS_MODE_PMU (0x00000002)
+
+/* valid values for bypassMode */
+#define NV208F_CTRL_FB_CTRL_GPU_CACHE_BYPASS_MODE_DEFAULT (0x00000000)
+#define NV208F_CTRL_FB_CTRL_GPU_CACHE_BYPASS_MODE_DISABLED (0x00000001)
+#define NV208F_CTRL_FB_CTRL_GPU_CACHE_BYPASS_MODE_ENABLED (0x00000002)
+
+
+
+/*
+ * NV208F_CTRL_CMD_FB_SET_STATE
+ *
+ * This command is used to put fb engine in a state requested by the caller.
+ *
+ * state
+ * This parameter specifies the desired engine state:
+ * NV208F_CTRL_FB_SET_STATE_STOPPED
+ * This value stops/halts the fb engine.
+ * NV208F_CTRL_FB_SET_STATE_RESTART
+ * This value restarts fb from a stopped state.
+ *
+ * Possible status values returned are:
+ * NV_OK
+ * NV_ERR_INVALID_STATE
+ * NV_ERR_INVALID_ARGUMENT
+ */
+#define NV208F_CTRL_CMD_FB_SET_STATE (0x208f0508) /* finn: Evaluated from "(FINN_NV20_SUBDEVICE_DIAG_FB_INTERFACE_ID << 8) | NV208F_CTRL_FB_SET_STATE_PARAMS_MESSAGE_ID" */
+
+#define NV208F_CTRL_FB_SET_STATE_PARAMS_MESSAGE_ID (0x8U)
+
+typedef struct NV208F_CTRL_FB_SET_STATE_PARAMS {
+ NvU32 state;
+} NV208F_CTRL_FB_SET_STATE_PARAMS;
+
+/* valid values for state */
+#define NV208F_CTRL_FB_SET_STATE_STOPPED (0x00000000)
+#define NV208F_CTRL_FB_SET_STATE_RESTART (0x00000001)
+
+/*
+ * NV208F_CTRL_CMD_GPU_ECC_SCRUB_DIAG
+ *
+ * This command reads all the settings internal to scrubbing (both asynchronous
+ * and synchronous.
+ *
+ * Currently implemented: FB offset scrubber has completed, FB offset that scrubber
+ * is completing to, whether or not asynchronous scrubbing is enabled.
+ *
+ * fbOffsetCompleted
+ * This is the offset into FB that the scrubber has completed up to at the
+ * time this function is invoked. Note that the scrubber is top-down. Therefore
+ * the memory that remains unscrubbed is from 0x0 to fbOffsetCompleted.
+ *
+ * fbEndOffset
+ * This is the offset of the base of the last block that ECC asynchronous
+ * scrubber has been tasked to scrub.
+ *
+ * bAsyncScru bDisabled
+ * This is NV_TRUE if asynchronous scrubbing is disabled and NV_FALSE if
+ * asynchronous scrubbing is enabled.
+ *
+ * Possible status return values are:
+ * NV_OK
+ * NV_ERR_NOT_SUPPORTED
+ */
+#define NV208F_CTRL_CMD_FB_ECC_SCRUB_DIAG (0x208f0509) /* finn: Evaluated from "(FINN_NV20_SUBDEVICE_DIAG_FB_INTERFACE_ID << 8) | NV208F_CTRL_CMD_FB_ECC_SCRUB_DIAG_PARAMS_MESSAGE_ID" */
+
+#define NV208F_CTRL_CMD_FB_ECC_SCRUB_DIAG_PARAMS_MESSAGE_ID (0x9U)
+
+typedef struct NV208F_CTRL_CMD_FB_ECC_SCRUB_DIAG_PARAMS {
+ NV_DECLARE_ALIGNED(NvU64 fbOffsetCompleted, 8);
+ NV_DECLARE_ALIGNED(NvU64 fbEndOffset, 8);
+ NvBool bAsyncScrubDisabled;
+} NV208F_CTRL_CMD_FB_ECC_SCRUB_DIAG_PARAMS;
+
+/*
+ * NV208F_CTRL_CMD_GPU_ECC_ASYNCH_SCRUB_REGION
+ *
+ * This command launches the ECC scrubber in asynchronous mode. The scrubber, as
+ * in normal operation, will continue to operate until all of FB (excluding
+ * dedicated system memory) has been scrubbed. Like usual operation, scrubbing is
+ * only done on silicon.
+ *
+ * Possible status return values are:
+ * NV_OK
+ * NV_ERR_NOT_SUPPORTED
+ */
+#define NV208F_CTRL_CMD_FB_ECC_ASYNC_SCRUB_REGION (0x208f050a) /* finn: Evaluated from "(FINN_NV20_SUBDEVICE_DIAG_FB_INTERFACE_ID << 8) | NV208F_CTRL_CMD_FB_ECC_ASYNC_SCRUB_REGION_PARAMS_MESSAGE_ID" */
+
+#define NV208F_CTRL_CMD_FB_ECC_ASYNC_SCRUB_REGION_PARAMS_MESSAGE_ID (0xAU)
+
+typedef struct NV208F_CTRL_CMD_FB_ECC_ASYNC_SCRUB_REGION_PARAMS {
+ NV_DECLARE_ALIGNED(NvU64 startBlock, 8);
+ NV_DECLARE_ALIGNED(NvU64 endBlock, 8);
+} NV208F_CTRL_CMD_FB_ECC_ASYNC_SCRUB_REGION_PARAMS;
+
+/*
+ * NV208F_CTRL_CMD_GPU_ECC_ERROR_INFO
+ * This is a structure that is defined here for diag/debug purposes in mods.
+ * It is used to return the error information as part of the callback to
+ * kernel clients registering for SBE/DBE callbacks.
+ */
+
+typedef struct NV208F_CTRL_CMD_FB_ECC_ERROR_INFO {
+ NvU32 row;
+ NvU32 bank;
+ NvU32 col;
+ NvU32 extBank;
+ NvU32 xbarAddress;
+ NV_DECLARE_ALIGNED(NvU64 physAddress, 8);
+} NV208F_CTRL_CMD_FB_ECC_ERROR_INFO;
+
+
+#define NV208F_CTRL_CMD_FB_ECC_GET_FORWARD_MAP_ADDRESS (0x208f050c) /* finn: Evaluated from "(FINN_NV20_SUBDEVICE_DIAG_FB_INTERFACE_ID << 8) | NV208F_CTRL_CMD_FB_ECC_GET_FORWARD_MAP_ADDRESS_PARAMS_MESSAGE_ID" */
+
+#define NV208F_CTRL_CMD_FB_ECC_GET_FORWARD_MAP_ADDRESS_PARAMS_MESSAGE_ID (0xCU)
+
+typedef struct NV208F_CTRL_CMD_FB_ECC_GET_FORWARD_MAP_ADDRESS_PARAMS {
+ NV_DECLARE_ALIGNED(NvU64 pAddr, 8);
+ NvU32 row;
+ NvU32 bank;
+ NvU32 col;
+ NvU32 extBank;
+ NvU32 rank;
+ NvU32 pseudoChannel;
+ NvU32 physicalSublocation;
+ NvU32 physicalPartition;
+ NvU32 logicalSublocation;
+ NvU32 logicalPartition;
+ NvU32 writeKillPtr0;
+ NvU32 injectionAddr;
+ NvU32 injectionAddrExt;
+ NvU32 rbcAddress;
+ NvU32 rbcAddressExt;
+ NvU32 rbcAddressExt2;
+ NvU32 eccCol;
+} NV208F_CTRL_CMD_FB_ECC_GET_FORWARD_MAP_ADDRESS_PARAMS;
+
+/*
+ * NV208F_CTRL_CMD_FB_ECC_SET_KILL_PTR
+ *
+ * This command sets the kill pointer for the specified DRAM address. If
+ * the kill pointer is set to NV208F_CTRL_FB_ERROR_TYPE_CORRECTABLE
+ * or NV208F_CTRL_FB_ERROR_TYPE_UNCORRECTABLE, accesses to the specified
+ * address will result in ECC errors until all kill pointers are unset
+ * using NV208F_CTRL_FB_ERROR_TYPE_NONE.
+ *
+ * Only one kill pointer can be set at a time. Setting a kill pointer will
+ * clear all currently set kill pointers and set the new kill pointer.
+ * Calling NV208F_CTRL_FB_ERROR_TYPE_NONE simply clears all currently set
+ * kill pointers.
+ *
+ * errorType
+ * The type of kill pointer to set. NV208F_CTRL_FB_ERROR_TYPE_CORRECTABLE
+ * will set a single kill pointer resulting in a correctable error.
+ * NV208F_CTRL_FB_ERROR_TYPE_UNCORRECTABLE will set both kill pointers
+ * resulting in an uncorrectable error. NV208F_CTRL_FB_ERROR_TYPE_NONE
+ * will clear all kill pointers, which stops the associated addresses
+ * from generating ECC errors if NV208F_CTRL_FB_ERROR_TYPE_CORRECTABLE
+ * or NV208F_CTRL_FB_ERROR_TYPE_UNCORRECTABLE was previously set.
+ * Only one kill pointer can be set at a time and setting a new
+ * kill pointer will clear the previous kill pointer.
+ *
+ * address
+ * The physical DRAM address to be targeted by the kill pointer
+ *
+ * bProdInjection
+ * Whether the kill pointer is set through the production injection flow or not
+ */
+#define NV208F_CTRL_CMD_FB_ECC_SET_KILL_PTR (0x208f050e) /* finn: Evaluated from "(FINN_NV20_SUBDEVICE_DIAG_FB_INTERFACE_ID << 8) | NV208F_CTRL_FB_ECC_SET_KILL_PTR_PARAMS_MESSAGE_ID" */
+
+typedef enum NV208F_CTRL_FB_ERROR_TYPE {
+ NV208F_CTRL_FB_ERROR_TYPE_CORRECTABLE = 0,
+ NV208F_CTRL_FB_ERROR_TYPE_UNCORRECTABLE = 1,
+ NV208F_CTRL_FB_ERROR_TYPE_NONE = 2,
+} NV208F_CTRL_FB_ERROR_TYPE;
+
+#define NV208F_CTRL_FB_ECC_SET_KILL_PTR_PARAMS_MESSAGE_ID (0xEU)
+
+typedef struct NV208F_CTRL_FB_ECC_SET_KILL_PTR_PARAMS {
+ NV208F_CTRL_FB_ERROR_TYPE errorType;
+ NV_DECLARE_ALIGNED(NvU64 address, 8);
+ NvBool bProdInjection;
+} NV208F_CTRL_FB_ECC_SET_KILL_PTR_PARAMS;
+
+
+
+/*
+ * NV208F_CTRL_CMD_FB_INJECT_LTC_ECC_ERROR
+ *
+ * This API allows a client to inject ECC errors in the L2.
+ *
+ * ltc:
+ * The physical LTC number to inject the error into.
+ * slice:
+ * THe physical slice number within the LTC to inject the error into.
+ * locationMask
+ * LTC location subtype(s) where error is to be injected. (Valid on Ampere and later)
+ * errorType
+ * Type of error to inject
+ * NV208F_CTRL_FB_ERROR_TYPE_CORRECTABLE for SBE.
+ * NV208F_CTRL_FB_ERROR_TYPE_UNCORRECTABLE for DBE.
+ *
+ */
+#define NV208F_CTRL_CMD_FB_INJECT_LTC_ECC_ERROR (0x208f050f) /* finn: Evaluated from "(FINN_NV20_SUBDEVICE_DIAG_FB_INTERFACE_ID << 8) | NV208F_CTRL_FB_INJECT_LTC_ECC_ERROR_PARAMS_MESSAGE_ID" */
+
+#define NV208F_CTRL_FB_INJECT_LTC_ECC_ERROR_PARAMS_MESSAGE_ID (0xFU)
+
+typedef struct NV208F_CTRL_FB_INJECT_LTC_ECC_ERROR_PARAMS {
+ NvU8 ltc;
+ NvU8 slice;
+ NvU8 locationMask;
+ NV208F_CTRL_FB_ERROR_TYPE errorType;
+} NV208F_CTRL_FB_INJECT_LTC_ECC_ERROR_PARAMS;
+
+/*
+ * NV208F_CTRL_CMD_FB_ECC_INJECTION_SUPPORTED
+ *
+ * Reports if error injection is supported for a given HW unit
+ *
+ * location [in]:
+ * The ECC protected unit for which ECC injection support is being checked.
+ * The location type is defined by NV208F_CTRL_FB_ECC_INJECTION_SUPPORTED_LOC.
+ *
+ * bCorrectableSupported [out]:
+ * Boolean value that shows if correcatable errors can be injected.
+ *
+ * bUncorrectableSupported [out]:
+ * Boolean value that shows if uncorrecatable errors can be injected.
+ *
+ * Return values:
+ * NV_OK on success
+ * NV_ERR_INVALID_ARGUMENT if the requested location is invalid.
+ * NV_ERR_INSUFFICIENT_PERMISSIONS if priv write not enabled.
+ * NV_ERR_NOT_SUPPORTED otherwise
+ *
+ *
+ */
+#define NV208F_CTRL_CMD_FB_ECC_INJECTION_SUPPORTED (0x208f0510) /* finn: Evaluated from "(FINN_NV20_SUBDEVICE_DIAG_FB_INTERFACE_ID << 8) | NV208F_CTRL_FB_ECC_INJECTION_SUPPORTED_PARAMS_MESSAGE_ID" */
+
+#define NV208F_CTRL_FB_ECC_INJECTION_SUPPORTED_PARAMS_MESSAGE_ID (0x10U)
+
+typedef struct NV208F_CTRL_FB_ECC_INJECTION_SUPPORTED_PARAMS {
+ NvU8 location;
+ NvBool bCorrectableSupported;
+ NvBool bUncorrectableSupported;
+} NV208F_CTRL_FB_ECC_INJECTION_SUPPORTED_PARAMS;
+
+#define NV208F_CTRL_FB_ECC_INJECTION_SUPPORTED_LOC 1:0
+#define NV208F_CTRL_FB_ECC_INJECTION_SUPPORTED_LOC_LTC (0x00000000)
+#define NV208F_CTRL_FB_ECC_INJECTION_SUPPORTED_LOC_DRAM (0x00000001)
+#define NV208F_CTRL_FB_ECC_INJECTION_SUPPORTED_LOC_LRC (0x00000002)
+#define NV208F_CTRL_FB_ECC_INJECTION_SUPPORTED_LOC_SYSL2 (0x00000003)
+
+/*
+ * NV208F_CTRL_CMD_FB_ECC_SET_WRITE_KILL
+ *
+ * This command sets the write kill for the specified DRAM address. If set,
+ * writes to the specified address won't update the ECC checkbits. When unset,
+ * writes the specified address will update the ECC checkbits.
+ *
+ * Only one write kill register can be set at a time. Setting a write kill
+ * will clear all currently set write kills and set the new write kill.
+ * Calling this ctrl call with setWriteKill = false simply clears all currently
+ * set write kills.
+ *
+ * setWriteKill
+ * When true, the ECC checkbits for the specified address won't update on
+ * writes. When false, the ECC checkbits for the specified address will
+ * revert to normal behavior and update on all writes.
+ *
+ * address
+ * The physical DRAM address to be targeted by the write kill
+ *
+ * bProdInjection
+ * Whether the write kill is set through the production injection flow or not
+ */
+#define NV208F_CTRL_CMD_FB_ECC_SET_WRITE_KILL (0x208f0511) /* finn: Evaluated from "(FINN_NV20_SUBDEVICE_DIAG_FB_INTERFACE_ID << 8) | NV208F_CTRL_FB_ECC_SET_WRITE_KILL_PARAMS_MESSAGE_ID" */
+
+#define NV208F_CTRL_FB_ECC_SET_WRITE_KILL_PARAMS_MESSAGE_ID (0x11U)
+
+typedef struct NV208F_CTRL_FB_ECC_SET_WRITE_KILL_PARAMS {
+ NvBool setWriteKill;
+ NvBool bProdInjection;
+ NV_DECLARE_ALIGNED(NvU64 address, 8);
+} NV208F_CTRL_FB_ECC_SET_WRITE_KILL_PARAMS;
+
+typedef struct NV208F_CTRL_FB_REMAPPING_RBC_ADDRESS_INFO {
+ NvU32 bank;
+ NvU32 stackId;
+ NvU32 row;
+ NvU32 partition;
+ NvU32 sublocation;
+ NvU32 pseudoChannel;
+} NV208F_CTRL_FB_REMAPPING_RBC_ADDRESS_INFO;
+
+#define NV208F_CTRL_FB_REMAP_ADDRESS_TYPE_PHYSICAL 0x0
+#define NV208F_CTRL_FB_REMAP_ADDRESS_TYPE_RBC 0x1
+
+/*
+ * NV208F_CTRL_FB_REMAPPING_ADDRESS_INFO
+ *
+ * source
+ * The reason for retirement. Valid values for this parameter are
+ * from NV2080_CTRL_FB_REMAPPED_ROW_SOURCE_*
+ * status
+ * Reason for row remapping failure. Valid values are:
+ * NV208F_CTRL_FB_REMAP_ROW_STATUS_OK
+ * No error
+ * NV208F_CTRL_FB_REMAP_ROW_STATUS_REMAPPING_PENDING
+ * The remapping is pending
+ * NV208F_CTRL_FB_REMAP_ROW_STATUS_TABLE_FULL
+ * Table full
+ * NV208F_CTRL_FB_REMAP_ROW_STATUS_ALREADY_REMAPPED
+ * Attempting to remap a reserved row
+ * NV208F_CTRL_FB_REMAP_ROW_STATUS_INTERNAL_ERROR
+ * Some other RM failure
+ * addressType
+ * Type of address passed. Valid values are:
+ * NV208F_CTRL_FB_REMAP_ADDRESS_TYPE_PHYSICAL
+ * The specified address is physical address.
+ * NV208F_CTRL_FB_REMAP_ADDRESS_TYPE_RBC
+ * The specified address is DRAM Row Bank Column address.
+ * address
+ * Union of physicalAddress and rbcAddress. Set the appropriate one based on the address type.
+ */
+typedef struct NV208F_CTRL_FB_REMAPPING_ADDRESS_INFO {
+ NvU8 source;
+ NvU32 status;
+ NvU8 addressType;
+ union {
+ NV_DECLARE_ALIGNED(NvU64 physicalAddress, 8);
+ NV208F_CTRL_FB_REMAPPING_RBC_ADDRESS_INFO rbcAddress;
+ } address;
+} NV208F_CTRL_FB_REMAPPING_ADDRESS_INFO;
+
+/* valid values for status */
+#define NV208F_CTRL_FB_REMAP_STATUS_OK (0x00000000)
+#define NV208F_CTRL_FB_REMAP_STATUS_REMAPPING_PENDING (0x00000001)
+#define NV208F_CTRL_FB_REMAP_STATUS_TABLE_FULL (0x00000002)
+#define NV208F_CTRL_FB_REMAP_STATUS_ALREADY_REMAPPED (0x00000003)
+#define NV208F_CTRL_FB_REMAP_STATUS_INTERNAL_ERROR (0x00000004)
+#define NV208F_CTRL_FB_REMAP_STATUS_NO_SPARE (0x00000005)
+#define NV208F_CTRL_FB_REMAP_STATUS_INVALID_ARGUMENT (0x00000006)
+
+typedef NV208F_CTRL_FB_REMAPPING_ADDRESS_INFO NV208F_CTRL_FB_REMAPPING_ROW_ADDRESS_INFO;
+
+#define NV208F_CTRL_FB_REMAP_ROW_ADDRESS_TYPE_PHYSICAL NV208F_CTRL_FB_REMAP_ADDRESS_TYPE_PHYSICAL
+#define NV208F_CTRL_FB_REMAP_ROW_ADDRESS_TYPE_RBC NV208F_CTRL_FB_REMAP_ADDRESS_TYPE_RBC
+
+/* valid values for status */
+#define NV208F_CTRL_FB_REMAP_ROW_STATUS_OK NV208F_CTRL_FB_REMAP_STATUS_OK
+#define NV208F_CTRL_FB_REMAP_ROW_STATUS_REMAPPING_PENDING NV208F_CTRL_FB_REMAP_STATUS_REMAPPING_PENDING
+#define NV208F_CTRL_FB_REMAP_ROW_STATUS_TABLE_FULL NV208F_CTRL_FB_REMAP_STATUS_TABLE_FULL
+#define NV208F_CTRL_FB_REMAP_ROW_STATUS_ALREADY_REMAPPED NV208F_CTRL_FB_REMAP_STATUS_ALREADY_REMAPPED
+#define NV208F_CTRL_FB_REMAP_ROW_STATUS_INTERNAL_ERROR NV208F_CTRL_FB_REMAP_STATUS_INTERNAL_ERROR
+#define NV208F_CTRL_FB_REMAP_ROW_STATUS_NO_SPARE NV208F_CTRL_FB_REMAP_STATUS_NO_SPARE
+#define NV208F_CTRL_FB_REMAP_ROW_STATUS_INVALID_ARGUMENT NV208F_CTRL_FB_REMAP_STATUS_INVALID_ARGUMENT
+
+#define NV208F_CTRL_FB_REMAPPED_ROWS_MAX_ROWS (0x00000200)
+/*
+ * NV208F_CTRL_CMD_FB_REMAP_ROW
+ *
+ * This command will write entries to Inforom. During init the entries will be
+ * read and used to remap a row.
+ *
+ * addressList
+ * This input parameter is an array of NV208F_CTRL_FB_REMAPPING_ADDRESS_INFO
+ * structures containing information used for row remapping. Valid entries
+ * are adjacent
+ * validEntries
+ * This input parameter specifies the number of valid entries in the
+ * address array
+ * numEntriesAdded
+ * This output parameter specifies how many validEntries were successfully
+ * added to the Inforom
+ *
+ * Possible status values returned are:
+ * NV_OK
+ * NV_ERR_INVALID_ARGUMENT
+ */
+#define NV208F_CTRL_CMD_FB_REMAP_ROW (0x208f0512) /* finn: Evaluated from "(FINN_NV20_SUBDEVICE_DIAG_FB_INTERFACE_ID << 8) | NV208F_CTRL_FB_REMAP_ROW_PARAMS_MESSAGE_ID" */
+
+#define NV208F_CTRL_FB_REMAP_ROW_PARAMS_MESSAGE_ID (0x12U)
+
+typedef struct NV208F_CTRL_FB_REMAP_ROW_PARAMS {
+ NV_DECLARE_ALIGNED(NV208F_CTRL_FB_REMAPPING_ROW_ADDRESS_INFO addressList[NV208F_CTRL_FB_REMAPPED_ROWS_MAX_ROWS], 8);
+ NvU32 validEntries;
+ NvU32 numEntriesAdded;
+} NV208F_CTRL_FB_REMAP_ROW_PARAMS;
+
+
+#define NV208F_CTRL_CMD_FB_REVERSE_MAP_RBC_ADDR_TO_PA (0x208f0513) /* finn: Evaluated from "(FINN_NV20_SUBDEVICE_DIAG_FB_INTERFACE_ID << 8) | NV208F_CTRL_FB_REVERSE_MAP_RBC_ADDR_TO_PA_PARAMS_MESSAGE_ID" */
+
+#define NV208F_CTRL_FB_REVERSE_MAP_RBC_ADDR_TO_PA_PARAMS_MESSAGE_ID (0x13U)
+
+typedef struct NV208F_CTRL_FB_REVERSE_MAP_RBC_ADDR_TO_PA_PARAMS {
+ NV_DECLARE_ALIGNED(NvU64 address, 8);
+ NvU32 rbcAddress;
+ NvU32 rbcAddressExt;
+ NvU32 rbcAddressExt2;
+ NvU32 partition;
+ NvU32 sublocation;
+} NV208F_CTRL_FB_REVERSE_MAP_RBC_ADDR_TO_PA_PARAMS;
+
+/**
+ * NV208F_CTRL_CMD_FB_TOGGLE_PHYSICAL_ADDRESS_ECC_ON_OFF
+ *
+ * This command will convert a physical address when ECC is on to the physical
+ * address when ECC is off or vice versa
+ *
+ * @params[in] NvU64 inputAddress
+ * Input physical address
+ *
+ * @params[in] NvBool eccOn
+ * Whether or not input physical address is with ECC on or off
+ *
+ * @params[out] NvU64 outputAddress
+ * Output physical address
+ */
+#define NV208F_CTRL_CMD_FB_TOGGLE_PHYSICAL_ADDRESS_ECC_ON_OFF (0x208f0514) /* finn: Evaluated from "(FINN_NV20_SUBDEVICE_DIAG_FB_INTERFACE_ID << 8) | NV208F_CTRL_FB_TOGGLE_PHYSICAL_ADDRESS_ECC_ON_OFF_PARAMS_MESSAGE_ID" */
+
+#define NV208F_CTRL_FB_TOGGLE_PHYSICAL_ADDRESS_ECC_ON_OFF_PARAMS_MESSAGE_ID (0x14U)
+
+typedef struct NV208F_CTRL_FB_TOGGLE_PHYSICAL_ADDRESS_ECC_ON_OFF_PARAMS {
+ NV_DECLARE_ALIGNED(NvU64 inputAddress, 8);
+ NvBool eccOn;
+ NV_DECLARE_ALIGNED(NvU64 outputAddress, 8);
+} NV208F_CTRL_FB_TOGGLE_PHYSICAL_ADDRESS_ECC_ON_OFF_PARAMS;
+
+/*
+ * NV208F_CTRL_CMD_FB_CLEAR_REMAPPED_ROWS
+ *
+ * This command clears remapping entries from the Inforom's row remapping table.
+ *
+ * sourceMask
+ * This is a bit mask of NV2080_CTRL_FB_REMAPPED_ROW_SOURCE. Rows
+ * remapped from the specified sources will be cleared/removed from the
+ * Inforom RRL object entries list.
+ *
+ * bForcePurge
+ * This flag will force purge the RRL object and associated data structures
+ *
+ * Possbile status values returned are:
+ * NV_OK
+ * NV_ERR_NOT_SUPPORTED
+ */
+#define NV208F_CTRL_CMD_FB_CLEAR_REMAPPED_ROWS (0x208f0515) /* finn: Evaluated from "(FINN_NV20_SUBDEVICE_DIAG_FB_INTERFACE_ID << 8) | NV208F_CTRL_FB_CLEAR_REMAPPED_ROWS_PARAMS_MESSAGE_ID" */
+
+#define NV208F_CTRL_FB_CLEAR_REMAPPED_ROWS_PARAMS_MESSAGE_ID (0x15U)
+
+typedef struct NV208F_CTRL_FB_CLEAR_REMAPPED_ROWS_PARAMS {
+ NvU32 sourceMask;
+ NvBool bForcePurge;
+} NV208F_CTRL_FB_CLEAR_REMAPPED_ROWS_PARAMS;
+
+
+
+/*
+ * NV208F_CTRL_CMD_FB_INJECT_LRC_ECC_ERROR
+ *
+ * This API allows a client to inject ECC errors in the LRC.
+ *
+ * lrcc:
+ * The physical LRCC number to inject the error into.
+ * lrc:
+ * THe physical LRC number within the LRCC to inject the error into.
+ * locationMask
+ * LTC location subtype(s) where error is to be injected. (Valid on Ampere and later)
+ * errorType
+ * Type of error to inject
+ * NV208F_CTRL_FB_ERROR_TYPE_CORRECTABLE for SBE.
+ * NV208F_CTRL_FB_ERROR_TYPE_UNCORRECTABLE for DBE.
+ *
+ */
+#define NV208F_CTRL_CMD_FB_INJECT_LRC_ECC_ERROR (0x208f0516) /* finn: Evaluated from "(FINN_NV20_SUBDEVICE_DIAG_FB_INTERFACE_ID << 8) | NV208F_CTRL_FB_INJECT_LRC_ECC_ERROR_PARAMS_MESSAGE_ID" */
+
+#define NV208F_CTRL_FB_INJECT_LRC_ECC_ERROR_PARAMS_MESSAGE_ID (0x16U)
+
+typedef struct NV208F_CTRL_FB_INJECT_LRC_ECC_ERROR_PARAMS {
+ NvU8 lrcc;
+ NvU8 lrc;
+ NvU8 locationMask;
+ NV208F_CTRL_FB_ERROR_TYPE errorType;
+} NV208F_CTRL_FB_INJECT_LRC_ECC_ERROR_PARAMS;
+
+/*
+ * NV208F_CTRL_CMD_FB_INJECT_SYSLTC_ECC_ERROR
+ *
+ * This API allows a client to inject ECC errors in the SYSLTC.
+ *
+ * group:
+ * The physical group number to inject the error into.
+ * instance:
+ * The physical instance number within the group to inject the error into.
+ * instance:
+ * The physical slice number within the instance to inject the error into.
+ * locationMask
+ * SYSLTC location subtype(s) where error is to be injected. Same as LTC.
+ * errorType
+ * Type of error to inject
+ * NV208F_CTRL_FB_ERROR_TYPE_CORRECTABLE for SBE.
+ * NV208F_CTRL_FB_ERROR_TYPE_UNCORRECTABLE for DBE.
+ *
+ */
+#define NV208F_CTRL_CMD_FB_INJECT_SYSLTC_ECC_ERROR (0x208f0517) /* finn: Evaluated from "(FINN_NV20_SUBDEVICE_DIAG_FB_INTERFACE_ID << 8) | NV208F_CTRL_FB_INJECT_SYSLTC_ECC_ERROR_PARAMS_MESSAGE_ID" */
+
+#define NV208F_CTRL_FB_INJECT_SYSLTC_ECC_ERROR_PARAMS_MESSAGE_ID (0x17U)
+
+typedef struct NV208F_CTRL_FB_INJECT_SYSLTC_ECC_ERROR_PARAMS {
+ NvU8 group;
+ NvU8 instance;
+ NvU8 slice;
+ NvU8 locationMask;
+ NV208F_CTRL_FB_ERROR_TYPE errorType;
+} NV208F_CTRL_FB_INJECT_SYSLTC_ECC_ERROR_PARAMS;
+
+/*
+ * NV208F_CTRL_CMD_FB_GET_FBPA_PAC_MASKS
+ *
+ * This API returns the PAC mask for an FBPA. The format is an array where the
+ * index is the physical FBPA value and the value at the index is the channel
+ * mask at the corresponding FBPA. At this time there can only be max 4
+ * channels per FBPA. A floorswept FBPA will have a value of 0x0, vs a
+ * non-floorswept FBPA with no floorswept channels will have a value of 0xf
+ *
+ */
+#define NV208F_CTRL_FB_GET_FBPA_PAC_MASKS_MAX_FBPAS 64
+
+#define NV208F_CTRL_CMD_FB_GET_FBPA_PAC_MASKS (0x208f0518) /* finn: Evaluated from "(FINN_NV20_SUBDEVICE_DIAG_FB_INTERFACE_ID << 8) | NV208F_CTRL_FB_GET_FBPA_PAC_MASKS_PARAMS_MESSAGE_ID" */
+
+#define NV208F_CTRL_FB_GET_FBPA_PAC_MASKS_PARAMS_MESSAGE_ID (0x18U)
+
+typedef struct NV208F_CTRL_FB_GET_FBPA_PAC_MASKS_PARAMS {
+ NvU8 fbpas[NV208F_CTRL_FB_GET_FBPA_PAC_MASKS_MAX_FBPAS];
+} NV208F_CTRL_FB_GET_FBPA_PAC_MASKS_PARAMS;
+
+/*
+ * NV208F_CTRL_CMD_FB_CONVERT_SUBLOCATION
+ *
+ * This API converts either the given sublocation from physical to logical or vice-versa
+ *
+ * conversionType:
+ * See NV208F_CTRL_FB_SUBLOCATION_CONVERSION_TYPE
+ * fbpa:
+ * The physical fbpa the sublocation resides
+ * input:
+ * Input sublocation
+ * output:
+ * Output sublocation
+ */
+#define NV208F_CTRL_CMD_FB_CONVERT_SUBLOCATION (0x208f0519) /* finn: Evaluated from "(FINN_NV20_SUBDEVICE_DIAG_FB_INTERFACE_ID << 8) | NV208F_CTRL_FB_CONVERT_SUBLOCATION_PARAMS_MESSAGE_ID" */
+
+#define NV208F_CTRL_FB_CONVERT_SUBLOCATION_PARAMS_MESSAGE_ID (0x19U)
+
+typedef struct NV208F_CTRL_FB_CONVERT_SUBLOCATION_PARAMS {
+ NvU32 conversionType;
+ NvU32 fbpa;
+ NvU32 input;
+ NvU32 output;
+} NV208F_CTRL_FB_CONVERT_SUBLOCATION_PARAMS;
+
+#define NV208F_CTRL_FB_SUBLOCATION_CONVERSION_TYPE_LOGICAL_TO_PHYSICAL (0x00000000U)
+#define NV208F_CTRL_FB_SUBLOCATION_CONVERSION_TYPE_PHYSICAL_TO_LOGICAL (0x00000001U)
+
+#define NV208F_CTRL_FB_REMAPPED_BANKS_MAX_BANKS (0x00000200)
+
+typedef NV208F_CTRL_FB_REMAPPING_ADDRESS_INFO NV208F_CTRL_FB_REMAPPING_BANK_ADDRESS_INFO;
+
+#define NV208F_CTRL_FB_REMAP_BANK_ADDRESS_TYPE_PHYSICAL NV208F_CTRL_FB_REMAP_ADDRESS_TYPE_PHYSICAL
+#define NV208F_CTRL_FB_REMAP_BANK_ADDRESS_TYPE_RBC NV208F_CTRL_FB_REMAP_ADDRESS_TYPE_RBC
+
+/* valid values for status */
+#define NV208F_CTRL_FB_REMAP_BANK_STATUS_OK NV208F_CTRL_FB_REMAP_STATUS_OK
+#define NV208F_CTRL_FB_REMAP_BANK_STATUS_REMAPPING_PENDING NV208F_CTRL_FB_REMAP_STATUS_REMAPPING_PENDING
+#define NV208F_CTRL_FB_REMAP_BANK_STATUS_TABLE_FULL NV208F_CTRL_FB_REMAP_STATUS_TABLE_FULL
+#define NV208F_CTRL_FB_REMAP_BANK_STATUS_NO_SPARE NV208F_CTRL_FB_REMAP_STATUS_NO_SPARE
+#define NV208F_CTRL_FB_REMAP_BANK_STATUS_INTERNAL_ERROR NV208F_CTRL_FB_REMAP_STATUS_INTERNAL_ERROR
+#define NV208F_CTRL_FB_REMAP_BANK_STATUS_INVALID_ARGUMENT NV208F_CTRL_FB_REMAP_STATUS_INVALID_ARGUMENT
+
+/*
+ * NV208F_CTRL_CMD_FB_REMAP_BANK
+ *
+ * This command will write entries to Inforom. During init the entries will be
+ * read and used to remap banks.
+ *
+ * addressList
+ * This input parameter is an array of NV208F_CTRL_FB_REMAPPING_BANK_ADDRESS_INFO
+ * structures containing information used for row remapping. Valid entries
+ * are adjacent. The row field is ignored if RBC address info is given.
+ * validEntries
+ * This input parameter specifies the number of valid entries in the
+ * address array
+ * numEntriesAdded
+ * This output parameter specifies how many validEntries were successfully
+ * added to the Inforom
+ *
+ * Possible status values returned are:
+ * NV_OK
+ * NV_ERR_INVALID_ARGUMENT
+ */
+#define NV208F_CTRL_CMD_FB_REMAP_BANK (0x208f051a) /* finn: Evaluated from "(FINN_NV20_SUBDEVICE_DIAG_FB_INTERFACE_ID << 8) | NV208F_CTRL_FB_REMAP_BANK_PARAMS_MESSAGE_ID" */
+
+#define NV208F_CTRL_FB_REMAP_BANK_PARAMS_MESSAGE_ID (0x1aU)
+
+typedef struct NV208F_CTRL_FB_REMAP_BANK_PARAMS {
+ NV_DECLARE_ALIGNED(NV208F_CTRL_FB_REMAPPING_BANK_ADDRESS_INFO addressList[NV208F_CTRL_FB_REMAPPED_BANKS_MAX_BANKS], 8);
+ NvU32 validEntries;
+ NvU32 numEntriesAdded;
+} NV208F_CTRL_FB_REMAP_BANK_PARAMS;
+
+/*
+ * NV208F_CTRL_CMD_FB_CLEAR_REMAPPED_BANKS
+ *
+ * This command clears remapping entries from the Inforom's bank remapping table.
+ *
+ * sourceMask
+ * This is a bit mask of NV2080_CTRL_FB_REMAPPED_BANK_SOURCE. Rows
+ * remapped from the specified sources will be cleared/removed from the
+ * Inforom RRL object entries list.
+ *
+ * bForcePurge
+ * This flag will force purge the BRL object and associated data structures
+ *
+ * Possbile status values returned are:
+ * NV_OK
+ * NV_ERR_NOT_SUPPORTED
+ */
+#define NV208F_CTRL_CMD_FB_CLEAR_REMAPPED_BANKS (0x208f051b) /* finn: Evaluated from "(FINN_NV20_SUBDEVICE_DIAG_FB_INTERFACE_ID << 8) | NV208F_CTRL_FB_CLEAR_REMAPPED_BANKS_PARAMS_MESSAGE_ID" */
+
+#define NV208F_CTRL_FB_CLEAR_REMAPPED_BANKS_PARAMS_MESSAGE_ID (0x1bU)
+
+typedef struct NV208F_CTRL_FB_CLEAR_REMAPPED_BANKS_PARAMS {
+ NvU32 sourceMask;
+ NvBool bForcePurge;
+} NV208F_CTRL_FB_CLEAR_REMAPPED_BANKS_PARAMS;
+
+/*
+ * NV208F_CTRL_CMD_FB_SET_ROW_REMAP_FAILURE_FLAG
+ *
+ * This command sets the status of row remap failure flag to the passed value.
+ *
+ * value
+ * The value to set for row remap failure flag
+ *
+ * Possible status values returned are:
+ * NV_OK
+ * NV_ERR_NOT_SUPPORTED
+ */
+#define NV208F_CTRL_CMD_FB_SET_ROW_REMAP_FAILURE_FLAG (0x208f051cU) /* finn: Evaluated from "(FINN_NV20_SUBDEVICE_DIAG_FB_INTERFACE_ID << 8) | NV208F_CTRL_FB_SET_ROW_REMAP_FAILURE_FLAG_PARAMS_MESSAGE_ID" */
+
+#define NV208F_CTRL_FB_SET_ROW_REMAP_FAILURE_FLAG_PARAMS_MESSAGE_ID (0x1cU)
+
+typedef struct NV208F_CTRL_FB_SET_ROW_REMAP_FAILURE_FLAG_PARAMS {
+ NvBool value;
+} NV208F_CTRL_FB_SET_ROW_REMAP_FAILURE_FLAG_PARAMS;
+
+/* _ctrl208ffb_h_ */