mirror of
https://github.com/NVIDIA/open-gpu-kernel-modules.git
synced 2025-02-07 23:54:14 +01:00
159 lines
12 KiB
C
159 lines
12 KiB
C
/*
|
|
* SPDX-FileCopyrightText: Copyright (c) 2022-2023 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.
|
|
*/
|
|
|
|
#include "nvtypes.h"
|
|
|
|
#ifndef _clcba2_h_
|
|
#define _clcba2_h_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define HOPPER_SEC2_WORK_LAUNCH_A (0x0000CBA2)
|
|
|
|
typedef volatile struct _clcba2_tag0 {
|
|
NvV32 Reserved00[0x100];
|
|
NvV32 DecryptCopySrcAddrHi; // 0x00000400 - 0x00000403
|
|
NvV32 DecryptCopySrcAddrLo; // 0x00000404 - 0x00000407
|
|
NvV32 DecryptCopyDstAddrHi; // 0x00000408 - 0x0000040B
|
|
NvV32 DecryptCopyDstAddrLo; // 0x0000040c - 0x0000040F
|
|
NvU32 DecryptCopySize; // 0x00000410 - 0x00000413
|
|
NvU32 DecryptCopyAuthTagAddrHi; // 0x00000414 - 0x00000417
|
|
NvU32 DecryptCopyAuthTagAddrLo; // 0x00000418 - 0x0000041B
|
|
NvV32 DigestAddrHi; // 0x0000041C - 0x0000041F
|
|
NvV32 DigestAddrLo; // 0x00000420 - 0x00000423
|
|
NvV32 Reserved01[0x7];
|
|
NvV32 SemaphoreA; // 0x00000440 - 0x00000443
|
|
NvV32 SemaphoreB; // 0x00000444 - 0x00000447
|
|
NvV32 SemaphoreSetPayloadLower; // 0x00000448 - 0x0000044B
|
|
NvV32 SemaphoreSetPayloadUppper; // 0x0000044C - 0x0000044F
|
|
NvV32 SemaphoreD; // 0x00000450 - 0x00000453
|
|
NvU32 Reserved02[0x7];
|
|
NvV32 Execute; // 0x00000470 - 0x00000473
|
|
NvV32 Reserved03[0x23];
|
|
} NVCBA2_HOPPER_SEC2_WORK_LAUNCH_AControlPio;
|
|
|
|
#define NVCBA2_DECRYPT_COPY_SRC_ADDR_HI (0x00000400)
|
|
#define NVCBA2_DECRYPT_COPY_SRC_ADDR_HI_DATA 24:0
|
|
#define NVCBA2_DECRYPT_COPY_SRC_ADDR_LO (0x00000404)
|
|
#define NVCBA2_DECRYPT_COPY_SRC_ADDR_LO_DATA 31:4
|
|
#define NVCBA2_DECRYPT_COPY_DST_ADDR_HI (0x00000408)
|
|
#define NVCBA2_DECRYPT_COPY_DST_ADDR_HI_DATA 24:0
|
|
#define NVCBA2_DECRYPT_COPY_DST_ADDR_LO (0x0000040c)
|
|
#define NVCBA2_DECRYPT_COPY_DST_ADDR_LO_DATA 31:4
|
|
#define NVCBA2_DECRYPT_COPY_SIZE (0x00000410)
|
|
#define NVCBA2_DECRYPT_COPY_SIZE_DATA 31:2
|
|
#define NVCBA2_DECRYPT_COPY_AUTH_TAG_ADDR_HI (0x00000414)
|
|
#define NVCBA2_DECRYPT_COPY_AUTH_TAG_ADDR_HI_DATA 24:0
|
|
#define NVCBA2_DECRYPT_COPY_AUTH_TAG_ADDR_LO (0x00000418)
|
|
#define NVCBA2_DECRYPT_COPY_AUTH_TAG_ADDR_LO_DATA 31:4
|
|
#define NVCBA2_METHOD_STREAM_AUTH_TAG_ADDR_HI (0x0000041C)
|
|
#define NVCBA2_METHOD_STREAM_AUTH_TAG_ADDR_HI_DATA 24:0
|
|
#define NVCBA2_METHOD_STREAM_AUTH_TAG_ADDR_LO (0x00000420)
|
|
#define NVCBA2_METHOD_STREAM_AUTH_TAG_ADDR_LO_DATA 31:4
|
|
#define NVCBA2_SEMAPHORE_A (0x00000440)
|
|
#define NVCBA2_SEMAPHORE_A_UPPER 24:0
|
|
#define NVCBA2_SEMAPHORE_B (0x00000444)
|
|
#define NVCBA2_SEMAPHORE_B_LOWER 31:2
|
|
#define NVCBA2_SET_SEMAPHORE_PAYLOAD_LOWER (0x00000448)
|
|
#define NVCBA2_SET_SEMAPHORE_PAYLOAD_LOWER_DATA 31:0
|
|
#define NVCBA2_SET_SEMAPHORE_PAYLOAD_UPPER (0x0000044C)
|
|
#define NVCBA2_SET_SEMAPHORE_PAYLOAD_UPPER_DATA 31:0
|
|
#define NVCBA2_SEMAPHORE_D (0x00000450)
|
|
#define NVCBA2_SEMAPHORE_D_NOTIFY_INTR 0:0
|
|
#define NVCBA2_SEMAPHORE_D_NOTIFY_INTR_DISABLE (0x00000000)
|
|
#define NVCBA2_SEMAPHORE_D_NOTIFY_INTR_ENABLE (0x00000001)
|
|
#define NVCBA2_SEMAPHORE_D_PAYLOAD_SIZE 1:1
|
|
#define NVCBA2_SEMAPHORE_D_PAYLOAD_SIZE_32_BIT (0x00000000)
|
|
#define NVCBA2_SEMAPHORE_D_PAYLOAD_SIZE_64_BIT (0x00000001)
|
|
#define NVCBA2_SEMAPHORE_D_TIMESTAMP 2:2
|
|
#define NVCBA2_SEMAPHORE_D_TIMESTAMP_DISABLE (0x00000000)
|
|
#define NVCBA2_SEMAPHORE_D_TIMESTAMP_ENABLE (0x00000001)
|
|
#define NVCBA2_SEMAPHORE_D_FLUSH_DISABLE 3:3
|
|
#define NVCBA2_SEMAPHORE_D_FLUSH_DISABLE_FALSE (0x00000000)
|
|
#define NVCBA2_SEMAPHORE_D_FLUSH_DISABLE_TRUE (0x00000001)
|
|
#define NVCBA2_EXECUTE (0x00000470)
|
|
#define NVCBA2_EXECUTE_NOTIFY 0:0
|
|
#define NVCBA2_EXECUTE_NOTIFY_DISABLE (0x00000000)
|
|
#define NVCBA2_EXECUTE_NOTIFY_ENABLE (0x00000001)
|
|
#define NVCBA2_EXECUTE_NOTIFY_ON 1:1
|
|
#define NVCBA2_EXECUTE_NOTIFY_ON_END (0x00000000)
|
|
#define NVCBA2_EXECUTE_NOTIFY_ON_BEGIN (0x00000001)
|
|
#define NVCBA2_EXECUTE_FLUSH_DISABLE 2:2
|
|
#define NVCBA2_EXECUTE_FLUSH_DISABLE_FALSE (0x00000000)
|
|
#define NVCBA2_EXECUTE_FLUSH_DISABLE_TRUE (0x00000001)
|
|
#define NVCBA2_EXECUTE_NOTIFY_INTR 3:3
|
|
#define NVCBA2_EXECUTE_NOTIFY_INTR_DISABLE (0x00000000)
|
|
#define NVCBA2_EXECUTE_NOTIFY_INTR_ENABLE (0x00000001)
|
|
#define NVCBA2_EXECUTE_PAYLOAD_SIZE 4:4
|
|
#define NVCBA2_EXECUTE_PAYLOAD_SIZE_32_BIT (0x00000000)
|
|
#define NVCBA2_EXECUTE_PAYLOAD_SIZE_64_BIT (0x00000001)
|
|
#define NVCBA2_EXECUTE_TIMESTAMP 5:5
|
|
#define NVCBA2_EXECUTE_TIMESTAMP_DISABLE (0x00000000)
|
|
#define NVCBA2_EXECUTE_TIMESTAMP_ENABLE (0x00000001)
|
|
#define NVCBA2_EXECUTE_PHYSICAL_SCRUBBER 6:6
|
|
#define NVCBA2_EXECUTE_PHYSICAL_SCRUBBER_DISABLE (0x00000000)
|
|
#define NVCBA2_EXECUTE_PHYSICAL_SCRUBBER_ENABLE (0x00000001)
|
|
|
|
// Class definitions
|
|
#define NVCBA2_DECRYPT_COPY_SIZE_MAX_BYTES (2*1024*1024)
|
|
#define NVCBA2_DECRYPT_SCRUB_SIZE_MAX_BYTES (1024*1024*1024)
|
|
|
|
// Errors
|
|
#define NVCBA2_ERROR_NONE (0x00000000)
|
|
#define NVCBA2_ERROR_DECRYPT_COPY_SRC_ADDR_MISALIGNED_POINTER (0x00000001)
|
|
#define NVCBA2_ERROR_DECRYPT_COPY_DEST_ADDR_MISALIGNED_POINTER (0x00000002)
|
|
#define NVCBA2_ERROR_DECRYPT_COPY_AUTH_TAG_ADDR_MISALIGNED_POINTER (0x00000003)
|
|
#define NVCBA2_ERROR_DECRYPT_COPY_DMA_NACK (0x00000004)
|
|
#define NVCBA2_ERROR_DECRYPT_COPY_AUTH_TAG_MISMATCH (0x00000005)
|
|
#define NVCBA2_ERROR_METHOD_STREAM_AUTH_TAG_ADDR_MISALIGNED_POINTER (0x00000006)
|
|
#define NVCBA2_ERROR_METHOD_STREAM_AUTH_TAG_ADDR_DMA_NACK (0x00000007)
|
|
#define NVCBA2_ERROR_METHOD_STREAM_AUTH_TAG_CHECK_FAILURE (0x00000008)
|
|
#define NVCBA2_ERROR_MISALIGNED_SIZE (0x00000009)
|
|
#define NVCBA2_ERROR_MISSING_METHODS (0x0000000A)
|
|
#define NVCBA2_ERROR_SEMAPHORE_RELEASE_DMA_NACK (0x0000000B)
|
|
#define NVCBA2_ERROR_DECRYPT_SIZE_MAX_EXCEEDED (0x0000000C)
|
|
#define NVCBA2_ERROR_OS_APPLICATION (0x0000000D)
|
|
#define NVCBA2_ERROR_INVALID_CTXSW_REQUEST (0x0000000E)
|
|
#define NVCBA2_ERROR_BUFFER_OVERFLOW (0x0000000F)
|
|
#define NVCBA2_ERROR_IV_OVERFLOW (0x00000010)
|
|
#define NVCBA2_ERROR_INTERNAL_SETUP_FAILURE (0x00000011)
|
|
#define NVCBA2_ERROR_DECRYPT_COPY_INTERNAL_DMA_FAILURE (0x00000012)
|
|
#define NVCBA2_ERROR_METHOD_STREAM_AUTH_TAG_ADDR_INTERNAL_DMA_FAILURE (0x00000013)
|
|
#define NVCBA2_ERROR_METHOD_STREAM_AUTH_TAG_HMAC_CALC_FAILURE (0x00000014)
|
|
#define NVCBA2_ERROR_NONCE_OVERFLOW (0x00000015)
|
|
#define NVCBA2_ERROR_AES_GCM_DECRYPTION_FAILURE (0x00000016)
|
|
#define NVCBA2_ERROR_SEMAPHORE_RELEASE_INTERNAL_DMA_FAILURE (0x00000017)
|
|
#define NVCBA2_ERROR_KEY_DERIVATION_FAILURE (0x00000018)
|
|
#define NVCBA2_ERROR_SCRUBBER_FAILURE (0x00000019)
|
|
#define NVCBA2_ERROR_SCRUBBER_INVALD_ADDRESS (0x0000001a)
|
|
#define NVCBA2_ERROR_SCRUBBER_INSUFFICIENT_PERMISSIONS (0x0000001b)
|
|
#define NVCBA2_ERROR_SCRUBBER_MUTEX_ACQUIRE_FAILURE (0x0000001c)
|
|
#define NVCBA2_ERROR_SCRUB_SIZE_MAX_EXCEEDED (0x0000001d)
|
|
|
|
#ifdef __cplusplus
|
|
}; /* extern "C" */
|
|
#endif
|
|
#endif // _clcba2_h
|