summaryrefslogtreecommitdiffstats
path: root/userspace/sdks/nv570/inc/ctrl/ctrlc637.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/ctrlc637.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/ctrlc637.h')
-rw-r--r--userspace/sdks/nv570/inc/ctrl/ctrlc637.h436
1 files changed, 436 insertions, 0 deletions
diff --git a/userspace/sdks/nv570/inc/ctrl/ctrlc637.h b/userspace/sdks/nv570/inc/ctrl/ctrlc637.h
new file mode 100644
index 0000000..fcb1dff
--- /dev/null
+++ b/userspace/sdks/nv570/inc/ctrl/ctrlc637.h
@@ -0,0 +1,436 @@
+/*
+ * SPDX-FileCopyrightText: Copyright (c) 2019-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/ctrlc637.finn
+//
+
+#include "nvlimits.h"
+#include "ctrl/ctrlxxxx.h"
+/* AMPERE_SMC_PARTITION_REF commands and parameters */
+
+#define NVC637_CTRL_CMD(cat,idx) NVXXXX_CTRL_CMD(0xC637, NVC637_CTRL_##cat, idx)
+
+/* Command categories (6bits) */
+#define NVC637_CTRL_RESERVED (0x00)
+#define NVC637_CTRL_EXEC_PARTITIONS (0x01)
+
+
+/*!
+ * NVC637_CTRL_CMD_NULL
+ *
+ * This command does nothing.
+ * This command does not take any parameters.
+ *
+ * Possible status values returned are:
+ * NV_OK
+ */
+#define NVC637_CTRL_CMD_NULL (0xc6370000) /* finn: Evaluated from "(FINN_AMPERE_SMC_PARTITION_REF_RESERVED_INTERFACE_ID << 8) | 0x0" */
+
+/*!
+ * NVC637_CTRL_EXEC_PARTITIONS_INFO
+ *
+ * This structure specifies resources in an execution partition
+ *
+ * gpcCount[IN/OUT]
+ * - Total Number of GPCs in this partition (including GFX Supported GPCs)
+ *
+ * gfxGpcCount[IN/OUT]
+ * - Number of GFX GPCs in this partition. This should be a subset of gpcs inlcuded in gpcCount
+ *
+ * VeidCount[OUT]
+ * - Number of VEIDs available in this partition.
+ *
+ * ceCount[IN/OUT]
+ * - Copy Engines in this partition
+ *
+ * nvEncCount[IN/OUT]
+ * - Encoder Engines in this partition
+ *
+ * nvDecCount[IN/OUT]
+ * - Decoder Engines in this partition
+ *
+ * nvJpgCount[IN/OUT]
+ * - Jpg Engines in this partition
+ *
+ * nvOfaCount[IN/OUT]
+ * - Ofa engines in this partition
+ *
+ * sharedEngFlag[IN/OUT]
+ * - Flags determining whether above engines are shared with other execution partitions
+ *
+ * veidStartOffset[OUT]
+ * - VEID start offset within GPU partition
+ *
+ * smCount[IN/OUT]
+ * - Number of active SMs in this partition
+ *
+ * spanStart[IN/OUT]
+ * - First slot in the span for an execution partition placement
+ *
+ * computeSize[IN/OUT]
+ * - Flag corresponding to the compute profile used
+ *
+ * execPartFlags[IN/OUT]
+ * - Bitmap of NVC637_CTRL_EXEC_PARTITIONS_FLAGS*
+ */
+typedef struct NVC637_CTRL_EXEC_PARTITIONS_INFO {
+ NvU32 gpcCount;
+ NvU32 gfxGpcCount;
+ NvU32 veidCount;
+ NvU32 ceCount;
+ NvU32 nvEncCount;
+ NvU32 nvDecCount;
+ NvU32 nvJpgCount;
+ NvU32 ofaCount;
+ NvU32 sharedEngFlag;
+ NvU32 veidStartOffset;
+ NvU32 smCount;
+ NvU32 spanStart;
+ NvU32 computeSize;
+ NvU32 execPartFlags;
+} NVC637_CTRL_EXEC_PARTITIONS_INFO;
+
+#define NVC637_CTRL_EXEC_PARTITIONS_SHARED_FLAG 31:0
+#define NVC637_CTRL_EXEC_PARTITIONS_SHARED_FLAG_NONE 0x0
+#define NVC637_CTRL_EXEC_PARTITIONS_SHARED_FLAG_CE NVBIT(0)
+#define NVC637_CTRL_EXEC_PARTITIONS_SHARED_FLAG_NVDEC NVBIT(1)
+#define NVC637_CTRL_EXEC_PARTITIONS_SHARED_FLAG_NVENC NVBIT(2)
+#define NVC637_CTRL_EXEC_PARTITIONS_SHARED_FLAG_OFA NVBIT(3)
+#define NVC637_CTRL_EXEC_PARTITIONS_SHARED_FLAG_NVJPG NVBIT(4)
+
+#define NVC637_CTRL_EXEC_PARTITIONS_FLAGS 31:0
+//
+// NVC637_CTRL_EXEC_PARTITIONS_FLAGS_OPTIMIZE
+// If set, RM will try to select partition HW resources giving better performance for a
+// specified usecase.
+// OPTIMIZE_FOR_MGPU:
+// optimize for an interface to communicate with other GPUs. This can give latency
+// reduction benefit to applications using multi-GPU communication.
+// OPTIMIZE_FOR_HOSTIF:
+// optimal config for a better Host interface and memory access performance.
+//
+// The flag makes sense only on GPUs with multiple compute dielets because one of the
+// dielets can be closer to MGPU communication interface (e.g. NVLINK). While HW compute
+// work scheduler on any dielet is capable of driving a computation work, selecting the
+// one closer to NVLINK will decrease latencies for NVLINK communications.
+// Default behavior (if flag is not provided) is for RM to select dielet closer to host
+// interface and memory, to reduce new work scheduling latency.
+// On a single dielet GPUs this flag has no effect.
+// Currently this flag is used by RM for Full compute instances only.
+//
+#define NVC637_CTRL_EXEC_PARTITIONS_FLAGS_OPTIMIZE 1:0
+#define NVC637_CTRL_EXEC_PARTITIONS_FLAGS_OPTIMIZE_FOR_HOSTIF (0x00000000)
+#define NVC637_CTRL_EXEC_PARTITIONS_FLAGS_OPTIMIZE_FOR_MGPU (0x00000001)
+#define NVC637_CTRL_EXEC_PARTITIONS_FLAGS_OPTIMIZE_DEFAULT NVC637_CTRL_EXEC_PARTITIONS_FLAGS_OPTIMIZE_FOR_HOSTIF
+
+#define NVC637_CTRL_MAX_EXEC_PARTITIONS 8
+#define NVC637_CTRL_EXEC_PARTITIONS_ID_INVALID 0xFFFFFFFF
+
+/*!
+ * NVC637_CTRL_EXEC_PARTITIONS_CREATE_PARAMS
+ *
+ * This command will create requested execution partitions under the subscribed
+ * memory partition. The memory partition is expected to be configured before
+ * execution partition creation.
+ *
+ * bQuery[IN]
+ * - If NV_TRUE, execution partitions will not be created, but return
+ * status of NV_OK will indicate that the request is valid and can
+ * currently be fulfilled
+ * flag [IN]
+ * REQUEST_WITH_PART_ID
+ * - If set, RM will try to assign execution partition id requested by clients.
+ * This flag is only supported on vGPU enabled RM build and will be removed
+ * when vgpu plugin implements virtualized execution partition ID support.
+ * (bug 2938187)
+ *
+ * REQUEST_AT_SPAN
+ * - If set, RM will try to assign execution partition resources at the specified span.
+ * This flag currently is only useful for chips in which CTS IDs are mandatory in RM,
+ * as it allows the requester to position compute instances without using RM best fit
+ * allocation.
+ *
+ * execPartCount[IN]
+ * - Number of execution partitions requested
+ *
+ * execPartInfo[IN]
+ * - Requested execution partition resources for each requested partition
+ *
+ * execPartId[OUT]
+ * - ID of each requested execution partition
+ *
+ * Possible status values returned are:
+ * NV_OK
+ * NV_ERR_NOT_SUPPORTED
+ */
+
+#define NVC637_CTRL_DMA_EXEC_PARTITIONS_CREATE_REQUEST_WITH_PART_ID 0:0
+#define NVC637_CTRL_DMA_EXEC_PARTITIONS_CREATE_REQUEST_WITH_PART_ID_FALSE (0x00000000)
+#define NVC637_CTRL_DMA_EXEC_PARTITIONS_CREATE_REQUEST_WITH_PART_ID_TRUE (0x00000001)
+#define NVC637_CTRL_DMA_EXEC_PARTITIONS_CREATE_REQUEST_AT_SPAN 1:1
+#define NVC637_CTRL_DMA_EXEC_PARTITIONS_CREATE_REQUEST_AT_SPAN_FALSE (0x00000000)
+#define NVC637_CTRL_DMA_EXEC_PARTITIONS_CREATE_REQUEST_AT_SPAN_TRUE (0x00000001)
+
+#define NVC637_CTRL_CMD_EXEC_PARTITIONS_CREATE (0xc6370101) /* finn: Evaluated from "(FINN_AMPERE_SMC_PARTITION_REF_EXEC_PARTITIONS_INTERFACE_ID << 8) | NVC637_CTRL_EXEC_PARTITIONS_CREATE_PARAMS_MESSAGE_ID" */
+
+/*!
+ * NVC637_CTRL_EXEC_PARTITIONS_DELETE_PARAMS
+ *
+ * This command will delete requested execution partitions.
+ *
+ * execPartCount[IN]
+ * - Number of execution partitions to delete.
+ *
+ * execPartId[IN]
+ * - Execution partition IDs to delete
+ *
+ * Possible status values returned are:
+ * NV_OK
+ * NV_ERR_NOT_SUPPORTED
+ * NV_ERR_OBJECT_NOT_FOUND
+ */
+#define NVC637_CTRL_EXEC_PARTITIONS_CREATE_PARAMS_MESSAGE_ID (0x1U)
+
+typedef struct NVC637_CTRL_EXEC_PARTITIONS_CREATE_PARAMS {
+ NvBool bQuery;
+ NvU32 flags;
+ NvU32 execPartCount;
+ // C form: NVC637_CTRL_EXEC_PARTITIONS_INFO execPartInfo[NVC637_CTRL_MAX_EXEC_PARTITIONS];
+ NVC637_CTRL_EXEC_PARTITIONS_INFO execPartInfo[NVC637_CTRL_MAX_EXEC_PARTITIONS];
+ // C form: NvU32 execPartId[NVC637_CTRL_MAX_EXECUTION_PARTITIONS];
+ NvU32 execPartId[NVC637_CTRL_MAX_EXEC_PARTITIONS];
+} NVC637_CTRL_EXEC_PARTITIONS_CREATE_PARAMS;
+#define NVC637_CTRL_EXEC_PARTITIONS_DELETE_PARAMS_MESSAGE_ID (0x2U)
+
+typedef struct NVC637_CTRL_EXEC_PARTITIONS_DELETE_PARAMS {
+ NvU32 execPartCount;
+ NvU32 execPartId[NVC637_CTRL_MAX_EXEC_PARTITIONS];
+} NVC637_CTRL_EXEC_PARTITIONS_DELETE_PARAMS;
+
+#define NVC637_CTRL_CMD_EXEC_PARTITIONS_DELETE (0xc6370102) /* finn: Evaluated from "(FINN_AMPERE_SMC_PARTITION_REF_EXEC_PARTITIONS_INTERFACE_ID << 8) | NVC637_CTRL_EXEC_PARTITIONS_DELETE_PARAMS_MESSAGE_ID" */
+
+/*!
+ * NVC637_CTRL_EXEC_PARTITIONS_GET_PARAMS
+ *
+ * This command will return information about execution partitions which
+ * currently exist within the subscribed memory partition.
+ *
+ * execPartCount[OUT]
+ * - Number of existing execution partitions
+ *
+ * execPartId[OUT]
+ * - ID of existing execution partitions
+ *
+ * execPartInfo[OUT]
+ * - Resources within each existing execution partition
+ *
+ * Possible status values returned are:
+ * NV_OK
+ * NV_ERR_NOT_SUPPORTED
+ */
+#define NVC637_CTRL_EXEC_PARTITIONS_GET_PARAMS_MESSAGE_ID (0x3U)
+
+typedef struct NVC637_CTRL_EXEC_PARTITIONS_GET_PARAMS {
+ NvU32 execPartCount;
+ // C form: NvU32 execPartId[NVC637_CTRL_MAX_EXECUTION_PARTITIONS];
+ NvU32 execPartId[NVC637_CTRL_MAX_EXEC_PARTITIONS];
+ // C form: NVC637_CTRL_EXEC_PARTITIONS_INFO execPartInfo[NVC637_CTRL_MAX_EXEC_PARTITIONS];
+ NVC637_CTRL_EXEC_PARTITIONS_INFO execPartInfo[NVC637_CTRL_MAX_EXEC_PARTITIONS];
+} NVC637_CTRL_EXEC_PARTITIONS_GET_PARAMS;
+
+#define NVC637_CTRL_CMD_EXEC_PARTITIONS_GET (0xc6370103) /* finn: Evaluated from "(FINN_AMPERE_SMC_PARTITION_REF_EXEC_PARTITIONS_INTERFACE_ID << 8) | NVC637_CTRL_EXEC_PARTITIONS_GET_PARAMS_MESSAGE_ID" */
+
+/*!
+ * NVC637_CTRL_EXEC_PARTITIONS_GET_ACTIVE_IDS
+ *
+ * This command will return IDs of all active execution partitions in a memory
+ * partition
+ *
+ * execPartCount[OUT]
+ * - Number of existing execution partitions
+ *
+ * execPartId[OUT]
+ * - ID of existing execution partitions
+ *
+ * execPartUuid[OUT]
+ * - ASCII UUID string of existing execution partitions
+ *
+ * Possible status values returned are:
+ * NV_OK
+ * NV_ERR_NOT_SUPPORTED
+ */
+
+#define NVC637_UUID_LEN 16
+#define NVC637_UUID_STR_LEN NV_MIG_DEVICE_UUID_STR_LENGTH
+
+typedef struct NVC637_EXEC_PARTITION_UUID {
+ // C form: char str[NVC638_UUID_STR_LEN];
+ char str[NVC637_UUID_STR_LEN];
+} NVC637_EXEC_PARTITION_UUID;
+
+#define NVC637_CTRL_EXEC_PARTITIONS_GET_ACTIVE_IDS_PARAMS_MESSAGE_ID (0x4U)
+
+typedef struct NVC637_CTRL_EXEC_PARTITIONS_GET_ACTIVE_IDS_PARAMS {
+ NvU32 execPartCount;
+
+ // C form: NvU32 execPartId[NVC637_CTRL_MAX_EXECUTION_PARTITIONS];
+ NvU32 execPartId[NVC637_CTRL_MAX_EXEC_PARTITIONS];
+
+ // C form: NVC637_EXEC_PARTITION_UUID execPartUuid[NVC637_CTRL_MAX_EXEC_PARTITIONS];
+ NVC637_EXEC_PARTITION_UUID execPartUuid[NVC637_CTRL_MAX_EXEC_PARTITIONS];
+} NVC637_CTRL_EXEC_PARTITIONS_GET_ACTIVE_IDS_PARAMS;
+
+#define NVC637_CTRL_EXEC_PARTITIONS_GET_ACTIVE_IDS (0xc6370104) /* finn: Evaluated from "(FINN_AMPERE_SMC_PARTITION_REF_EXEC_PARTITIONS_INTERFACE_ID << 8) | NVC637_CTRL_EXEC_PARTITIONS_GET_ACTIVE_IDS_PARAMS_MESSAGE_ID" */
+
+/*
+ * NVC637_CTRL_CMD_EXEC_PARTITIONS_EXPORT
+ *
+ * Export the resource and placement information about an exec partition such
+ * that a similar partition can be recreated from scratch in the same position.
+ */
+#define NVC637_CTRL_CMD_EXEC_PARTITIONS_EXPORT (0xc6370105) /* finn: Evaluated from "(FINN_AMPERE_SMC_PARTITION_REF_EXEC_PARTITIONS_INTERFACE_ID << 8) | 0x5" */
+
+/*
+ * NVC637_CTRL_CMD_EXEC_PARTITIONS_IMPORT
+ *
+ * Create an exec partition resembling the exported partition info. The imported
+ * partition should behave identically with respect to fragmentation.
+ */
+#define NVC637_CTRL_CMD_EXEC_PARTITIONS_IMPORT (0xc6370106) /* finn: Evaluated from "(FINN_AMPERE_SMC_PARTITION_REF_EXEC_PARTITIONS_INTERFACE_ID << 8) | 0x6" */
+
+#define NVC637_CTRL_EXEC_PARTITIONS_EXPORT_MAX_ENGINES_MASK_SIZE 4
+typedef struct NVC637_CTRL_EXEC_PARTITIONS_EXPORTED_INFO {
+ NV_DECLARE_ALIGNED(NvU64 enginesMask[NVC637_CTRL_EXEC_PARTITIONS_EXPORT_MAX_ENGINES_MASK_SIZE], 8);
+ NvU8 uuid[NVC637_UUID_LEN];
+ NvU32 sharedEngFlags;
+ NvU32 gpcMask;
+ NvU32 gfxGpcCount;
+ NvU32 veidOffset;
+ NvU32 veidCount;
+ NvU32 smCount;
+ NvU32 spanStart;
+ NvU32 computeSize;
+ NvU32 execPartFlags;
+} NVC637_CTRL_EXEC_PARTITIONS_EXPORTED_INFO;
+
+typedef struct NVC637_CTRL_EXEC_PARTITIONS_IMPORT_EXPORT_PARAMS {
+ NvU32 id;
+ NV_DECLARE_ALIGNED(NVC637_CTRL_EXEC_PARTITIONS_EXPORTED_INFO info, 8);
+ NvBool bCreateCap;
+} NVC637_CTRL_EXEC_PARTITIONS_IMPORT_EXPORT_PARAMS;
+
+/*
+ * NVC637_CTRL_EXEC_PARTITION_PARTITION_SPAN
+ *
+ * This struct represents the span of a compute instance, which represents the
+ * resource slots a given partition occupies (or may occupy) within a fixed range which
+ * is defined per-chip. A partition containing more resources will cover more
+ * resource slots and therefore cover a larger span.
+ *
+ * lo
+ * - The starting unit of this span, inclusive
+ *
+ * hi
+ * - The ending unit of this span, inclusive
+ *
+ */
+typedef struct NVC637_CTRL_EXEC_PARTITION_PARTITION_SPAN {
+ NV_DECLARE_ALIGNED(NvU64 lo, 8);
+ NV_DECLARE_ALIGNED(NvU64 hi, 8);
+} NVC637_CTRL_EXEC_PARTITION_PARTITION_SPAN;
+
+/*
+ * NVC637_CTRL_EXEC_PARTITIONS_GET_PROFILE_CAPACITY
+ *
+ * This command returns the count of compute instances which can be created
+ * of the given commpute profile size (represented by the computeSize field
+ * within a profile) which can be requested via NV2080_CTRL_CMD_GPU_GET_COMPUTE_PROFILES
+ * Note that this API does not "reserve" any partitions, and there is no
+ * guarantee that the reported count of available partitions of a given size
+ * will remain consistent following creation of partitions of different size
+ * through NV2080_CTRL_GPU_SET_PARTITIONS.
+ * Note that this API is unsupported if SMC is feature-disabled.
+ * Note that the caller of this CTRL must be subscribed to a valid GPU instance
+ *
+ * computeSize[IN]
+ * - Partition flag indicating size of requested profile
+ *
+ * profileCount[OUT]
+ * - Available number of profiles of the given size which can currently be created.
+ *
+ * availableSpans[OUT]
+ * - For each profile able to be created of the specified size, the span
+ * it could occupy.
+ *
+ * availableSpansCount[OUT]
+ * - Number of valid entries in availableSpans.
+ *
+ * totalProfileCount[OUT]
+ * - Total number of profiles of the given size which can be created.
+ *
+ * totalSpans[OUT]
+ * - List of spans which can possibly be occupied by profiles of the
+ * given type.
+ *
+ * totalSpansCount[OUT]
+ * - Number of valid entries in totalSpans.
+ *
+ * Possible status values returned are:
+ * NV_OK
+ * NV_ERR_INVALID_ARGUMENT
+ * NV_ERR_NOT_SUPPORTED
+ */
+#define NVC637_CTRL_CMD_EXEC_PARTITIONS_GET_PROFILE_CAPACITY (0xc63701a9U) /* finn: Evaluated from "(FINN_AMPERE_SMC_PARTITION_REF_EXEC_PARTITIONS_INTERFACE_ID << 8) | NVC637_CTRL_EXEC_PARTITIONS_GET_PROFILE_CAPACITY_PARAMS_MESSAGE_ID" */
+
+#define NVC637_CTRL_EXEC_PARTITIONS_GET_PROFILE_CAPACITY_PARAMS_MESSAGE_ID (0xA9U)
+
+typedef struct NVC637_CTRL_EXEC_PARTITIONS_GET_PROFILE_CAPACITY_PARAMS {
+ NvU32 computeSize;
+ NvU32 profileCount;
+ NV_DECLARE_ALIGNED(NVC637_CTRL_EXEC_PARTITION_PARTITION_SPAN availableSpans[NVC637_CTRL_MAX_EXEC_PARTITIONS], 8);
+ NvU32 availableSpansCount;
+ NvU32 totalProfileCount;
+ NV_DECLARE_ALIGNED(NVC637_CTRL_EXEC_PARTITION_PARTITION_SPAN totalSpans[NVC637_CTRL_MAX_EXEC_PARTITIONS], 8);
+ NvU32 totalSpansCount;
+} NVC637_CTRL_EXEC_PARTITIONS_GET_PROFILE_CAPACITY_PARAMS;
+
+/*
+ * NVC637_CTRL_CMD_GET_UUID
+ */
+#define NVC637_CTRL_CMD_GET_UUID (0xc63701aaU) /* finn: Evaluated from "(FINN_AMPERE_SMC_PARTITION_REF_EXEC_PARTITIONS_INTERFACE_ID << 8) | NVC637_CTRL_GET_UUID_PARAMS_MESSAGE_ID" */
+
+#define NVC637_CTRL_GET_UUID_PARAMS_MESSAGE_ID (0xAAU)
+
+typedef struct NVC637_CTRL_GET_UUID_PARAMS {
+ NvU8 uuid[NVC637_UUID_LEN];
+
+ char uuidStr[NVC637_UUID_STR_LEN];
+} NVC637_CTRL_GET_UUID_PARAMS;
+
+// _ctrlc637_h_