Files
open-gpu-kernel-modules/src/common/sdk/nvidia/inc/ctrl/ctrlb06f.h
Andy Ritger eb5c7665a1 535.43.02
2023-05-30 10:11:36 -07:00

460 lines
17 KiB
C

/*
* SPDX-FileCopyrightText: Copyright (c) 2012-2022 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/ctrlb06f.finn
//
/* MAXWELL_CHANNEL_GPFIFO_A control commands and parameters */
#include "ctrl/ctrlxxxx.h"
#include "ctrl/ctrla06f.h" /* B06F is partially derived from A06F */
#include "ctrl/ctrl906f.h" /* B06F is partially derived from 906F */
#define NVB06F_CTRL_CMD(cat,idx) \
NVXXXX_CTRL_CMD(0xB06F, NVB06F_CTRL_##cat, idx)
/* MAXWELL_CHANNEL_GPFIFO_A command categories (6bits) */
#define NVB06F_CTRL_RESERVED (0x00)
#define NVB06F_CTRL_GPFIFO (0x01)
#define NVB06F_CTRL_EVENT (0x02)
/*
* NVB06F_CTRL_CMD_NULL
*
* This command does nothing.
* This command does not take any parameters.
*
* Possible status values returned are:
* NV_OK
*/
#define NVB06F_CTRL_CMD_NULL (0xb06f0000) /* finn: Evaluated from "(FINN_MAXWELL_CHANNEL_GPFIFO_A_RESERVED_INTERFACE_ID << 8) | 0x0" */
/*
* NVB06F_CTRL_GET_CLASS_ENGINEID
*
* Please see description of NV906F_CTRL_GET_CLASS_ENGINEID for more information.
*
*/
#define NVB06F_CTRL_GET_CLASS_ENGINEID (0xb06f0101) /* finn: Evaluated from "(FINN_MAXWELL_CHANNEL_GPFIFO_A_GPFIFO_INTERFACE_ID << 8) | NVB06F_CTRL_GET_CLASS_ENGINEID_PARAMS_MESSAGE_ID" */
#define NVB06F_CTRL_GET_CLASS_ENGINEID_PARAMS_MESSAGE_ID (0x1U)
typedef NV906F_CTRL_GET_CLASS_ENGINEID_PARAMS NVB06F_CTRL_GET_CLASS_ENGINEID_PARAMS;
/*
* NVB06F_CTRL_RESET_CHANNEL
*
* Please see description of NVA06F_CTRL_RESET_CHANNEL for more information.
*
*/
#define NVB06F_CTRL_CMD_RESET_CHANNEL (0xb06f0102) /* finn: Evaluated from "(FINN_MAXWELL_CHANNEL_GPFIFO_A_GPFIFO_INTERFACE_ID << 8) | NVB06F_CTRL_CMD_RESET_CHANNEL_PARAMS_MESSAGE_ID" */
#define NVB06F_CTRL_CMD_RESET_CHANNEL_PARAMS_MESSAGE_ID (0x2U)
typedef NVA06F_CTRL_CMD_RESET_CHANNEL_PARAMS NVB06F_CTRL_CMD_RESET_CHANNEL_PARAMS;
/*
* NVB06F_CTRL_CMD_GPFIFO_SCHEDULE
*
* Please see description of NVA06F_CTRL_CMD_GPFIFO_SCHEDULE for more information.
*
*/
#define NVB06F_CTRL_CMD_GPFIFO_SCHEDULE (0xb06f0103) /* finn: Evaluated from "(FINN_MAXWELL_CHANNEL_GPFIFO_A_GPFIFO_INTERFACE_ID << 8) | NVB06F_CTRL_GPFIFO_SCHEDULE_PARAMS_MESSAGE_ID" */
#define NVB06F_CTRL_GPFIFO_SCHEDULE_PARAMS_MESSAGE_ID (0x3U)
typedef NVA06F_CTRL_GPFIFO_SCHEDULE_PARAMS NVB06F_CTRL_GPFIFO_SCHEDULE_PARAMS;
/*
* NVB06F_CTRL_CMD_BIND
*
* Please see description of NVA06F_CTRL_CMD_BIND for more information.
*/
#define NVB06F_CTRL_CMD_BIND (0xb06f0104) /* finn: Evaluated from "(FINN_MAXWELL_CHANNEL_GPFIFO_A_GPFIFO_INTERFACE_ID << 8) | NVB06F_CTRL_BIND_PARAMS_MESSAGE_ID" */
#define NVB06F_CTRL_BIND_PARAMS_MESSAGE_ID (0x4U)
typedef NVA06F_CTRL_BIND_PARAMS NVB06F_CTRL_BIND_PARAMS;
/*
* NVB06F_CTRL_CMD_EVENT_SET_NOTIFICATION
*
* Please see description of NVA06F_CTRL_CMD_EVENT_SET_NOTIFICATION for more information.
*/
#define NVB06F_CTRL_CMD_EVENT_SET_NOTIFICATION (0xb06f0205) /* finn: Evaluated from "(FINN_MAXWELL_CHANNEL_GPFIFO_A_EVENT_INTERFACE_ID << 8) | NVB06F_CTRL_EVENT_SET_NOTIFICATION_PARAMS_MESSAGE_ID" */
#define NVB06F_CTRL_EVENT_SET_NOTIFICATION_PARAMS_MESSAGE_ID (0x5U)
typedef NVA06F_CTRL_EVENT_SET_NOTIFICATION_PARAMS NVB06F_CTRL_EVENT_SET_NOTIFICATION_PARAMS;
/* valid action values */
#define NVB06F_CTRL_EVENT_SET_NOTIFICATION_ACTION_DISABLE NVA06F_CTRL_EVENT_SET_NOTIFICATION_ACTION_DISABLE
#define NVB06F_CTRL_EVENT_SET_NOTIFICATION_ACTION_SINGLE NVA06F_CTRL_EVENT_SET_NOTIFICATION_ACTION_SINGLE
#define NVB06F_CTRL_EVENT_SET_NOTIFICATION_ACTION_REPEAT NVA06F_CTRL_EVENT_SET_NOTIFICATION_ACTION_REPEAT
/*
* NVB06F_CTRL_CMD_EVENT_SET_TRIGGER
*
* Please see description of NVA06F_CTRL_CMD_EVENT_SET_TRIGGER for more information.
*/
#define NVB06F_CTRL_CMD_EVENT_SET_TRIGGER (0xb06f0206) /* finn: Evaluated from "(FINN_MAXWELL_CHANNEL_GPFIFO_A_EVENT_INTERFACE_ID << 8) | 0x6" */
/*
* NVB06F_CTRL_CMD_GET_MMU_FAULT_INFO
*
* Please see description of NV906F_CTRL_CMD_GET_MMU_FAULT_INFO for more information.
*
*/
#define NVB06F_CTRL_CMD_GET_MMU_FAULT_INFO (0xb06f0107) /* finn: Evaluated from "(FINN_MAXWELL_CHANNEL_GPFIFO_A_GPFIFO_INTERFACE_ID << 8) | NVB06F_CTRL_GET_MMU_FAULT_INFO_PARAMS_MESSAGE_ID" */
#define NVB06F_CTRL_GET_MMU_FAULT_INFO_PARAMS_MESSAGE_ID (0x7U)
typedef NV906F_CTRL_GET_MMU_FAULT_INFO_PARAMS NVB06F_CTRL_GET_MMU_FAULT_INFO_PARAMS;
/*
* NVB06F_CTRL_CMD_GET_ENGINE_CTX_SIZE
*
* This command returns the size of the engine context.
*
* engineID
* This parameter specifies the engine context size to be retrieved.
*
* See the description of the NV2080_ENGINE_TYPE values in cl2080.h for more
* information
*
* size
* This parameter returns the size of the engine context
*
* Possible status values returned are:
* NV_OK
* NV_ERR_INVALID_ARGUMENT
*/
#define NVB06F_CTRL_CMD_GET_ENGINE_CTX_SIZE (0xb06f010b) /* finn: Evaluated from "(FINN_MAXWELL_CHANNEL_GPFIFO_A_GPFIFO_INTERFACE_ID << 8) | NVB06F_CTRL_GET_ENGINE_CTX_SIZE_PARAMS_MESSAGE_ID" */
#define NVB06F_CTRL_GET_ENGINE_CTX_SIZE_PARAMS_MESSAGE_ID (0xBU)
typedef struct NVB06F_CTRL_GET_ENGINE_CTX_SIZE_PARAMS {
NvU32 engineID;
NvU32 size;
} NVB06F_CTRL_GET_ENGINE_CTX_SIZE_PARAMS;
/*
* NVB06F_CTRL_CMD_GET_ENGINE_CTX_DATA
*
* This command returns the context buffer data for the given engine for vGPU motion.
*
* engineID
* This parameter specifies the engine context to be retrieved.
*
* See the description of the NV2080_ENGINE_TYPE values in cl2080.h for
* more information
*
* size
* This parameter specifies the size of the context buffer.
*
* pEngineCtxBuff
* This parameter specifies the context buffer for motion operation to be filled in.
*
* Possible status values returned are:
* NV_OK
* NV_ERR_INVALID_STATE
*/
#define NVB06F_CTRL_CMD_GET_ENGINE_CTX_DATA (0xb06f010c) /* finn: Evaluated from "(FINN_MAXWELL_CHANNEL_GPFIFO_A_GPFIFO_INTERFACE_ID << 8) | NVB06F_CTRL_GET_ENGINE_CTX_DATA_PARAMS_MESSAGE_ID" */
typedef struct SW_OBJECT_ENGINE_CTX {
NvU32 hObject;
NvU32 subCh;
} SW_OBJECT_ENGINE_CTX;
#define NVB06F_CTRL_GET_ENGINE_CTX_DATA_PARAMS_MESSAGE_ID (0xCU)
typedef struct NVB06F_CTRL_GET_ENGINE_CTX_DATA_PARAMS {
NvU32 engineID;
NvU32 size;
NV_DECLARE_ALIGNED(NvP64 pEngineCtxBuff, 8);
} NVB06F_CTRL_GET_ENGINE_CTX_DATA_PARAMS;
/*
* NVB06F_CTRL_CMD_MIGRATE_ENGINE_CTX_DATA
*
* This command restores the context buffer for the given engine for vGPU motion.
*
* engineID
* This parameter specifies the engine context to be restored.
*
* See the description of the NV2080_ENGINE_TYPE values in cl2080.h for
* more information
*
* size
* This parameter specifies the size of the context buffer.
*
* pEngineCtxBuff
* This parameter specifies the context buffer for motion operation restore.
*
* Possible status values returned are:
* NV_OK
* NV_ERR_INVALID_STATE
*/
#define NVB06F_CTRL_CMD_MIGRATE_ENGINE_CTX_DATA (0xb06f010d) /* finn: Evaluated from "(FINN_MAXWELL_CHANNEL_GPFIFO_A_GPFIFO_INTERFACE_ID << 8) | NVB06F_CTRL_MIGRATE_ENGINE_CTX_DATA_PARAMS_MESSAGE_ID" */
#define NVB06F_CTRL_MIGRATE_ENGINE_CTX_DATA_PARAMS_MESSAGE_ID (0xDU)
typedef NVB06F_CTRL_GET_ENGINE_CTX_DATA_PARAMS NVB06F_CTRL_MIGRATE_ENGINE_CTX_DATA_PARAMS;
/*
* NVB06F_CTRL_CMD_GET_ENGINE_CTX_STATE
*
* This command returns the context buffer state of the given engine for vGPU motion.
*
* engineID
* This input parameter specifies the engine context to be restored.
*
* See the description of the NV2080_ENGINE_TYPE values in cl2080.h for
* more information
*
* hObject
* This parameter specifies the channel object that is running on the SW engine.
*
* engineCtxState
* This parameter specifies the engine context state. For SW engine, the only meaningful
* field is INVALID, INITIALIZED and the subch.
*
* Possible status values returned are:
* NV_OK
* NV_ERR_INVALID_STATE
*/
#define NVB06F_CTRL_CMD_GET_ENGINE_CTX_STATE (0xb06f010e) /* finn: Evaluated from "(FINN_MAXWELL_CHANNEL_GPFIFO_A_GPFIFO_INTERFACE_ID << 8) | NVB06F_CTRL_GET_ENGINE_CTX_STATE_PARAMS_MESSAGE_ID" */
#define NVB06F_CTRL_GET_ENGINE_CTX_STATE_PARAMS_MESSAGE_ID (0xEU)
typedef struct NVB06F_CTRL_GET_ENGINE_CTX_STATE_PARAMS {
NvU32 engineID;
NvU32 hObject;
NvU32 engineCtxState;
} NVB06F_CTRL_GET_ENGINE_CTX_STATE_PARAMS;
#define NVB06F_CTRL_GET_ENGINE_CTX_VIRTUAL_CONTEXT 0:0
#define NVB06F_CTRL_GET_ENGINE_CTX_VIRTUAL_CONTEXT_DISABLED (0x00000000)
#define NVB06F_CTRL_GET_ENGINE_CTX_VIRTUAL_CONTEXT_ENABLED (0x00000001)
#define NVB06F_CTRL_GET_ENGINE_CTX_STATE 2:1
#define NVB06F_CTRL_GET_ENGINE_CTX_STATE_INVALID (0x00000000)
#define NVB06F_CTRL_GET_ENGINE_CTX_STATE_INITIALIZED (0x00000001)
#define NVB06F_CTRL_GET_ENGINE_CTX_STATE_PROMOTED (0x00000002)
#define NVB06F_CTRL_GET_ENGINE_CTX_STATE_EVICTED (0x00000003)
#define NVB06F_CTRL_GET_ENGINE_CTX_SUBCH 6:4
/*
* NVB06F_CTRL_CMD_GET_CHANNEL_HW_STATE
*
* This command returns the channel HW state.
*
* state
* This parameter stores single bit-fields corresponding to the following
* channel HW states:
* NEXT
* A value of NV_TRUE indicates that this channel should be scheduled
* first when GPU Host chooses this TSG to run next on the runlist.
*
* CTX_RELOAD
* A value of NV_TRUE indicates that this channel's context was
* preempted and needs to be reloaded.
*
* PENDING
* A value of NV_TRUE indicates that this channel is not loaded on the
* PBDMA but methods still remain. This includes the completion of
* semaphores acquires and WFI methods. This field is deprecated
* from Volta onwards, and can be ignored.
*
* ENG_FAULTED
* A value of NV_TRUE indicates that the channel's engine has faulted,
* and the channel will not be rescheduled until the fault has been
* cleared. This bit should only be set as part of migration, and will
* not necessarily cause the channel to be prevented from being
* scheduled.
*
* PBDMA_FAULTED
* A value of NV_TRUE indicates that the channel's PBDMA has faulted,
* and the channel will not be rescheduled until the fault has been
* cleared. This bit should only be set as part of migration, and will
* not necessarily cause the channel to be prevented from being
* scheduled.
*
* ACQUIRE_FAIL
* A value of NV_TRUE indicates that the engine scheduler failed to
* acquire a semaphore for this channel.
*
* Possible status values returned are:
* NV_OK
* NV_ERR_INVALID_STATE
*/
#define NVB06F_CTRL_CMD_GET_CHANNEL_HW_STATE (0xb06f010f) /* finn: Evaluated from "(FINN_MAXWELL_CHANNEL_GPFIFO_A_GPFIFO_INTERFACE_ID << 8) | NVB06F_CTRL_GET_CHANNEL_HW_STATE_PARAMS_MESSAGE_ID" */
#define NVB06F_CTRL_CMD_CHANNEL_HW_STATE_NEXT 0:0
#define NVB06F_CTRL_CMD_CHANNEL_HW_STATE_CTX_RELOAD 1:1
#define NVB06F_CTRL_CMD_CHANNEL_HW_STATE_PENDING 2:2
#define NVB06F_CTRL_CMD_CHANNEL_HW_STATE_ENG_FAULTED 3:3
#define NVB06F_CTRL_CMD_CHANNEL_HW_STATE_PBDMA_FAULTED 4:4
#define NVB06F_CTRL_CMD_CHANNEL_HW_STATE_ACQUIRE_FAIL 5:5
typedef struct NVB06F_CTRL_CHANNEL_HW_STATE_PARAMS {
NvU32 state;
} NVB06F_CTRL_CHANNEL_HW_STATE_PARAMS;
#define NVB06F_CTRL_GET_CHANNEL_HW_STATE_PARAMS_MESSAGE_ID (0xFU)
typedef NVB06F_CTRL_CHANNEL_HW_STATE_PARAMS NVB06F_CTRL_GET_CHANNEL_HW_STATE_PARAMS;
/*
* NVB06F_CTRL_CMD_SET_CHANNEL_HW_STATE
*
* This command restores the channel HW state.
*
* state
* This parameter stores single bit-fields corresponding to the following
* channel HW states:
* NEXT
* A value of NV_TRUE indicates that this channel should be scheduled
* first when GPU Host chooses this TSG to run next on the runlist.
*
* CTX_RELOAD
* A value of NV_TRUE indicates that this channel's context was
* preempted and needs to be reloaded.
*
* PENDING
* A value of NV_TRUE indicates that this channel is not loaded on the
* PBDMA but methods still remain. This includes the completion of
* semaphores acquires and WFI methods. This field is deprecated
* from Volta onwards, and can be ignored.
*
* ENG_FAULTED
* A value of NV_TRUE indicates that the channel's engine has faulted,
* and the channel will not be rescheduled until the fault has been
* cleared. This bit should only be set as part of migration, and will
* not necessarily cause the channel to be prevented from being
* scheduled.
*
* PBDMA_FAULTED
* A value of NV_TRUE indicates that the channel's PBDMA has faulted,
* and the channel will not be rescheduled until the fault has been
* cleared. This bit should only be set as part of migration, and will
* not necessarily cause the channel to be prevented from being
* scheduled.
*
* ACQUIRE_FAIL
* A value of NV_TRUE indicates that the engine scheduler failed to
* acquire a semaphore for this channel.
*
* Possible status values returned are:
* NV_OK
* NV_ERR_INVALID_STATE
*/
#define NVB06F_CTRL_CMD_SET_CHANNEL_HW_STATE (0xb06f0110) /* finn: Evaluated from "(FINN_MAXWELL_CHANNEL_GPFIFO_A_GPFIFO_INTERFACE_ID << 8) | NVB06F_CTRL_SET_CHANNEL_HW_STATE_PARAMS_MESSAGE_ID" */
#define NVB06F_CTRL_SET_CHANNEL_HW_STATE_PARAMS_MESSAGE_ID (0x10U)
typedef NVB06F_CTRL_CHANNEL_HW_STATE_PARAMS NVB06F_CTRL_SET_CHANNEL_HW_STATE_PARAMS;
/*
* NVB06F_CTRL_CMD_SAVE_ENGINE_CTX_DATA
*
* This command returns the context buffer data for the given engine for vGPU migration.
*
* engineID
* This parameter specifies the engine context to be retrieved.
*
* See the description of the NV2080_ENGINE_TYPE values in cl2080.h for
* more information
*
* size
* This parameter specifies the size of the context buffer. The maximum size
* of engine context buffer is choosen to support only RAMFC and instance
* memory block. To use this RmCtrl for a higher sized buffer, like the GR
* context, the max size would have to be increased.
*
* engineCtxBuff
* This parameter specifies the context buffer data.
*
* Possible status values returned are:
* NV_OK
* NV_ERR_INVALID_STATE
*/
#define NVB06F_CTRL_CMD_SAVE_ENGINE_CTX_DATA (0xb06f0111) /* finn: Evaluated from "(FINN_MAXWELL_CHANNEL_GPFIFO_A_GPFIFO_INTERFACE_ID << 8) | NVB06F_CTRL_SAVE_ENGINE_CTX_DATA_PARAMS_MESSAGE_ID" */
#define NVB06F_CTRL_ENGINE_CTX_BUFFER_SIZE_MAX 4096
#define NVB06F_CTRL_SAVE_ENGINE_CTX_DATA_PARAMS_MESSAGE_ID (0x11U)
typedef struct NVB06F_CTRL_SAVE_ENGINE_CTX_DATA_PARAMS {
NvU32 engineID;
NvU32 size;
NvU8 engineCtxBuff[NVB06F_CTRL_ENGINE_CTX_BUFFER_SIZE_MAX];
} NVB06F_CTRL_SAVE_ENGINE_CTX_DATA_PARAMS;
/*
* NVB06F_CTRL_CMD_RESTORE_ENGINE_CTX_DATA
*
* This command restores the context buffer for the given engine for vGPU migration.
*
* Possible status values returned are:
* NV_OK
* NV_ERR_INVALID_STATE
*/
#define NVB06F_CTRL_CMD_RESTORE_ENGINE_CTX_DATA (0xb06f0112) /* finn: Evaluated from "(FINN_MAXWELL_CHANNEL_GPFIFO_A_GPFIFO_INTERFACE_ID << 8) | NVB06F_CTRL_CMD_RESTORE_ENGINE_CTX_DATA_FINN_PARAMS_MESSAGE_ID" */
typedef NVB06F_CTRL_SAVE_ENGINE_CTX_DATA_PARAMS NVB06F_CTRL_RESTORE_ENGINE_CTX_DATA_PARAMS;
// FINN PORT: The below type was generated by the FINN port to
// ensure that all API's have a unique structure associated
// with them!
#define NVB06F_CTRL_CMD_RESTORE_ENGINE_CTX_DATA_FINN_PARAMS_MESSAGE_ID (0x12U)
typedef struct NVB06F_CTRL_CMD_RESTORE_ENGINE_CTX_DATA_FINN_PARAMS {
NVB06F_CTRL_RESTORE_ENGINE_CTX_DATA_PARAMS params;
} NVB06F_CTRL_CMD_RESTORE_ENGINE_CTX_DATA_FINN_PARAMS;
/* _ctrlb06f.h_ */