summaryrefslogtreecommitdiffstats
path: root/userspace/sdks/nv570/inc/ctrl/ctrl503c.h
diff options
context:
space:
mode:
Diffstat (limited to 'userspace/sdks/nv570/inc/ctrl/ctrl503c.h')
-rw-r--r--userspace/sdks/nv570/inc/ctrl/ctrl503c.h200
1 files changed, 200 insertions, 0 deletions
diff --git a/userspace/sdks/nv570/inc/ctrl/ctrl503c.h b/userspace/sdks/nv570/inc/ctrl/ctrl503c.h
new file mode 100644
index 0000000..33ffad1
--- /dev/null
+++ b/userspace/sdks/nv570/inc/ctrl/ctrl503c.h
@@ -0,0 +1,200 @@
+/*
+ * SPDX-FileCopyrightText: Copyright (c) 2011-2015 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/ctrl503c.finn
+//
+
+#include "ctrl/ctrlxxxx.h"
+#include "ctrl/ctrl503c/ctrl503cbase.h"
+
+/*
+ * NV503C_CTRL_CMD_REGISTER_VA_SPACE
+ *
+ * This command registers the specified GPU VA space with the given
+ * NV50_THIRD_PARTY_P2P object, and returns a token that
+ * uniquely identifies the VA space within the object's parent
+ * client.
+ *
+ * Its parameter structure has the following fields:
+ *
+ * hVASpace
+ * This field specifies the GPU VA space to be registered
+ * with the third-party P2P object.
+ *
+ * vaSpaceToken
+ * Upon successful completion of the regristration attempt,
+ * this field holds the new VA space identifier.
+ *
+ * Possible status values returned are:
+ * NV_OK
+ * NVOS_STATUS_INVALID_OBJECT_HANDLE
+ * NVOS_STATUS_INVALID_ARGUMENT
+ * NV_ERR_INSUFFICIENT_RESOURCES
+ */
+#define NV503C_CTRL_CMD_REGISTER_VA_SPACE (0x503c0102) /* finn: Evaluated from "(FINN_NV50_THIRD_PARTY_P2P_P2P_INTERFACE_ID << 8) | NV503C_CTRL_REGISTER_VA_SPACE_PARAMS_MESSAGE_ID" */
+
+#define NV503C_CTRL_REGISTER_VA_SPACE_PARAMS_MESSAGE_ID (0x2U)
+
+typedef struct NV503C_CTRL_REGISTER_VA_SPACE_PARAMS {
+ NvHandle hVASpace;
+ NV_DECLARE_ALIGNED(NvU64 vaSpaceToken, 8);
+} NV503C_CTRL_REGISTER_VA_SPACE_PARAMS;
+
+
+/*
+ * NV503C_CTRL_CMD_UNREGISTER_VA_SPACE
+ *
+ * This command unregisters (a previously registered) GPU VA space.
+ *
+ * Its parameter structure has the following field:
+ *
+ * hVASpace
+ * This field specifies the GPU VA space to be
+ * unregistered.
+ *
+ * Possible status values returned are:
+ * NV_OK
+ * NV_ERR_INVALID_ARGUMENT
+ */
+#define NV503C_CTRL_CMD_UNREGISTER_VA_SPACE (0x503c0103) /* finn: Evaluated from "(FINN_NV50_THIRD_PARTY_P2P_P2P_INTERFACE_ID << 8) | NV503C_CTRL_UNREGISTER_VA_SPACE_PARAMS_MESSAGE_ID" */
+
+#define NV503C_CTRL_UNREGISTER_VA_SPACE_PARAMS_MESSAGE_ID (0x3U)
+
+typedef struct NV503C_CTRL_UNREGISTER_VA_SPACE_PARAMS {
+ NvHandle hVASpace;
+} NV503C_CTRL_UNREGISTER_VA_SPACE_PARAMS;
+
+
+/*
+ * NV503C_CTRL_CMD_REGISTER_VIDMEM
+ *
+ * This command registers a video memory allocation with the given
+ * NV50_THIRD_PARTY_P2P object. Registration of video memory
+ * allocations is required if they are to be made accessible via the
+ * third-party P2P infrastructure.
+ *
+ * The vidmem allocation is made available to the users of the third-party P2P
+ * APIs. It's exposed at the range specified by address and size starting at the
+ * specified offset within the physical allocation. The same physical memory is
+ * exposed as the NvRmMapMemoryDma() API would make accessible to the GPU if
+ * used with equivalent parameters. Notably this API doesn't create any virtual
+ * mappings nor verifies that any mappings are present, it only registers the
+ * memory for the purpose of the third-party P2P infrastructure.
+ *
+ * The address range specified by address and size cannot overlap any previously
+ * registered ranges for the given NV50_THIRD_PARTY_P2P object.
+ *
+ * Its parameter structure has the following field:
+ *
+ * hMemory
+ * This field specifies the video memory allocation to be
+ * registered with the third-party P2P object.
+ *
+ * address
+ * The address to register the video memory allocation at. Has to be
+ * aligned to 64K.
+ *
+ * size
+ * Size in bytes, has to be non-0 and aligned to 64K. Offset + size cannot
+ * be larger than the vidmem allocation.
+ *
+ * offset
+ * Offset within the video memory allocation where the registered address
+ * range starts. Has to be aligned to 64K.
+ *
+ * Possible status values returned are:
+ * NV_OK
+ * NV_ERR_INVALID_OBJECT_HANDLE
+ * NV_ERR_INVALID_ARGUMENT
+ * NV_ERR_NOT_SUPPORTED
+ * NV_ERR_INSUFFICIENT_RESOURCES
+ */
+#define NV503C_CTRL_CMD_REGISTER_VIDMEM (0x503c0104) /* finn: Evaluated from "(FINN_NV50_THIRD_PARTY_P2P_P2P_INTERFACE_ID << 8) | NV503C_CTRL_REGISTER_VIDMEM_PARAMS_MESSAGE_ID" */
+
+#define NV503C_CTRL_REGISTER_VIDMEM_PARAMS_MESSAGE_ID (0x4U)
+
+typedef struct NV503C_CTRL_REGISTER_VIDMEM_PARAMS {
+ NvHandle hMemory;
+ NV_DECLARE_ALIGNED(NvU64 address, 8);
+ NV_DECLARE_ALIGNED(NvU64 size, 8);
+ NV_DECLARE_ALIGNED(NvU64 offset, 8);
+} NV503C_CTRL_REGISTER_VIDMEM_PARAMS;
+
+
+/*
+ * NV503C_CTRL_CMD_UNREGISTER_VIDMEM
+ *
+ * This command unregisters (a previously registered) video memory
+ * allocation.
+ *
+ * Its parameter structure has the following field:
+ *
+ * hMemory
+ * This field specifies the video memory allocation to be
+ * unregistered.
+ *
+ * Possible status values returned are:
+ * NV_OK
+ * NV_ERR_INVALID_ARGUMENT
+ */
+#define NV503C_CTRL_CMD_UNREGISTER_VIDMEM (0x503c0105) /* finn: Evaluated from "(FINN_NV50_THIRD_PARTY_P2P_P2P_INTERFACE_ID << 8) | NV503C_CTRL_UNREGISTER_VIDMEM_PARAMS_MESSAGE_ID" */
+
+#define NV503C_CTRL_UNREGISTER_VIDMEM_PARAMS_MESSAGE_ID (0x5U)
+
+typedef struct NV503C_CTRL_UNREGISTER_VIDMEM_PARAMS {
+ NvHandle hMemory;
+} NV503C_CTRL_UNREGISTER_VIDMEM_PARAMS;
+
+/*
+ * NV503C_CTRL_CMD_REGISTER_PID
+ *
+ * This command registers the PID of the process that allocated
+ * the RM client identified by the hClient argument with the
+ * third-party P2P object, granting this process access to any
+ * underlying video memory.
+ *
+ * Its parameter structure has the following field:
+ *
+ * hClient
+ * This field specifies the client id and should be the handle
+ * to a valid NV01_ROOT_USER instance.
+ *
+ * Possible status values returned are:
+ * NVOS_STATUS_SUCCES
+ * NV_ERR_INVALID_ARGUMENT
+ */
+#define NV503C_CTRL_CMD_REGISTER_PID (0x503c0106) /* finn: Evaluated from "(FINN_NV50_THIRD_PARTY_P2P_P2P_INTERFACE_ID << 8) | NV503C_CTRL_REGISTER_PID_PARAMS_MESSAGE_ID" */
+
+#define NV503C_CTRL_REGISTER_PID_PARAMS_MESSAGE_ID (0x6U)
+
+typedef struct NV503C_CTRL_REGISTER_PID_PARAMS {
+ NvHandle hClient;
+} NV503C_CTRL_REGISTER_PID_PARAMS;
+
+/* _ctrl503c_h_ */