1 /* 2 * SPDX-FileCopyrightText: Copyright (c) 2022-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. 3 * SPDX-License-Identifier: MIT 4 * 5 * Permission is hereby granted, free of charge, to any person obtaining a 6 * copy of this software and associated documentation files (the "Software"), 7 * to deal in the Software without restriction, including without limitation 8 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 9 * and/or sell copies of the Software, and to permit persons to whom the 10 * Software is furnished to do so, subject to the following conditions: 11 * 12 * The above copyright notice and this permission notice shall be included in 13 * all copies or substantial portions of the Software. 14 * 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 21 * DEALINGS IN THE SOFTWARE. 22 */ 23 24 #include "nvtypes.h" 25 26 #ifndef _clcba2_h_ 27 #define _clcba2_h_ 28 29 #ifdef __cplusplus 30 extern "C" { 31 #endif 32 33 #define HOPPER_SEC2_WORK_LAUNCH_A (0x0000CBA2) 34 35 typedef volatile struct _clcba2_tag0 { 36 NvV32 Reserved00[0x100]; 37 NvV32 DecryptCopySrcAddrHi; // 0x00000400 - 0x00000403 38 NvV32 DecryptCopySrcAddrLo; // 0x00000404 - 0x00000407 39 NvV32 DecryptCopyDstAddrHi; // 0x00000408 - 0x0000040B 40 NvV32 DecryptCopyDstAddrLo; // 0x0000040c - 0x0000040F 41 NvU32 DecryptCopySize; // 0x00000410 - 0x00000413 42 NvU32 DecryptCopyAuthTagAddrHi; // 0x00000414 - 0x00000417 43 NvU32 DecryptCopyAuthTagAddrLo; // 0x00000418 - 0x0000041B 44 NvV32 DigestAddrHi; // 0x0000041C - 0x0000041F 45 NvV32 DigestAddrLo; // 0x00000420 - 0x00000423 46 NvV32 Reserved01[0x7]; 47 NvV32 SemaphoreA; // 0x00000440 - 0x00000443 48 NvV32 SemaphoreB; // 0x00000444 - 0x00000447 49 NvV32 SemaphoreSetPayloadLower; // 0x00000448 - 0x0000044B 50 NvV32 SemaphoreSetPayloadUppper; // 0x0000044C - 0x0000044F 51 NvV32 SemaphoreD; // 0x00000450 - 0x00000453 52 NvU32 Reserved02[0x7]; 53 NvV32 Execute; // 0x00000470 - 0x00000473 54 NvV32 Reserved03[0x23]; 55 } NVCBA2_HOPPER_SEC2_WORK_LAUNCH_AControlPio; 56 57 #define NVCBA2_DECRYPT_COPY_SRC_ADDR_HI (0x00000400) 58 #define NVCBA2_DECRYPT_COPY_SRC_ADDR_HI_DATA 24:0 59 #define NVCBA2_DECRYPT_COPY_SRC_ADDR_LO (0x00000404) 60 #define NVCBA2_DECRYPT_COPY_SRC_ADDR_LO_DATA 31:4 61 #define NVCBA2_DECRYPT_COPY_DST_ADDR_HI (0x00000408) 62 #define NVCBA2_DECRYPT_COPY_DST_ADDR_HI_DATA 24:0 63 #define NVCBA2_DECRYPT_COPY_DST_ADDR_LO (0x0000040c) 64 #define NVCBA2_DECRYPT_COPY_DST_ADDR_LO_DATA 31:4 65 #define NVCBA2_DECRYPT_COPY_SIZE (0x00000410) 66 #define NVCBA2_DECRYPT_COPY_SIZE_DATA 31:2 67 #define NVCBA2_DECRYPT_COPY_AUTH_TAG_ADDR_HI (0x00000414) 68 #define NVCBA2_DECRYPT_COPY_AUTH_TAG_ADDR_HI_DATA 24:0 69 #define NVCBA2_DECRYPT_COPY_AUTH_TAG_ADDR_LO (0x00000418) 70 #define NVCBA2_DECRYPT_COPY_AUTH_TAG_ADDR_LO_DATA 31:4 71 #define NVCBA2_METHOD_STREAM_AUTH_TAG_ADDR_HI (0x0000041C) 72 #define NVCBA2_METHOD_STREAM_AUTH_TAG_ADDR_HI_DATA 24:0 73 #define NVCBA2_METHOD_STREAM_AUTH_TAG_ADDR_LO (0x00000420) 74 #define NVCBA2_METHOD_STREAM_AUTH_TAG_ADDR_LO_DATA 31:4 75 #define NVCBA2_SEMAPHORE_A (0x00000440) 76 #define NVCBA2_SEMAPHORE_A_UPPER 24:0 77 #define NVCBA2_SEMAPHORE_B (0x00000444) 78 #define NVCBA2_SEMAPHORE_B_LOWER 31:2 79 #define NVCBA2_SET_SEMAPHORE_PAYLOAD_LOWER (0x00000448) 80 #define NVCBA2_SET_SEMAPHORE_PAYLOAD_LOWER_DATA 31:0 81 #define NVCBA2_SET_SEMAPHORE_PAYLOAD_UPPER (0x0000044C) 82 #define NVCBA2_SET_SEMAPHORE_PAYLOAD_UPPER_DATA 31:0 83 #define NVCBA2_SEMAPHORE_D (0x00000450) 84 #define NVCBA2_SEMAPHORE_D_NOTIFY_INTR 0:0 85 #define NVCBA2_SEMAPHORE_D_NOTIFY_INTR_DISABLE (0x00000000) 86 #define NVCBA2_SEMAPHORE_D_NOTIFY_INTR_ENABLE (0x00000001) 87 #define NVCBA2_SEMAPHORE_D_PAYLOAD_SIZE 1:1 88 #define NVCBA2_SEMAPHORE_D_PAYLOAD_SIZE_32_BIT (0x00000000) 89 #define NVCBA2_SEMAPHORE_D_PAYLOAD_SIZE_64_BIT (0x00000001) 90 #define NVCBA2_SEMAPHORE_D_TIMESTAMP 2:2 91 #define NVCBA2_SEMAPHORE_D_TIMESTAMP_DISABLE (0x00000000) 92 #define NVCBA2_SEMAPHORE_D_TIMESTAMP_ENABLE (0x00000001) 93 #define NVCBA2_SEMAPHORE_D_FLUSH_DISABLE 3:3 94 #define NVCBA2_SEMAPHORE_D_FLUSH_DISABLE_FALSE (0x00000000) 95 #define NVCBA2_SEMAPHORE_D_FLUSH_DISABLE_TRUE (0x00000001) 96 #define NVCBA2_EXECUTE (0x00000470) 97 #define NVCBA2_EXECUTE_NOTIFY 0:0 98 #define NVCBA2_EXECUTE_NOTIFY_DISABLE (0x00000000) 99 #define NVCBA2_EXECUTE_NOTIFY_ENABLE (0x00000001) 100 #define NVCBA2_EXECUTE_NOTIFY_ON 1:1 101 #define NVCBA2_EXECUTE_NOTIFY_ON_END (0x00000000) 102 #define NVCBA2_EXECUTE_NOTIFY_ON_BEGIN (0x00000001) 103 #define NVCBA2_EXECUTE_FLUSH_DISABLE 2:2 104 #define NVCBA2_EXECUTE_FLUSH_DISABLE_FALSE (0x00000000) 105 #define NVCBA2_EXECUTE_FLUSH_DISABLE_TRUE (0x00000001) 106 #define NVCBA2_EXECUTE_NOTIFY_INTR 3:3 107 #define NVCBA2_EXECUTE_NOTIFY_INTR_DISABLE (0x00000000) 108 #define NVCBA2_EXECUTE_NOTIFY_INTR_ENABLE (0x00000001) 109 #define NVCBA2_EXECUTE_PAYLOAD_SIZE 4:4 110 #define NVCBA2_EXECUTE_PAYLOAD_SIZE_32_BIT (0x00000000) 111 #define NVCBA2_EXECUTE_PAYLOAD_SIZE_64_BIT (0x00000001) 112 #define NVCBA2_EXECUTE_TIMESTAMP 5:5 113 #define NVCBA2_EXECUTE_TIMESTAMP_DISABLE (0x00000000) 114 #define NVCBA2_EXECUTE_TIMESTAMP_ENABLE (0x00000001) 115 #define NVCBA2_EXECUTE_PHYSICAL_SCRUBBER 6:6 116 #define NVCBA2_EXECUTE_PHYSICAL_SCRUBBER_DISABLE (0x00000000) 117 #define NVCBA2_EXECUTE_PHYSICAL_SCRUBBER_ENABLE (0x00000001) 118 119 // Class definitions 120 #define NVCBA2_DECRYPT_COPY_SIZE_MAX_BYTES (2*1024*1024) 121 122 // Errors 123 #define NVCBA2_ERROR_NONE (0x00000000) 124 #define NVCBA2_ERROR_DECRYPT_COPY_SRC_ADDR_MISALIGNED_POINTER (0x00000001) 125 #define NVCBA2_ERROR_DECRYPT_COPY_DEST_ADDR_MISALIGNED_POINTER (0x00000002) 126 #define NVCBA2_ERROR_DECRYPT_COPY_AUTH_TAG_ADDR_MISALIGNED_POINTER (0x00000003) 127 #define NVCBA2_ERROR_DECRYPT_COPY_DMA_NACK (0x00000004) 128 #define NVCBA2_ERROR_DECRYPT_COPY_AUTH_TAG_MISMATCH (0x00000005) 129 #define NVCBA2_ERROR_METHOD_STREAM_AUTH_TAG_ADDR_MISALIGNED_POINTER (0x00000006) 130 #define NVCBA2_ERROR_METHOD_STREAM_AUTH_TAG_ADDR_DMA_NACK (0x00000007) 131 #define NVCBA2_ERROR_METHOD_STREAM_AUTH_TAG_CHECK_FAILURE (0x00000008) 132 #define NVCBA2_ERROR_MISALIGNED_SIZE (0x00000009) 133 #define NVCBA2_ERROR_MISSING_METHODS (0x0000000A) 134 #define NVCBA2_ERROR_SEMAPHORE_RELEASE_DMA_NACK (0x0000000B) 135 #define NVCBA2_ERROR_DECRYPT_SIZE_MAX_EXCEEDED (0x0000000C) 136 #define NVCBA2_ERROR_OS_APPLICATION (0x0000000D) 137 #define NVCBA2_ERROR_INVALID_CTXSW_REQUEST (0x0000000E) 138 #define NVCBA2_ERROR_BUFFER_OVERFLOW (0x0000000F) 139 #define NVCBA2_ERROR_IV_OVERFLOW (0x00000010) 140 #define NVCBA2_ERROR_INTERNAL_SETUP_FAILURE (0x00000011) 141 #define NVCBA2_ERROR_DECRYPT_COPY_INTERNAL_DMA_FAILURE (0x00000012) 142 #define NVCBA2_ERROR_METHOD_STREAM_AUTH_TAG_ADDR_INTERNAL_DMA_FAILURE (0x00000013) 143 #define NVCBA2_ERROR_METHOD_STREAM_AUTH_TAG_HMAC_CALC_FAILURE (0x00000014) 144 #define NVCBA2_ERROR_NONCE_OVERFLOW (0x00000015) 145 #define NVCBA2_ERROR_AES_GCM_DECRYPTION_FAILURE (0x00000016) 146 #define NVCBA2_ERROR_SEMAPHORE_RELEASE_INTERNAL_DMA_FAILURE (0x00000017) 147 #define NVCBA2_ERROR_KEY_DERIVATION_FAILURE (0x00000018) 148 #define NVCBA2_ERROR_SCRUBBER_FAILURE (0x00000019) 149 #define NVCBA2_ERROR_SCRUBBER_INVALD_ADDRESS (0x0000001a) 150 #define NVCBA2_ERROR_SCRUBBER_INSUFFICIENT_PERMISSIONS (0x0000001b) 151 #define NVCBA2_ERROR_SCRUBBER_MUTEX_ACQUIRE_FAILURE (0x0000001c) 152 153 #ifdef __cplusplus 154 }; /* extern "C" */ 155 #endif 156 #endif // _clcba2_h 157