mirror of
https://github.com/NVIDIA/open-gpu-kernel-modules.git
synced 2026-05-05 13:41:44 +00:00
565.57.01
This commit is contained in:
@@ -386,6 +386,13 @@ nvswitch_is_cci_supported_ls10
|
||||
nvswitch_device *device
|
||||
)
|
||||
{
|
||||
// Skip CCI on TNVL mode
|
||||
if (nvswitch_is_tnvl_mode_enabled(device))
|
||||
{
|
||||
NVSWITCH_PRINT(device, INFO, "CCI is not supported on TNVL mode\n");
|
||||
return NV_FALSE;
|
||||
}
|
||||
|
||||
if (FLD_TEST_DRF(_SWITCH_REGKEY, _CCI_CONTROL, _ENABLE, _FALSE,
|
||||
device->regkeys.cci_control))
|
||||
{
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2023-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@@ -585,13 +585,16 @@ nvswitch_fsprpc_get_caps_ls10
|
||||
TNVL_RPC_CAPS_PAYLOAD payload;
|
||||
TNVL_RPC_CAPS_RSP_PAYLOAD responsePayload;
|
||||
NvlStatus status;
|
||||
NVSWITCH_TIMEOUT timeout;
|
||||
|
||||
payload.subMessageId = TNVL_CAPS_SUBMESSAGE_ID;
|
||||
nvswitch_os_memset(&responsePayload, 0, sizeof(TNVL_RPC_CAPS_RSP_PAYLOAD));
|
||||
|
||||
nvswitch_timeout_create(5 * NVSWITCH_INTERVAL_1SEC_IN_NS, &timeout);
|
||||
|
||||
status = nvswitch_fsp_send_and_read_message(device,
|
||||
(NvU8*) &payload, sizeof(TNVL_RPC_CAPS_PAYLOAD), NVDM_TYPE_CAPS_QUERY,
|
||||
(NvU8*) &responsePayload, sizeof(TNVL_RPC_CAPS_RSP_PAYLOAD));
|
||||
(NvU8*) &responsePayload, sizeof(TNVL_RPC_CAPS_RSP_PAYLOAD), &timeout);
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "RPC failed for FSP caps query\n");
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -293,7 +293,7 @@ nvswitch_destroy_device_state_ls10
|
||||
{
|
||||
ls10_device *chip_device = NVSWITCH_GET_CHIP_DEVICE_LS10(device);
|
||||
|
||||
if (nvswitch_is_soe_supported(device))
|
||||
if (NVSWITCH_ENG_VALID_LS10(device, SOE, 0) && nvswitch_is_soe_supported(device))
|
||||
{
|
||||
nvswitch_soe_unregister_events(device);
|
||||
nvswitch_unload_soe_ls10(device);
|
||||
@@ -3089,13 +3089,6 @@ nvswitch_is_soe_supported_ls10
|
||||
NVSWITCH_PRINT(device, WARN, "SOE can not be disabled via regkey.\n");
|
||||
}
|
||||
|
||||
if (nvswitch_is_tnvl_mode_locked(device))
|
||||
{
|
||||
NVSWITCH_PRINT(device, INFO,
|
||||
"SOE is not supported when TNVL mode is locked\n");
|
||||
return NV_FALSE;
|
||||
}
|
||||
|
||||
return NV_TRUE;
|
||||
}
|
||||
|
||||
@@ -3143,13 +3136,6 @@ nvswitch_is_inforom_supported_ls10
|
||||
return NV_FALSE;
|
||||
}
|
||||
|
||||
if (nvswitch_is_tnvl_mode_enabled(device))
|
||||
{
|
||||
NVSWITCH_PRINT(device, INFO,
|
||||
"INFOROM is not supported when TNVL mode is enabled\n");
|
||||
return NV_FALSE;
|
||||
}
|
||||
|
||||
if (!nvswitch_is_soe_supported(device))
|
||||
{
|
||||
NVSWITCH_PRINT(device, INFO,
|
||||
@@ -4637,7 +4623,14 @@ nvswitch_eng_wr_ls10
|
||||
return;
|
||||
}
|
||||
|
||||
nvswitch_reg_write_32(device, base_addr + offset, data);
|
||||
if (nvswitch_is_tnvl_mode_enabled(device))
|
||||
{
|
||||
nvswitch_tnvl_reg_wr_32_ls10(device, eng_id, eng_bcast, eng_instance, base_addr, offset, data);
|
||||
}
|
||||
else
|
||||
{
|
||||
nvswitch_reg_write_32(device, base_addr + offset, data);
|
||||
}
|
||||
|
||||
#if defined(DEVELOP) || defined(DEBUG) || defined(NV_MODS)
|
||||
{
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2020-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2020-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@@ -666,6 +666,76 @@ nvswitch_soe_issue_ingress_stop_ls10
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
/*
|
||||
* @Brief : Perform register writes in SOE during TNVL
|
||||
*
|
||||
* @param[in] device
|
||||
* @param[in] offset
|
||||
* @param[in] data
|
||||
*/
|
||||
NvlStatus
|
||||
nvswitch_soe_reg_wr_32_ls10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
NvU32 offset,
|
||||
NvU32 data
|
||||
)
|
||||
{
|
||||
FLCN *pFlcn;
|
||||
NvU32 cmdSeqDesc = 0;
|
||||
NV_STATUS status;
|
||||
RM_FLCN_CMD_SOE cmd;
|
||||
NVSWITCH_TIMEOUT timeout;
|
||||
RM_SOE_TNVL_CMD_REGISTER_WRITE *pRegisterWrite;
|
||||
NVSWITCH_GET_BIOS_INFO_PARAMS params = { 0 };
|
||||
|
||||
if (!nvswitch_is_soe_supported(device))
|
||||
{
|
||||
NVSWITCH_PRINT(device, INFO,
|
||||
"%s: SOE is not supported\n",
|
||||
__FUNCTION__);
|
||||
return NVL_SUCCESS; // -NVL_ERR_NOT_SUPPORTED
|
||||
}
|
||||
|
||||
status = device->hal.nvswitch_ctrl_get_bios_info(device, ¶ms);
|
||||
if ((status != NVL_SUCCESS) || ((params.version & SOE_VBIOS_VERSION_MASK) <
|
||||
SOE_VBIOS_REVLOCK_ISSUE_REGISTER_WRITE))
|
||||
{
|
||||
nvswitch_reg_write_32(device, offset, data);
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
pFlcn = device->pSoe->pFlcn;
|
||||
|
||||
nvswitch_os_memset(&cmd, 0, sizeof(cmd));
|
||||
|
||||
cmd.hdr.unitId = RM_SOE_UNIT_TNVL;
|
||||
cmd.hdr.size = RM_SOE_CMD_SIZE(TNVL, REGISTER_WRITE);
|
||||
|
||||
pRegisterWrite = &cmd.cmd.tnvl.registerWrite;
|
||||
pRegisterWrite->cmdType = RM_SOE_TNVL_CMD_ISSUE_REGISTER_WRITE;
|
||||
pRegisterWrite->offset = offset;
|
||||
pRegisterWrite->data = data;
|
||||
|
||||
nvswitch_timeout_create(NVSWITCH_INTERVAL_5MSEC_IN_NS, &timeout);
|
||||
status = flcnQueueCmdPostBlocking(device, pFlcn,
|
||||
(PRM_FLCN_CMD)&cmd,
|
||||
NULL, // pMsg
|
||||
NULL, // pPayload
|
||||
SOE_RM_CMDQ_LOG_ID,
|
||||
&cmdSeqDesc,
|
||||
&timeout);
|
||||
if (status != NV_OK)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
"%s: Failed to send REGISTER_WRITE command to SOE, offset = 0x%x, data = 0x%x\n",
|
||||
__FUNCTION__, offset, data);
|
||||
return -NVL_ERR_GENERIC;
|
||||
}
|
||||
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
/*
|
||||
* @Brief : Init sequence for SOE FSP RISCV image
|
||||
*
|
||||
@@ -716,14 +786,21 @@ nvswitch_init_soe_ls10
|
||||
}
|
||||
|
||||
// Register SOE callbacks
|
||||
status = nvswitch_soe_register_event_callbacks(device);
|
||||
if (status != NVL_SUCCESS)
|
||||
if (!nvswitch_is_tnvl_mode_enabled(device))
|
||||
{
|
||||
NVSWITCH_PRINT_SXID(device, NVSWITCH_ERR_HW_SOE_COMMAND_QUEUE,
|
||||
"Failed to register SOE events\n");
|
||||
NVSWITCH_PRINT_SXID(device, NVSWITCH_ERR_HW_SOE_BOOTSTRAP,
|
||||
"SOE init failed(2)\n");
|
||||
return status;
|
||||
status = nvswitch_soe_register_event_callbacks(device);
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
NVSWITCH_PRINT_SXID(device, NVSWITCH_ERR_HW_SOE_COMMAND_QUEUE,
|
||||
"Failed to register SOE events\n");
|
||||
NVSWITCH_PRINT_SXID(device, NVSWITCH_ERR_HW_SOE_BOOTSTRAP,
|
||||
"SOE init failed(2)\n");
|
||||
return status;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
NVSWITCH_PRINT(device, INFO, "Skipping registering SOE callbacks since TNVL is enabled\n");
|
||||
}
|
||||
|
||||
// Sanity the command and message queues as a final check
|
||||
@@ -1470,6 +1547,71 @@ _soeI2CAccess_LS10
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* @Brief : Send TNVL Pre Lock command to SOE
|
||||
*
|
||||
* @param[in] device
|
||||
*/
|
||||
NvlStatus
|
||||
nvswitch_send_tnvl_prelock_cmd_ls10
|
||||
(
|
||||
nvswitch_device *device
|
||||
)
|
||||
{
|
||||
FLCN *pFlcn;
|
||||
NvU32 cmdSeqDesc = 0;
|
||||
NV_STATUS status;
|
||||
RM_FLCN_CMD_SOE cmd;
|
||||
NVSWITCH_TIMEOUT timeout;
|
||||
RM_SOE_TNVL_CMD_PRE_LOCK_SEQUENCE *pTnvlPreLock;
|
||||
NVSWITCH_GET_BIOS_INFO_PARAMS params = { 0 };
|
||||
|
||||
if (!nvswitch_is_soe_supported(device))
|
||||
{
|
||||
NVSWITCH_PRINT(device, INFO, "%s: SOE is not supported\n",
|
||||
__FUNCTION__);
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
status = device->hal.nvswitch_ctrl_get_bios_info(device, ¶ms);
|
||||
if ((status != NVL_SUCCESS) || ((params.version & SOE_VBIOS_VERSION_MASK) <
|
||||
SOE_VBIOS_REVLOCK_TNVL_PRELOCK_COMMAND))
|
||||
{
|
||||
NVSWITCH_PRINT(device, INFO,
|
||||
"%s: Skipping TNVL_CMD_PRE_LOCK_SEQUENCE command to SOE. Update firmware "
|
||||
"from .%02X to .%02X\n",
|
||||
__FUNCTION__, (NvU32)((params.version & SOE_VBIOS_VERSION_MASK) >> 16),
|
||||
SOE_VBIOS_REVLOCK_TNVL_PRELOCK_COMMAND);
|
||||
return -NVL_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
pFlcn = device->pSoe->pFlcn;
|
||||
|
||||
nvswitch_os_memset(&cmd, 0, sizeof(cmd));
|
||||
cmd.hdr.unitId = RM_SOE_UNIT_TNVL;
|
||||
cmd.hdr.size = RM_SOE_CMD_SIZE(TNVL, PRE_LOCK_SEQUENCE);
|
||||
|
||||
pTnvlPreLock = &cmd.cmd.tnvl.preLockSequence;
|
||||
pTnvlPreLock->cmdType = RM_SOE_TNVL_CMD_ISSUE_PRE_LOCK_SEQUENCE;
|
||||
|
||||
nvswitch_timeout_create(NVSWITCH_INTERVAL_5MSEC_IN_NS, &timeout);
|
||||
status = flcnQueueCmdPostBlocking(device, pFlcn,
|
||||
(PRM_FLCN_CMD)&cmd,
|
||||
NULL, // pMsg
|
||||
NULL, // pPayload
|
||||
SOE_RM_CMDQ_LOG_ID,
|
||||
&cmdSeqDesc,
|
||||
&timeout);
|
||||
if (status != NV_OK)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR, "%s: Failed to send PRE_LOCK_SEQUENCE command to SOE, status 0x%x\n",
|
||||
__FUNCTION__, status);
|
||||
return -NVL_ERR_GENERIC;
|
||||
}
|
||||
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief set hal function pointers for functions defined in LR10 (i.e. this file)
|
||||
*
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2023-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@@ -26,9 +26,12 @@
|
||||
#include "common_nvswitch.h"
|
||||
#include "haldef_nvswitch.h"
|
||||
#include "ls10/ls10.h"
|
||||
#include "ls10/soe_ls10.h"
|
||||
|
||||
#include "nvswitch/ls10/dev_nvlsaw_ip.h"
|
||||
#include "nvswitch/ls10/dev_nvlsaw_ip_addendum.h"
|
||||
#include "nvswitch/ls10/dev_ctrl_ip.h"
|
||||
#include "nvswitch/ls10/dev_ctrl_ip_addendum.h"
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
@@ -639,6 +642,7 @@ _nvswitch_tnvl_get_cert_chain_from_fsp_ls10
|
||||
NvlStatus status;
|
||||
TNVL_GET_ATT_CERTS_CMD_PAYLOAD *pCmdPayload = nvswitch_os_malloc(sizeof(TNVL_GET_ATT_CERTS_CMD_PAYLOAD));
|
||||
TNVL_GET_ATT_CERTS_RSP_PAYLOAD *pRspPayload = nvswitch_os_malloc(sizeof(TNVL_GET_ATT_CERTS_RSP_PAYLOAD));
|
||||
NVSWITCH_TIMEOUT timeout;
|
||||
|
||||
if (pCmdPayload == NULL || pRspPayload == NULL)
|
||||
{
|
||||
@@ -653,9 +657,11 @@ _nvswitch_tnvl_get_cert_chain_from_fsp_ls10
|
||||
pCmdPayload->minorVersion = 0;
|
||||
pCmdPayload->majorVersion = 1;
|
||||
|
||||
nvswitch_timeout_create(5 * NVSWITCH_INTERVAL_1SEC_IN_NS, &timeout);
|
||||
|
||||
status = nvswitch_fsp_send_and_read_message(device,
|
||||
(NvU8*) pCmdPayload, sizeof(TNVL_GET_ATT_CERTS_CMD_PAYLOAD), NVDM_TYPE_TNVL,
|
||||
(NvU8*) pRspPayload, sizeof(TNVL_GET_ATT_CERTS_RSP_PAYLOAD));
|
||||
(NvU8*) pRspPayload, sizeof(TNVL_GET_ATT_CERTS_RSP_PAYLOAD), &timeout);
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
@@ -762,6 +768,10 @@ nvswitch_tnvl_get_attestation_certificate_chain_ls10
|
||||
goto ErrorExit;
|
||||
}
|
||||
|
||||
certChainLength = certChainLength -
|
||||
NVSWITCH_IK_HASH_LENGTH -
|
||||
NVSWITCH_ATT_CERT_SIZE_FIELD_LENGTH -
|
||||
NVSWITCH_ATT_RSVD1_FIELD_LENGTH;
|
||||
//
|
||||
// pCertChainBufferEnd represents last valid byte for cert buffer.
|
||||
//
|
||||
@@ -865,6 +875,7 @@ nvswitch_tnvl_get_attestation_report_ls10
|
||||
NvlStatus status;
|
||||
TNVL_GET_ATT_REPORT_CMD_PAYLOAD *pCmdPayload;
|
||||
TNVL_GET_ATT_REPORT_RSP_PAYLOAD *pRspPayload;
|
||||
NVSWITCH_TIMEOUT timeout;
|
||||
|
||||
if (!nvswitch_is_tnvl_mode_enabled(device))
|
||||
{
|
||||
@@ -892,9 +903,11 @@ nvswitch_tnvl_get_attestation_report_ls10
|
||||
pCmdPayload->majorVersion = 1;
|
||||
nvswitch_os_memcpy(pCmdPayload->nonce, params->nonce, NVSWITCH_NONCE_SIZE);
|
||||
|
||||
nvswitch_timeout_create(10 * NVSWITCH_INTERVAL_1SEC_IN_NS, &timeout);
|
||||
|
||||
status = nvswitch_fsp_send_and_read_message(device,
|
||||
(NvU8*) pCmdPayload, sizeof(TNVL_GET_ATT_REPORT_CMD_PAYLOAD), NVDM_TYPE_TNVL,
|
||||
(NvU8*) pRspPayload, sizeof(TNVL_GET_ATT_REPORT_RSP_PAYLOAD));
|
||||
(NvU8*) pRspPayload, sizeof(TNVL_GET_ATT_REPORT_RSP_PAYLOAD), &timeout);
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
@@ -937,6 +950,9 @@ nvswitch_detect_tnvl_mode_ls10
|
||||
val = NVSWITCH_SAW_RD32_LS10(device, _NVLSAW, _TNVL_MODE);
|
||||
if (FLD_TEST_DRF(_NVLSAW, _TNVL_MODE, _STATUS, _ENABLED, val))
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
"%s: TNVL Mode Detected\n",
|
||||
__FUNCTION__);
|
||||
device->tnvl_mode = NVSWITCH_DEVICE_TNVL_MODE_ENABLED;
|
||||
}
|
||||
|
||||
@@ -970,6 +986,7 @@ nvswitch_tnvl_send_fsp_lock_config_ls10
|
||||
NvlStatus status;
|
||||
TNVL_LOCK_CONFIG_CMD_PAYLOAD *pCmdPayload;
|
||||
TNVL_LOCK_CONFIG_RSP_PAYLOAD *pRspPayload;
|
||||
NVSWITCH_TIMEOUT timeout;
|
||||
|
||||
if (!nvswitch_is_tnvl_mode_enabled(device))
|
||||
{
|
||||
@@ -995,9 +1012,11 @@ nvswitch_tnvl_send_fsp_lock_config_ls10
|
||||
pCmdPayload->minorVersion = 0;
|
||||
pCmdPayload->majorVersion = 1;
|
||||
|
||||
nvswitch_timeout_create(5 * NVSWITCH_INTERVAL_1SEC_IN_NS, &timeout);
|
||||
|
||||
status = nvswitch_fsp_send_and_read_message(device,
|
||||
(NvU8*) pCmdPayload, sizeof(TNVL_LOCK_CONFIG_CMD_PAYLOAD), NVDM_TYPE_TNVL,
|
||||
(NvU8*) pRspPayload, sizeof(TNVL_LOCK_CONFIG_RSP_PAYLOAD));
|
||||
(NvU8*) pRspPayload, sizeof(TNVL_LOCK_CONFIG_RSP_PAYLOAD), &timeout);
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
@@ -1035,3 +1054,100 @@ nvswitch_tnvl_get_status_ls10
|
||||
params->status = device->tnvl_mode;
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
static NvBool
|
||||
_nvswitch_reg_cpu_write_allow_list_ls10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
NVSWITCH_ENGINE_ID eng_id,
|
||||
NvU32 offset
|
||||
)
|
||||
{
|
||||
switch (eng_id)
|
||||
{
|
||||
case NVSWITCH_ENGINE_ID_SOE:
|
||||
case NVSWITCH_ENGINE_ID_GIN:
|
||||
case NVSWITCH_ENGINE_ID_FSP:
|
||||
return NV_TRUE;
|
||||
case NVSWITCH_ENGINE_ID_SAW:
|
||||
if (offset == NV_NVLSAW_DRIVER_ATTACH_DETACH)
|
||||
return NV_TRUE;
|
||||
default :
|
||||
return NV_FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nvswitch_tnvl_reg_wr_32_ls10
|
||||
(
|
||||
nvswitch_device *device,
|
||||
NVSWITCH_ENGINE_ID eng_id,
|
||||
NvU32 eng_bcast,
|
||||
NvU32 eng_instance,
|
||||
NvU32 base_addr,
|
||||
NvU32 offset,
|
||||
NvU32 data
|
||||
)
|
||||
{
|
||||
if (!nvswitch_is_tnvl_mode_enabled(device))
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
"%s: TNVL mode is not enabled\n",
|
||||
__FUNCTION__);
|
||||
NVSWITCH_ASSERT(0);
|
||||
return;
|
||||
}
|
||||
|
||||
if (nvswitch_is_tnvl_mode_locked(device))
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
"%s: TNVL mode is locked\n",
|
||||
__FUNCTION__);
|
||||
NVSWITCH_ASSERT(0);
|
||||
return;
|
||||
}
|
||||
|
||||
if (_nvswitch_reg_cpu_write_allow_list_ls10(device, eng_id, offset))
|
||||
{
|
||||
nvswitch_reg_write_32(device, base_addr + offset, data);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (nvswitch_soe_reg_wr_32_ls10(device, base_addr + offset, data) != NVL_SUCCESS)
|
||||
{
|
||||
NVSWITCH_PRINT(device, ERROR,
|
||||
"%s: SOE ENG_WR failed for 0x%x[%d] %s @0x%08x+0x%06x = 0x%08x\n",
|
||||
__FUNCTION__,
|
||||
eng_id, eng_instance,
|
||||
(
|
||||
(eng_bcast == NVSWITCH_GET_ENG_DESC_TYPE_UNICAST) ? "UC" :
|
||||
(eng_bcast == NVSWITCH_GET_ENG_DESC_TYPE_BCAST) ? "BC" :
|
||||
(eng_bcast == NVSWITCH_GET_ENG_DESC_TYPE_MULTICAST) ? "MC" :
|
||||
"??"
|
||||
),
|
||||
base_addr, offset, data);
|
||||
NVSWITCH_ASSERT(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nvswitch_tnvl_disable_interrupts_ls10
|
||||
(
|
||||
nvswitch_device *device
|
||||
)
|
||||
{
|
||||
//
|
||||
// In TNVL locked disable non-fatal NVLW, NPG, and legacy interrupt,
|
||||
// disable additional non-fatals on those partitions.
|
||||
//
|
||||
NVSWITCH_ENG_WR32(device, GIN, , 0, _CTRL, _CPU_INTR_LEAF_EN_CLEAR(NV_CTRL_CPU_INTR_NVLW_NON_FATAL_IDX),
|
||||
0xFFFF);
|
||||
|
||||
NVSWITCH_ENG_WR32(device, GIN, , 0, _CTRL, _CPU_INTR_LEAF_EN_CLEAR(NV_CTRL_CPU_INTR_NPG_NON_FATAL_IDX),
|
||||
0xFFFF);
|
||||
|
||||
NVSWITCH_ENG_WR32(device, GIN, , 0, _CTRL, _CPU_INTR_LEAF_EN_CLEAR(NV_CTRL_CPU_INTR_UNITS_IDX),
|
||||
0xFFFFFFFF);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user