0001
0002
0003
0004
0005
0006
0007
0008 #ifndef HABANALABS_H_
0009 #define HABANALABS_H_
0010
0011 #include <linux/types.h>
0012 #include <linux/ioctl.h>
0013
0014
0015
0016
0017
0018 #define GOYA_KMD_SRAM_RESERVED_SIZE_FROM_START 0x8000
0019 #define GAUDI_DRIVER_SRAM_RESERVED_SIZE_FROM_START 0x80
0020
0021
0022
0023
0024
0025 #define GAUDI_FIRST_AVAILABLE_W_S_SYNC_OBJECT 144
0026
0027
0028
0029
0030
0031 #define GAUDI_FIRST_AVAILABLE_W_S_MONITOR 72
0032
0033
0034 #define TS_MAX_ELEMENTS_NUM (1 << 20)
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045 enum goya_queue_id {
0046 GOYA_QUEUE_ID_DMA_0 = 0,
0047 GOYA_QUEUE_ID_DMA_1 = 1,
0048 GOYA_QUEUE_ID_DMA_2 = 2,
0049 GOYA_QUEUE_ID_DMA_3 = 3,
0050 GOYA_QUEUE_ID_DMA_4 = 4,
0051 GOYA_QUEUE_ID_CPU_PQ = 5,
0052 GOYA_QUEUE_ID_MME = 6,
0053 GOYA_QUEUE_ID_TPC0 = 7,
0054 GOYA_QUEUE_ID_TPC1 = 8,
0055 GOYA_QUEUE_ID_TPC2 = 9,
0056 GOYA_QUEUE_ID_TPC3 = 10,
0057 GOYA_QUEUE_ID_TPC4 = 11,
0058 GOYA_QUEUE_ID_TPC5 = 12,
0059 GOYA_QUEUE_ID_TPC6 = 13,
0060 GOYA_QUEUE_ID_TPC7 = 14,
0061 GOYA_QUEUE_ID_SIZE
0062 };
0063
0064
0065
0066
0067
0068
0069
0070 enum gaudi_queue_id {
0071 GAUDI_QUEUE_ID_DMA_0_0 = 0,
0072 GAUDI_QUEUE_ID_DMA_0_1 = 1,
0073 GAUDI_QUEUE_ID_DMA_0_2 = 2,
0074 GAUDI_QUEUE_ID_DMA_0_3 = 3,
0075 GAUDI_QUEUE_ID_DMA_1_0 = 4,
0076 GAUDI_QUEUE_ID_DMA_1_1 = 5,
0077 GAUDI_QUEUE_ID_DMA_1_2 = 6,
0078 GAUDI_QUEUE_ID_DMA_1_3 = 7,
0079 GAUDI_QUEUE_ID_CPU_PQ = 8,
0080 GAUDI_QUEUE_ID_DMA_2_0 = 9,
0081 GAUDI_QUEUE_ID_DMA_2_1 = 10,
0082 GAUDI_QUEUE_ID_DMA_2_2 = 11,
0083 GAUDI_QUEUE_ID_DMA_2_3 = 12,
0084 GAUDI_QUEUE_ID_DMA_3_0 = 13,
0085 GAUDI_QUEUE_ID_DMA_3_1 = 14,
0086 GAUDI_QUEUE_ID_DMA_3_2 = 15,
0087 GAUDI_QUEUE_ID_DMA_3_3 = 16,
0088 GAUDI_QUEUE_ID_DMA_4_0 = 17,
0089 GAUDI_QUEUE_ID_DMA_4_1 = 18,
0090 GAUDI_QUEUE_ID_DMA_4_2 = 19,
0091 GAUDI_QUEUE_ID_DMA_4_3 = 20,
0092 GAUDI_QUEUE_ID_DMA_5_0 = 21,
0093 GAUDI_QUEUE_ID_DMA_5_1 = 22,
0094 GAUDI_QUEUE_ID_DMA_5_2 = 23,
0095 GAUDI_QUEUE_ID_DMA_5_3 = 24,
0096 GAUDI_QUEUE_ID_DMA_6_0 = 25,
0097 GAUDI_QUEUE_ID_DMA_6_1 = 26,
0098 GAUDI_QUEUE_ID_DMA_6_2 = 27,
0099 GAUDI_QUEUE_ID_DMA_6_3 = 28,
0100 GAUDI_QUEUE_ID_DMA_7_0 = 29,
0101 GAUDI_QUEUE_ID_DMA_7_1 = 30,
0102 GAUDI_QUEUE_ID_DMA_7_2 = 31,
0103 GAUDI_QUEUE_ID_DMA_7_3 = 32,
0104 GAUDI_QUEUE_ID_MME_0_0 = 33,
0105 GAUDI_QUEUE_ID_MME_0_1 = 34,
0106 GAUDI_QUEUE_ID_MME_0_2 = 35,
0107 GAUDI_QUEUE_ID_MME_0_3 = 36,
0108 GAUDI_QUEUE_ID_MME_1_0 = 37,
0109 GAUDI_QUEUE_ID_MME_1_1 = 38,
0110 GAUDI_QUEUE_ID_MME_1_2 = 39,
0111 GAUDI_QUEUE_ID_MME_1_3 = 40,
0112 GAUDI_QUEUE_ID_TPC_0_0 = 41,
0113 GAUDI_QUEUE_ID_TPC_0_1 = 42,
0114 GAUDI_QUEUE_ID_TPC_0_2 = 43,
0115 GAUDI_QUEUE_ID_TPC_0_3 = 44,
0116 GAUDI_QUEUE_ID_TPC_1_0 = 45,
0117 GAUDI_QUEUE_ID_TPC_1_1 = 46,
0118 GAUDI_QUEUE_ID_TPC_1_2 = 47,
0119 GAUDI_QUEUE_ID_TPC_1_3 = 48,
0120 GAUDI_QUEUE_ID_TPC_2_0 = 49,
0121 GAUDI_QUEUE_ID_TPC_2_1 = 50,
0122 GAUDI_QUEUE_ID_TPC_2_2 = 51,
0123 GAUDI_QUEUE_ID_TPC_2_3 = 52,
0124 GAUDI_QUEUE_ID_TPC_3_0 = 53,
0125 GAUDI_QUEUE_ID_TPC_3_1 = 54,
0126 GAUDI_QUEUE_ID_TPC_3_2 = 55,
0127 GAUDI_QUEUE_ID_TPC_3_3 = 56,
0128 GAUDI_QUEUE_ID_TPC_4_0 = 57,
0129 GAUDI_QUEUE_ID_TPC_4_1 = 58,
0130 GAUDI_QUEUE_ID_TPC_4_2 = 59,
0131 GAUDI_QUEUE_ID_TPC_4_3 = 60,
0132 GAUDI_QUEUE_ID_TPC_5_0 = 61,
0133 GAUDI_QUEUE_ID_TPC_5_1 = 62,
0134 GAUDI_QUEUE_ID_TPC_5_2 = 63,
0135 GAUDI_QUEUE_ID_TPC_5_3 = 64,
0136 GAUDI_QUEUE_ID_TPC_6_0 = 65,
0137 GAUDI_QUEUE_ID_TPC_6_1 = 66,
0138 GAUDI_QUEUE_ID_TPC_6_2 = 67,
0139 GAUDI_QUEUE_ID_TPC_6_3 = 68,
0140 GAUDI_QUEUE_ID_TPC_7_0 = 69,
0141 GAUDI_QUEUE_ID_TPC_7_1 = 70,
0142 GAUDI_QUEUE_ID_TPC_7_2 = 71,
0143 GAUDI_QUEUE_ID_TPC_7_3 = 72,
0144 GAUDI_QUEUE_ID_NIC_0_0 = 73,
0145 GAUDI_QUEUE_ID_NIC_0_1 = 74,
0146 GAUDI_QUEUE_ID_NIC_0_2 = 75,
0147 GAUDI_QUEUE_ID_NIC_0_3 = 76,
0148 GAUDI_QUEUE_ID_NIC_1_0 = 77,
0149 GAUDI_QUEUE_ID_NIC_1_1 = 78,
0150 GAUDI_QUEUE_ID_NIC_1_2 = 79,
0151 GAUDI_QUEUE_ID_NIC_1_3 = 80,
0152 GAUDI_QUEUE_ID_NIC_2_0 = 81,
0153 GAUDI_QUEUE_ID_NIC_2_1 = 82,
0154 GAUDI_QUEUE_ID_NIC_2_2 = 83,
0155 GAUDI_QUEUE_ID_NIC_2_3 = 84,
0156 GAUDI_QUEUE_ID_NIC_3_0 = 85,
0157 GAUDI_QUEUE_ID_NIC_3_1 = 86,
0158 GAUDI_QUEUE_ID_NIC_3_2 = 87,
0159 GAUDI_QUEUE_ID_NIC_3_3 = 88,
0160 GAUDI_QUEUE_ID_NIC_4_0 = 89,
0161 GAUDI_QUEUE_ID_NIC_4_1 = 90,
0162 GAUDI_QUEUE_ID_NIC_4_2 = 91,
0163 GAUDI_QUEUE_ID_NIC_4_3 = 92,
0164 GAUDI_QUEUE_ID_NIC_5_0 = 93,
0165 GAUDI_QUEUE_ID_NIC_5_1 = 94,
0166 GAUDI_QUEUE_ID_NIC_5_2 = 95,
0167 GAUDI_QUEUE_ID_NIC_5_3 = 96,
0168 GAUDI_QUEUE_ID_NIC_6_0 = 97,
0169 GAUDI_QUEUE_ID_NIC_6_1 = 98,
0170 GAUDI_QUEUE_ID_NIC_6_2 = 99,
0171 GAUDI_QUEUE_ID_NIC_6_3 = 100,
0172 GAUDI_QUEUE_ID_NIC_7_0 = 101,
0173 GAUDI_QUEUE_ID_NIC_7_1 = 102,
0174 GAUDI_QUEUE_ID_NIC_7_2 = 103,
0175 GAUDI_QUEUE_ID_NIC_7_3 = 104,
0176 GAUDI_QUEUE_ID_NIC_8_0 = 105,
0177 GAUDI_QUEUE_ID_NIC_8_1 = 106,
0178 GAUDI_QUEUE_ID_NIC_8_2 = 107,
0179 GAUDI_QUEUE_ID_NIC_8_3 = 108,
0180 GAUDI_QUEUE_ID_NIC_9_0 = 109,
0181 GAUDI_QUEUE_ID_NIC_9_1 = 110,
0182 GAUDI_QUEUE_ID_NIC_9_2 = 111,
0183 GAUDI_QUEUE_ID_NIC_9_3 = 112,
0184 GAUDI_QUEUE_ID_SIZE
0185 };
0186
0187
0188
0189
0190
0191
0192
0193
0194
0195
0196
0197
0198
0199
0200
0201 enum gaudi2_queue_id {
0202 GAUDI2_QUEUE_ID_PDMA_0_0 = 0,
0203 GAUDI2_QUEUE_ID_PDMA_0_1 = 1,
0204 GAUDI2_QUEUE_ID_PDMA_0_2 = 2,
0205 GAUDI2_QUEUE_ID_PDMA_0_3 = 3,
0206 GAUDI2_QUEUE_ID_PDMA_1_0 = 4,
0207 GAUDI2_QUEUE_ID_PDMA_1_1 = 5,
0208 GAUDI2_QUEUE_ID_PDMA_1_2 = 6,
0209 GAUDI2_QUEUE_ID_PDMA_1_3 = 7,
0210 GAUDI2_QUEUE_ID_DCORE0_EDMA_0_0 = 8,
0211 GAUDI2_QUEUE_ID_DCORE0_EDMA_0_1 = 9,
0212 GAUDI2_QUEUE_ID_DCORE0_EDMA_0_2 = 10,
0213 GAUDI2_QUEUE_ID_DCORE0_EDMA_0_3 = 11,
0214 GAUDI2_QUEUE_ID_DCORE0_EDMA_1_0 = 12,
0215 GAUDI2_QUEUE_ID_DCORE0_EDMA_1_1 = 13,
0216 GAUDI2_QUEUE_ID_DCORE0_EDMA_1_2 = 14,
0217 GAUDI2_QUEUE_ID_DCORE0_EDMA_1_3 = 15,
0218 GAUDI2_QUEUE_ID_DCORE0_MME_0_0 = 16,
0219 GAUDI2_QUEUE_ID_DCORE0_MME_0_1 = 17,
0220 GAUDI2_QUEUE_ID_DCORE0_MME_0_2 = 18,
0221 GAUDI2_QUEUE_ID_DCORE0_MME_0_3 = 19,
0222 GAUDI2_QUEUE_ID_DCORE0_TPC_0_0 = 20,
0223 GAUDI2_QUEUE_ID_DCORE0_TPC_0_1 = 21,
0224 GAUDI2_QUEUE_ID_DCORE0_TPC_0_2 = 22,
0225 GAUDI2_QUEUE_ID_DCORE0_TPC_0_3 = 23,
0226 GAUDI2_QUEUE_ID_DCORE0_TPC_1_0 = 24,
0227 GAUDI2_QUEUE_ID_DCORE0_TPC_1_1 = 25,
0228 GAUDI2_QUEUE_ID_DCORE0_TPC_1_2 = 26,
0229 GAUDI2_QUEUE_ID_DCORE0_TPC_1_3 = 27,
0230 GAUDI2_QUEUE_ID_DCORE0_TPC_2_0 = 28,
0231 GAUDI2_QUEUE_ID_DCORE0_TPC_2_1 = 29,
0232 GAUDI2_QUEUE_ID_DCORE0_TPC_2_2 = 30,
0233 GAUDI2_QUEUE_ID_DCORE0_TPC_2_3 = 31,
0234 GAUDI2_QUEUE_ID_DCORE0_TPC_3_0 = 32,
0235 GAUDI2_QUEUE_ID_DCORE0_TPC_3_1 = 33,
0236 GAUDI2_QUEUE_ID_DCORE0_TPC_3_2 = 34,
0237 GAUDI2_QUEUE_ID_DCORE0_TPC_3_3 = 35,
0238 GAUDI2_QUEUE_ID_DCORE0_TPC_4_0 = 36,
0239 GAUDI2_QUEUE_ID_DCORE0_TPC_4_1 = 37,
0240 GAUDI2_QUEUE_ID_DCORE0_TPC_4_2 = 38,
0241 GAUDI2_QUEUE_ID_DCORE0_TPC_4_3 = 39,
0242 GAUDI2_QUEUE_ID_DCORE0_TPC_5_0 = 40,
0243 GAUDI2_QUEUE_ID_DCORE0_TPC_5_1 = 41,
0244 GAUDI2_QUEUE_ID_DCORE0_TPC_5_2 = 42,
0245 GAUDI2_QUEUE_ID_DCORE0_TPC_5_3 = 43,
0246 GAUDI2_QUEUE_ID_DCORE0_TPC_6_0 = 44,
0247 GAUDI2_QUEUE_ID_DCORE0_TPC_6_1 = 45,
0248 GAUDI2_QUEUE_ID_DCORE0_TPC_6_2 = 46,
0249 GAUDI2_QUEUE_ID_DCORE0_TPC_6_3 = 47,
0250 GAUDI2_QUEUE_ID_DCORE1_EDMA_0_0 = 48,
0251 GAUDI2_QUEUE_ID_DCORE1_EDMA_0_1 = 49,
0252 GAUDI2_QUEUE_ID_DCORE1_EDMA_0_2 = 50,
0253 GAUDI2_QUEUE_ID_DCORE1_EDMA_0_3 = 51,
0254 GAUDI2_QUEUE_ID_DCORE1_EDMA_1_0 = 52,
0255 GAUDI2_QUEUE_ID_DCORE1_EDMA_1_1 = 53,
0256 GAUDI2_QUEUE_ID_DCORE1_EDMA_1_2 = 54,
0257 GAUDI2_QUEUE_ID_DCORE1_EDMA_1_3 = 55,
0258 GAUDI2_QUEUE_ID_DCORE1_MME_0_0 = 56,
0259 GAUDI2_QUEUE_ID_DCORE1_MME_0_1 = 57,
0260 GAUDI2_QUEUE_ID_DCORE1_MME_0_2 = 58,
0261 GAUDI2_QUEUE_ID_DCORE1_MME_0_3 = 59,
0262 GAUDI2_QUEUE_ID_DCORE1_TPC_0_0 = 60,
0263 GAUDI2_QUEUE_ID_DCORE1_TPC_0_1 = 61,
0264 GAUDI2_QUEUE_ID_DCORE1_TPC_0_2 = 62,
0265 GAUDI2_QUEUE_ID_DCORE1_TPC_0_3 = 63,
0266 GAUDI2_QUEUE_ID_DCORE1_TPC_1_0 = 64,
0267 GAUDI2_QUEUE_ID_DCORE1_TPC_1_1 = 65,
0268 GAUDI2_QUEUE_ID_DCORE1_TPC_1_2 = 66,
0269 GAUDI2_QUEUE_ID_DCORE1_TPC_1_3 = 67,
0270 GAUDI2_QUEUE_ID_DCORE1_TPC_2_0 = 68,
0271 GAUDI2_QUEUE_ID_DCORE1_TPC_2_1 = 69,
0272 GAUDI2_QUEUE_ID_DCORE1_TPC_2_2 = 70,
0273 GAUDI2_QUEUE_ID_DCORE1_TPC_2_3 = 71,
0274 GAUDI2_QUEUE_ID_DCORE1_TPC_3_0 = 72,
0275 GAUDI2_QUEUE_ID_DCORE1_TPC_3_1 = 73,
0276 GAUDI2_QUEUE_ID_DCORE1_TPC_3_2 = 74,
0277 GAUDI2_QUEUE_ID_DCORE1_TPC_3_3 = 75,
0278 GAUDI2_QUEUE_ID_DCORE1_TPC_4_0 = 76,
0279 GAUDI2_QUEUE_ID_DCORE1_TPC_4_1 = 77,
0280 GAUDI2_QUEUE_ID_DCORE1_TPC_4_2 = 78,
0281 GAUDI2_QUEUE_ID_DCORE1_TPC_4_3 = 79,
0282 GAUDI2_QUEUE_ID_DCORE1_TPC_5_0 = 80,
0283 GAUDI2_QUEUE_ID_DCORE1_TPC_5_1 = 81,
0284 GAUDI2_QUEUE_ID_DCORE1_TPC_5_2 = 82,
0285 GAUDI2_QUEUE_ID_DCORE1_TPC_5_3 = 83,
0286 GAUDI2_QUEUE_ID_DCORE2_EDMA_0_0 = 84,
0287 GAUDI2_QUEUE_ID_DCORE2_EDMA_0_1 = 85,
0288 GAUDI2_QUEUE_ID_DCORE2_EDMA_0_2 = 86,
0289 GAUDI2_QUEUE_ID_DCORE2_EDMA_0_3 = 87,
0290 GAUDI2_QUEUE_ID_DCORE2_EDMA_1_0 = 88,
0291 GAUDI2_QUEUE_ID_DCORE2_EDMA_1_1 = 89,
0292 GAUDI2_QUEUE_ID_DCORE2_EDMA_1_2 = 90,
0293 GAUDI2_QUEUE_ID_DCORE2_EDMA_1_3 = 91,
0294 GAUDI2_QUEUE_ID_DCORE2_MME_0_0 = 92,
0295 GAUDI2_QUEUE_ID_DCORE2_MME_0_1 = 93,
0296 GAUDI2_QUEUE_ID_DCORE2_MME_0_2 = 94,
0297 GAUDI2_QUEUE_ID_DCORE2_MME_0_3 = 95,
0298 GAUDI2_QUEUE_ID_DCORE2_TPC_0_0 = 96,
0299 GAUDI2_QUEUE_ID_DCORE2_TPC_0_1 = 97,
0300 GAUDI2_QUEUE_ID_DCORE2_TPC_0_2 = 98,
0301 GAUDI2_QUEUE_ID_DCORE2_TPC_0_3 = 99,
0302 GAUDI2_QUEUE_ID_DCORE2_TPC_1_0 = 100,
0303 GAUDI2_QUEUE_ID_DCORE2_TPC_1_1 = 101,
0304 GAUDI2_QUEUE_ID_DCORE2_TPC_1_2 = 102,
0305 GAUDI2_QUEUE_ID_DCORE2_TPC_1_3 = 103,
0306 GAUDI2_QUEUE_ID_DCORE2_TPC_2_0 = 104,
0307 GAUDI2_QUEUE_ID_DCORE2_TPC_2_1 = 105,
0308 GAUDI2_QUEUE_ID_DCORE2_TPC_2_2 = 106,
0309 GAUDI2_QUEUE_ID_DCORE2_TPC_2_3 = 107,
0310 GAUDI2_QUEUE_ID_DCORE2_TPC_3_0 = 108,
0311 GAUDI2_QUEUE_ID_DCORE2_TPC_3_1 = 109,
0312 GAUDI2_QUEUE_ID_DCORE2_TPC_3_2 = 110,
0313 GAUDI2_QUEUE_ID_DCORE2_TPC_3_3 = 111,
0314 GAUDI2_QUEUE_ID_DCORE2_TPC_4_0 = 112,
0315 GAUDI2_QUEUE_ID_DCORE2_TPC_4_1 = 113,
0316 GAUDI2_QUEUE_ID_DCORE2_TPC_4_2 = 114,
0317 GAUDI2_QUEUE_ID_DCORE2_TPC_4_3 = 115,
0318 GAUDI2_QUEUE_ID_DCORE2_TPC_5_0 = 116,
0319 GAUDI2_QUEUE_ID_DCORE2_TPC_5_1 = 117,
0320 GAUDI2_QUEUE_ID_DCORE2_TPC_5_2 = 118,
0321 GAUDI2_QUEUE_ID_DCORE2_TPC_5_3 = 119,
0322 GAUDI2_QUEUE_ID_DCORE3_EDMA_0_0 = 120,
0323 GAUDI2_QUEUE_ID_DCORE3_EDMA_0_1 = 121,
0324 GAUDI2_QUEUE_ID_DCORE3_EDMA_0_2 = 122,
0325 GAUDI2_QUEUE_ID_DCORE3_EDMA_0_3 = 123,
0326 GAUDI2_QUEUE_ID_DCORE3_EDMA_1_0 = 124,
0327 GAUDI2_QUEUE_ID_DCORE3_EDMA_1_1 = 125,
0328 GAUDI2_QUEUE_ID_DCORE3_EDMA_1_2 = 126,
0329 GAUDI2_QUEUE_ID_DCORE3_EDMA_1_3 = 127,
0330 GAUDI2_QUEUE_ID_DCORE3_MME_0_0 = 128,
0331 GAUDI2_QUEUE_ID_DCORE3_MME_0_1 = 129,
0332 GAUDI2_QUEUE_ID_DCORE3_MME_0_2 = 130,
0333 GAUDI2_QUEUE_ID_DCORE3_MME_0_3 = 131,
0334 GAUDI2_QUEUE_ID_DCORE3_TPC_0_0 = 132,
0335 GAUDI2_QUEUE_ID_DCORE3_TPC_0_1 = 133,
0336 GAUDI2_QUEUE_ID_DCORE3_TPC_0_2 = 134,
0337 GAUDI2_QUEUE_ID_DCORE3_TPC_0_3 = 135,
0338 GAUDI2_QUEUE_ID_DCORE3_TPC_1_0 = 136,
0339 GAUDI2_QUEUE_ID_DCORE3_TPC_1_1 = 137,
0340 GAUDI2_QUEUE_ID_DCORE3_TPC_1_2 = 138,
0341 GAUDI2_QUEUE_ID_DCORE3_TPC_1_3 = 139,
0342 GAUDI2_QUEUE_ID_DCORE3_TPC_2_0 = 140,
0343 GAUDI2_QUEUE_ID_DCORE3_TPC_2_1 = 141,
0344 GAUDI2_QUEUE_ID_DCORE3_TPC_2_2 = 142,
0345 GAUDI2_QUEUE_ID_DCORE3_TPC_2_3 = 143,
0346 GAUDI2_QUEUE_ID_DCORE3_TPC_3_0 = 144,
0347 GAUDI2_QUEUE_ID_DCORE3_TPC_3_1 = 145,
0348 GAUDI2_QUEUE_ID_DCORE3_TPC_3_2 = 146,
0349 GAUDI2_QUEUE_ID_DCORE3_TPC_3_3 = 147,
0350 GAUDI2_QUEUE_ID_DCORE3_TPC_4_0 = 148,
0351 GAUDI2_QUEUE_ID_DCORE3_TPC_4_1 = 149,
0352 GAUDI2_QUEUE_ID_DCORE3_TPC_4_2 = 150,
0353 GAUDI2_QUEUE_ID_DCORE3_TPC_4_3 = 151,
0354 GAUDI2_QUEUE_ID_DCORE3_TPC_5_0 = 152,
0355 GAUDI2_QUEUE_ID_DCORE3_TPC_5_1 = 153,
0356 GAUDI2_QUEUE_ID_DCORE3_TPC_5_2 = 154,
0357 GAUDI2_QUEUE_ID_DCORE3_TPC_5_3 = 155,
0358 GAUDI2_QUEUE_ID_NIC_0_0 = 156,
0359 GAUDI2_QUEUE_ID_NIC_0_1 = 157,
0360 GAUDI2_QUEUE_ID_NIC_0_2 = 158,
0361 GAUDI2_QUEUE_ID_NIC_0_3 = 159,
0362 GAUDI2_QUEUE_ID_NIC_1_0 = 160,
0363 GAUDI2_QUEUE_ID_NIC_1_1 = 161,
0364 GAUDI2_QUEUE_ID_NIC_1_2 = 162,
0365 GAUDI2_QUEUE_ID_NIC_1_3 = 163,
0366 GAUDI2_QUEUE_ID_NIC_2_0 = 164,
0367 GAUDI2_QUEUE_ID_NIC_2_1 = 165,
0368 GAUDI2_QUEUE_ID_NIC_2_2 = 166,
0369 GAUDI2_QUEUE_ID_NIC_2_3 = 167,
0370 GAUDI2_QUEUE_ID_NIC_3_0 = 168,
0371 GAUDI2_QUEUE_ID_NIC_3_1 = 169,
0372 GAUDI2_QUEUE_ID_NIC_3_2 = 170,
0373 GAUDI2_QUEUE_ID_NIC_3_3 = 171,
0374 GAUDI2_QUEUE_ID_NIC_4_0 = 172,
0375 GAUDI2_QUEUE_ID_NIC_4_1 = 173,
0376 GAUDI2_QUEUE_ID_NIC_4_2 = 174,
0377 GAUDI2_QUEUE_ID_NIC_4_3 = 175,
0378 GAUDI2_QUEUE_ID_NIC_5_0 = 176,
0379 GAUDI2_QUEUE_ID_NIC_5_1 = 177,
0380 GAUDI2_QUEUE_ID_NIC_5_2 = 178,
0381 GAUDI2_QUEUE_ID_NIC_5_3 = 179,
0382 GAUDI2_QUEUE_ID_NIC_6_0 = 180,
0383 GAUDI2_QUEUE_ID_NIC_6_1 = 181,
0384 GAUDI2_QUEUE_ID_NIC_6_2 = 182,
0385 GAUDI2_QUEUE_ID_NIC_6_3 = 183,
0386 GAUDI2_QUEUE_ID_NIC_7_0 = 184,
0387 GAUDI2_QUEUE_ID_NIC_7_1 = 185,
0388 GAUDI2_QUEUE_ID_NIC_7_2 = 186,
0389 GAUDI2_QUEUE_ID_NIC_7_3 = 187,
0390 GAUDI2_QUEUE_ID_NIC_8_0 = 188,
0391 GAUDI2_QUEUE_ID_NIC_8_1 = 189,
0392 GAUDI2_QUEUE_ID_NIC_8_2 = 190,
0393 GAUDI2_QUEUE_ID_NIC_8_3 = 191,
0394 GAUDI2_QUEUE_ID_NIC_9_0 = 192,
0395 GAUDI2_QUEUE_ID_NIC_9_1 = 193,
0396 GAUDI2_QUEUE_ID_NIC_9_2 = 194,
0397 GAUDI2_QUEUE_ID_NIC_9_3 = 195,
0398 GAUDI2_QUEUE_ID_NIC_10_0 = 196,
0399 GAUDI2_QUEUE_ID_NIC_10_1 = 197,
0400 GAUDI2_QUEUE_ID_NIC_10_2 = 198,
0401 GAUDI2_QUEUE_ID_NIC_10_3 = 199,
0402 GAUDI2_QUEUE_ID_NIC_11_0 = 200,
0403 GAUDI2_QUEUE_ID_NIC_11_1 = 201,
0404 GAUDI2_QUEUE_ID_NIC_11_2 = 202,
0405 GAUDI2_QUEUE_ID_NIC_11_3 = 203,
0406 GAUDI2_QUEUE_ID_NIC_12_0 = 204,
0407 GAUDI2_QUEUE_ID_NIC_12_1 = 205,
0408 GAUDI2_QUEUE_ID_NIC_12_2 = 206,
0409 GAUDI2_QUEUE_ID_NIC_12_3 = 207,
0410 GAUDI2_QUEUE_ID_NIC_13_0 = 208,
0411 GAUDI2_QUEUE_ID_NIC_13_1 = 209,
0412 GAUDI2_QUEUE_ID_NIC_13_2 = 210,
0413 GAUDI2_QUEUE_ID_NIC_13_3 = 211,
0414 GAUDI2_QUEUE_ID_NIC_14_0 = 212,
0415 GAUDI2_QUEUE_ID_NIC_14_1 = 213,
0416 GAUDI2_QUEUE_ID_NIC_14_2 = 214,
0417 GAUDI2_QUEUE_ID_NIC_14_3 = 215,
0418 GAUDI2_QUEUE_ID_NIC_15_0 = 216,
0419 GAUDI2_QUEUE_ID_NIC_15_1 = 217,
0420 GAUDI2_QUEUE_ID_NIC_15_2 = 218,
0421 GAUDI2_QUEUE_ID_NIC_15_3 = 219,
0422 GAUDI2_QUEUE_ID_NIC_16_0 = 220,
0423 GAUDI2_QUEUE_ID_NIC_16_1 = 221,
0424 GAUDI2_QUEUE_ID_NIC_16_2 = 222,
0425 GAUDI2_QUEUE_ID_NIC_16_3 = 223,
0426 GAUDI2_QUEUE_ID_NIC_17_0 = 224,
0427 GAUDI2_QUEUE_ID_NIC_17_1 = 225,
0428 GAUDI2_QUEUE_ID_NIC_17_2 = 226,
0429 GAUDI2_QUEUE_ID_NIC_17_3 = 227,
0430 GAUDI2_QUEUE_ID_NIC_18_0 = 228,
0431 GAUDI2_QUEUE_ID_NIC_18_1 = 229,
0432 GAUDI2_QUEUE_ID_NIC_18_2 = 230,
0433 GAUDI2_QUEUE_ID_NIC_18_3 = 231,
0434 GAUDI2_QUEUE_ID_NIC_19_0 = 232,
0435 GAUDI2_QUEUE_ID_NIC_19_1 = 233,
0436 GAUDI2_QUEUE_ID_NIC_19_2 = 234,
0437 GAUDI2_QUEUE_ID_NIC_19_3 = 235,
0438 GAUDI2_QUEUE_ID_NIC_20_0 = 236,
0439 GAUDI2_QUEUE_ID_NIC_20_1 = 237,
0440 GAUDI2_QUEUE_ID_NIC_20_2 = 238,
0441 GAUDI2_QUEUE_ID_NIC_20_3 = 239,
0442 GAUDI2_QUEUE_ID_NIC_21_0 = 240,
0443 GAUDI2_QUEUE_ID_NIC_21_1 = 241,
0444 GAUDI2_QUEUE_ID_NIC_21_2 = 242,
0445 GAUDI2_QUEUE_ID_NIC_21_3 = 243,
0446 GAUDI2_QUEUE_ID_NIC_22_0 = 244,
0447 GAUDI2_QUEUE_ID_NIC_22_1 = 245,
0448 GAUDI2_QUEUE_ID_NIC_22_2 = 246,
0449 GAUDI2_QUEUE_ID_NIC_22_3 = 247,
0450 GAUDI2_QUEUE_ID_NIC_23_0 = 248,
0451 GAUDI2_QUEUE_ID_NIC_23_1 = 249,
0452 GAUDI2_QUEUE_ID_NIC_23_2 = 250,
0453 GAUDI2_QUEUE_ID_NIC_23_3 = 251,
0454 GAUDI2_QUEUE_ID_ROT_0_0 = 252,
0455 GAUDI2_QUEUE_ID_ROT_0_1 = 253,
0456 GAUDI2_QUEUE_ID_ROT_0_2 = 254,
0457 GAUDI2_QUEUE_ID_ROT_0_3 = 255,
0458 GAUDI2_QUEUE_ID_ROT_1_0 = 256,
0459 GAUDI2_QUEUE_ID_ROT_1_1 = 257,
0460 GAUDI2_QUEUE_ID_ROT_1_2 = 258,
0461 GAUDI2_QUEUE_ID_ROT_1_3 = 259,
0462 GAUDI2_QUEUE_ID_CPU_PQ = 260,
0463 GAUDI2_QUEUE_ID_SIZE
0464 };
0465
0466
0467
0468
0469
0470
0471
0472 enum goya_engine_id {
0473 GOYA_ENGINE_ID_DMA_0 = 0,
0474 GOYA_ENGINE_ID_DMA_1,
0475 GOYA_ENGINE_ID_DMA_2,
0476 GOYA_ENGINE_ID_DMA_3,
0477 GOYA_ENGINE_ID_DMA_4,
0478 GOYA_ENGINE_ID_MME_0,
0479 GOYA_ENGINE_ID_TPC_0,
0480 GOYA_ENGINE_ID_TPC_1,
0481 GOYA_ENGINE_ID_TPC_2,
0482 GOYA_ENGINE_ID_TPC_3,
0483 GOYA_ENGINE_ID_TPC_4,
0484 GOYA_ENGINE_ID_TPC_5,
0485 GOYA_ENGINE_ID_TPC_6,
0486 GOYA_ENGINE_ID_TPC_7,
0487 GOYA_ENGINE_ID_SIZE
0488 };
0489
0490 enum gaudi_engine_id {
0491 GAUDI_ENGINE_ID_DMA_0 = 0,
0492 GAUDI_ENGINE_ID_DMA_1,
0493 GAUDI_ENGINE_ID_DMA_2,
0494 GAUDI_ENGINE_ID_DMA_3,
0495 GAUDI_ENGINE_ID_DMA_4,
0496 GAUDI_ENGINE_ID_DMA_5,
0497 GAUDI_ENGINE_ID_DMA_6,
0498 GAUDI_ENGINE_ID_DMA_7,
0499 GAUDI_ENGINE_ID_MME_0,
0500 GAUDI_ENGINE_ID_MME_1,
0501 GAUDI_ENGINE_ID_MME_2,
0502 GAUDI_ENGINE_ID_MME_3,
0503 GAUDI_ENGINE_ID_TPC_0,
0504 GAUDI_ENGINE_ID_TPC_1,
0505 GAUDI_ENGINE_ID_TPC_2,
0506 GAUDI_ENGINE_ID_TPC_3,
0507 GAUDI_ENGINE_ID_TPC_4,
0508 GAUDI_ENGINE_ID_TPC_5,
0509 GAUDI_ENGINE_ID_TPC_6,
0510 GAUDI_ENGINE_ID_TPC_7,
0511 GAUDI_ENGINE_ID_NIC_0,
0512 GAUDI_ENGINE_ID_NIC_1,
0513 GAUDI_ENGINE_ID_NIC_2,
0514 GAUDI_ENGINE_ID_NIC_3,
0515 GAUDI_ENGINE_ID_NIC_4,
0516 GAUDI_ENGINE_ID_NIC_5,
0517 GAUDI_ENGINE_ID_NIC_6,
0518 GAUDI_ENGINE_ID_NIC_7,
0519 GAUDI_ENGINE_ID_NIC_8,
0520 GAUDI_ENGINE_ID_NIC_9,
0521 GAUDI_ENGINE_ID_SIZE
0522 };
0523
0524 enum gaudi2_engine_id {
0525 GAUDI2_DCORE0_ENGINE_ID_EDMA_0 = 0,
0526 GAUDI2_DCORE0_ENGINE_ID_EDMA_1,
0527 GAUDI2_DCORE0_ENGINE_ID_MME,
0528 GAUDI2_DCORE0_ENGINE_ID_TPC_0,
0529 GAUDI2_DCORE0_ENGINE_ID_TPC_1,
0530 GAUDI2_DCORE0_ENGINE_ID_TPC_2,
0531 GAUDI2_DCORE0_ENGINE_ID_TPC_3,
0532 GAUDI2_DCORE0_ENGINE_ID_TPC_4,
0533 GAUDI2_DCORE0_ENGINE_ID_TPC_5,
0534 GAUDI2_DCORE0_ENGINE_ID_DEC_0,
0535 GAUDI2_DCORE0_ENGINE_ID_DEC_1,
0536 GAUDI2_DCORE1_ENGINE_ID_EDMA_0,
0537 GAUDI2_DCORE1_ENGINE_ID_EDMA_1,
0538 GAUDI2_DCORE1_ENGINE_ID_MME,
0539 GAUDI2_DCORE1_ENGINE_ID_TPC_0,
0540 GAUDI2_DCORE1_ENGINE_ID_TPC_1,
0541 GAUDI2_DCORE1_ENGINE_ID_TPC_2,
0542 GAUDI2_DCORE1_ENGINE_ID_TPC_3,
0543 GAUDI2_DCORE1_ENGINE_ID_TPC_4,
0544 GAUDI2_DCORE1_ENGINE_ID_TPC_5,
0545 GAUDI2_DCORE1_ENGINE_ID_DEC_0,
0546 GAUDI2_DCORE1_ENGINE_ID_DEC_1,
0547 GAUDI2_DCORE2_ENGINE_ID_EDMA_0,
0548 GAUDI2_DCORE2_ENGINE_ID_EDMA_1,
0549 GAUDI2_DCORE2_ENGINE_ID_MME,
0550 GAUDI2_DCORE2_ENGINE_ID_TPC_0,
0551 GAUDI2_DCORE2_ENGINE_ID_TPC_1,
0552 GAUDI2_DCORE2_ENGINE_ID_TPC_2,
0553 GAUDI2_DCORE2_ENGINE_ID_TPC_3,
0554 GAUDI2_DCORE2_ENGINE_ID_TPC_4,
0555 GAUDI2_DCORE2_ENGINE_ID_TPC_5,
0556 GAUDI2_DCORE2_ENGINE_ID_DEC_0,
0557 GAUDI2_DCORE2_ENGINE_ID_DEC_1,
0558 GAUDI2_DCORE3_ENGINE_ID_EDMA_0,
0559 GAUDI2_DCORE3_ENGINE_ID_EDMA_1,
0560 GAUDI2_DCORE3_ENGINE_ID_MME,
0561 GAUDI2_DCORE3_ENGINE_ID_TPC_0,
0562 GAUDI2_DCORE3_ENGINE_ID_TPC_1,
0563 GAUDI2_DCORE3_ENGINE_ID_TPC_2,
0564 GAUDI2_DCORE3_ENGINE_ID_TPC_3,
0565 GAUDI2_DCORE3_ENGINE_ID_TPC_4,
0566 GAUDI2_DCORE3_ENGINE_ID_TPC_5,
0567 GAUDI2_DCORE3_ENGINE_ID_DEC_0,
0568 GAUDI2_DCORE3_ENGINE_ID_DEC_1,
0569 GAUDI2_DCORE0_ENGINE_ID_TPC_6,
0570 GAUDI2_ENGINE_ID_PDMA_0,
0571 GAUDI2_ENGINE_ID_PDMA_1,
0572 GAUDI2_ENGINE_ID_ROT_0,
0573 GAUDI2_ENGINE_ID_ROT_1,
0574 GAUDI2_PCIE_ENGINE_ID_DEC_0,
0575 GAUDI2_PCIE_ENGINE_ID_DEC_1,
0576 GAUDI2_ENGINE_ID_NIC0_0,
0577 GAUDI2_ENGINE_ID_NIC0_1,
0578 GAUDI2_ENGINE_ID_NIC1_0,
0579 GAUDI2_ENGINE_ID_NIC1_1,
0580 GAUDI2_ENGINE_ID_NIC2_0,
0581 GAUDI2_ENGINE_ID_NIC2_1,
0582 GAUDI2_ENGINE_ID_NIC3_0,
0583 GAUDI2_ENGINE_ID_NIC3_1,
0584 GAUDI2_ENGINE_ID_NIC4_0,
0585 GAUDI2_ENGINE_ID_NIC4_1,
0586 GAUDI2_ENGINE_ID_NIC5_0,
0587 GAUDI2_ENGINE_ID_NIC5_1,
0588 GAUDI2_ENGINE_ID_NIC6_0,
0589 GAUDI2_ENGINE_ID_NIC6_1,
0590 GAUDI2_ENGINE_ID_NIC7_0,
0591 GAUDI2_ENGINE_ID_NIC7_1,
0592 GAUDI2_ENGINE_ID_NIC8_0,
0593 GAUDI2_ENGINE_ID_NIC8_1,
0594 GAUDI2_ENGINE_ID_NIC9_0,
0595 GAUDI2_ENGINE_ID_NIC9_1,
0596 GAUDI2_ENGINE_ID_NIC10_0,
0597 GAUDI2_ENGINE_ID_NIC10_1,
0598 GAUDI2_ENGINE_ID_NIC11_0,
0599 GAUDI2_ENGINE_ID_NIC11_1,
0600 GAUDI2_ENGINE_ID_SIZE
0601 };
0602
0603
0604
0605
0606
0607
0608
0609
0610
0611 enum hl_goya_pll_index {
0612 HL_GOYA_CPU_PLL = 0,
0613 HL_GOYA_IC_PLL,
0614 HL_GOYA_MC_PLL,
0615 HL_GOYA_MME_PLL,
0616 HL_GOYA_PCI_PLL,
0617 HL_GOYA_EMMC_PLL,
0618 HL_GOYA_TPC_PLL,
0619 HL_GOYA_PLL_MAX
0620 };
0621
0622 enum hl_gaudi_pll_index {
0623 HL_GAUDI_CPU_PLL = 0,
0624 HL_GAUDI_PCI_PLL,
0625 HL_GAUDI_SRAM_PLL,
0626 HL_GAUDI_HBM_PLL,
0627 HL_GAUDI_NIC_PLL,
0628 HL_GAUDI_DMA_PLL,
0629 HL_GAUDI_MESH_PLL,
0630 HL_GAUDI_MME_PLL,
0631 HL_GAUDI_TPC_PLL,
0632 HL_GAUDI_IF_PLL,
0633 HL_GAUDI_PLL_MAX
0634 };
0635
0636 enum hl_gaudi2_pll_index {
0637 HL_GAUDI2_CPU_PLL = 0,
0638 HL_GAUDI2_PCI_PLL,
0639 HL_GAUDI2_SRAM_PLL,
0640 HL_GAUDI2_HBM_PLL,
0641 HL_GAUDI2_NIC_PLL,
0642 HL_GAUDI2_DMA_PLL,
0643 HL_GAUDI2_MESH_PLL,
0644 HL_GAUDI2_MME_PLL,
0645 HL_GAUDI2_TPC_PLL,
0646 HL_GAUDI2_IF_PLL,
0647 HL_GAUDI2_VID_PLL,
0648 HL_GAUDI2_MSS_PLL,
0649 HL_GAUDI2_PLL_MAX
0650 };
0651
0652
0653
0654
0655
0656
0657
0658
0659
0660
0661
0662
0663
0664
0665
0666
0667 enum hl_goya_dma_direction {
0668 HL_DMA_HOST_TO_DRAM,
0669 HL_DMA_HOST_TO_SRAM,
0670 HL_DMA_DRAM_TO_SRAM,
0671 HL_DMA_SRAM_TO_DRAM,
0672 HL_DMA_SRAM_TO_HOST,
0673 HL_DMA_DRAM_TO_HOST,
0674 HL_DMA_DRAM_TO_DRAM,
0675 HL_DMA_SRAM_TO_SRAM,
0676 HL_DMA_ENUM_MAX
0677 };
0678
0679
0680
0681
0682
0683
0684
0685
0686
0687
0688
0689
0690
0691 enum hl_device_status {
0692 HL_DEVICE_STATUS_OPERATIONAL,
0693 HL_DEVICE_STATUS_IN_RESET,
0694 HL_DEVICE_STATUS_MALFUNCTION,
0695 HL_DEVICE_STATUS_NEEDS_RESET,
0696 HL_DEVICE_STATUS_IN_DEVICE_CREATION,
0697 HL_DEVICE_STATUS_IN_RESET_AFTER_DEVICE_RELEASE,
0698 HL_DEVICE_STATUS_LAST = HL_DEVICE_STATUS_IN_RESET_AFTER_DEVICE_RELEASE
0699 };
0700
0701 enum hl_server_type {
0702 HL_SERVER_TYPE_UNKNOWN = 0,
0703 HL_SERVER_GAUDI_HLS1 = 1,
0704 HL_SERVER_GAUDI_HLS1H = 2,
0705 HL_SERVER_GAUDI_TYPE1 = 3,
0706 HL_SERVER_GAUDI_TYPE2 = 4,
0707 HL_SERVER_GAUDI2_HLS2 = 5
0708 };
0709
0710
0711
0712
0713
0714
0715
0716
0717
0718
0719
0720
0721
0722
0723
0724
0725
0726
0727
0728
0729
0730
0731
0732
0733
0734
0735
0736
0737
0738
0739
0740
0741
0742
0743
0744
0745
0746
0747
0748
0749
0750
0751
0752
0753
0754
0755
0756
0757
0758
0759
0760
0761
0762 #define HL_INFO_HW_IP_INFO 0
0763 #define HL_INFO_HW_EVENTS 1
0764 #define HL_INFO_DRAM_USAGE 2
0765 #define HL_INFO_HW_IDLE 3
0766 #define HL_INFO_DEVICE_STATUS 4
0767 #define HL_INFO_DEVICE_UTILIZATION 6
0768 #define HL_INFO_HW_EVENTS_AGGREGATE 7
0769 #define HL_INFO_CLK_RATE 8
0770 #define HL_INFO_RESET_COUNT 9
0771 #define HL_INFO_TIME_SYNC 10
0772 #define HL_INFO_CS_COUNTERS 11
0773 #define HL_INFO_PCI_COUNTERS 12
0774 #define HL_INFO_CLK_THROTTLE_REASON 13
0775 #define HL_INFO_SYNC_MANAGER 14
0776 #define HL_INFO_TOTAL_ENERGY 15
0777 #define HL_INFO_PLL_FREQUENCY 16
0778 #define HL_INFO_POWER 17
0779 #define HL_INFO_OPEN_STATS 18
0780 #define HL_INFO_DRAM_REPLACED_ROWS 21
0781 #define HL_INFO_DRAM_PENDING_ROWS 22
0782 #define HL_INFO_LAST_ERR_OPEN_DEV_TIME 23
0783 #define HL_INFO_CS_TIMEOUT_EVENT 24
0784 #define HL_INFO_RAZWI_EVENT 25
0785 #define HL_INFO_DEV_MEM_ALLOC_PAGE_SIZES 26
0786 #define HL_INFO_REGISTER_EVENTFD 28
0787 #define HL_INFO_UNREGISTER_EVENTFD 29
0788 #define HL_INFO_GET_EVENTS 30
0789 #define HL_INFO_UNDEFINED_OPCODE_EVENT 31
0790
0791 #define HL_INFO_VERSION_MAX_LEN 128
0792 #define HL_INFO_CARD_NAME_MAX_LEN 16
0793
0794
0795
0796
0797
0798
0799
0800
0801
0802
0803
0804
0805
0806
0807
0808
0809
0810
0811
0812
0813
0814
0815
0816
0817
0818
0819
0820
0821
0822
0823
0824
0825
0826
0827
0828
0829
0830
0831
0832
0833
0834
0835
0836
0837 struct hl_info_hw_ip_info {
0838 __u64 sram_base_address;
0839 __u64 dram_base_address;
0840 __u64 dram_size;
0841 __u32 sram_size;
0842 __u32 num_of_events;
0843 __u32 device_id;
0844 __u32 module_id;
0845 __u32 decoder_enabled_mask;
0846 __u16 first_available_interrupt_id;
0847 __u16 server_type;
0848 __u32 cpld_version;
0849 __u32 psoc_pci_pll_nr;
0850 __u32 psoc_pci_pll_nf;
0851 __u32 psoc_pci_pll_od;
0852 __u32 psoc_pci_pll_div_factor;
0853 __u8 tpc_enabled_mask;
0854 __u8 dram_enabled;
0855 __u8 reserved;
0856 __u8 mme_master_slave_mode;
0857 __u8 cpucp_version[HL_INFO_VERSION_MAX_LEN];
0858 __u8 card_name[HL_INFO_CARD_NAME_MAX_LEN];
0859 __u64 tpc_enabled_mask_ext;
0860 __u64 dram_page_size;
0861 __u32 edma_enabled_mask;
0862 __u16 number_of_user_interrupts;
0863 __u16 pad2;
0864 __u64 reserved4;
0865 __u64 device_mem_alloc_default_page_size;
0866 };
0867
0868 struct hl_info_dram_usage {
0869 __u64 dram_free_mem;
0870 __u64 ctx_dram_mem;
0871 };
0872
0873 #define HL_BUSY_ENGINES_MASK_EXT_SIZE 2
0874
0875 struct hl_info_hw_idle {
0876 __u32 is_idle;
0877
0878
0879
0880
0881 __u32 busy_engines_mask;
0882
0883
0884
0885
0886
0887 __u64 busy_engines_mask_ext[HL_BUSY_ENGINES_MASK_EXT_SIZE];
0888 };
0889
0890 struct hl_info_device_status {
0891 __u32 status;
0892 __u32 pad;
0893 };
0894
0895 struct hl_info_device_utilization {
0896 __u32 utilization;
0897 __u32 pad;
0898 };
0899
0900 struct hl_info_clk_rate {
0901 __u32 cur_clk_rate_mhz;
0902 __u32 max_clk_rate_mhz;
0903 };
0904
0905 struct hl_info_reset_count {
0906 __u32 hard_reset_cnt;
0907 __u32 soft_reset_cnt;
0908 };
0909
0910 struct hl_info_time_sync {
0911 __u64 device_time;
0912 __u64 host_time;
0913 };
0914
0915
0916
0917
0918
0919
0920
0921 struct hl_info_pci_counters {
0922 __u64 rx_throughput;
0923 __u64 tx_throughput;
0924 __u64 replay_cnt;
0925 };
0926
0927 enum hl_clk_throttling_type {
0928 HL_CLK_THROTTLE_TYPE_POWER,
0929 HL_CLK_THROTTLE_TYPE_THERMAL,
0930 HL_CLK_THROTTLE_TYPE_MAX
0931 };
0932
0933
0934 #define HL_CLK_THROTTLE_POWER (1 << HL_CLK_THROTTLE_TYPE_POWER)
0935 #define HL_CLK_THROTTLE_THERMAL (1 << HL_CLK_THROTTLE_TYPE_THERMAL)
0936
0937
0938
0939
0940
0941
0942
0943 struct hl_info_clk_throttle {
0944 __u32 clk_throttling_reason;
0945 __u32 pad;
0946 __u64 clk_throttling_timestamp_us[HL_CLK_THROTTLE_TYPE_MAX];
0947 __u64 clk_throttling_duration_ns[HL_CLK_THROTTLE_TYPE_MAX];
0948 };
0949
0950
0951
0952
0953
0954 struct hl_info_energy {
0955 __u64 total_energy_consumption;
0956 };
0957
0958 #define HL_PLL_NUM_OUTPUTS 4
0959
0960 struct hl_pll_frequency_info {
0961 __u16 output[HL_PLL_NUM_OUTPUTS];
0962 };
0963
0964
0965
0966
0967
0968
0969
0970
0971 struct hl_open_stats_info {
0972 __u64 open_counter;
0973 __u64 last_open_period_ms;
0974 __u8 is_compute_ctx_active;
0975 __u8 compute_ctx_in_release;
0976 __u8 pad[6];
0977 };
0978
0979
0980
0981
0982
0983 struct hl_power_info {
0984 __u64 power;
0985 };
0986
0987
0988
0989
0990
0991
0992
0993 struct hl_info_sync_manager {
0994 __u32 first_available_sync_object;
0995 __u32 first_available_monitor;
0996 __u32 first_available_cq;
0997 __u32 reserved;
0998 };
0999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015 struct hl_info_cs_counters {
1016 __u64 total_out_of_mem_drop_cnt;
1017 __u64 ctx_out_of_mem_drop_cnt;
1018 __u64 total_parsing_drop_cnt;
1019 __u64 ctx_parsing_drop_cnt;
1020 __u64 total_queue_full_drop_cnt;
1021 __u64 ctx_queue_full_drop_cnt;
1022 __u64 total_device_in_reset_drop_cnt;
1023 __u64 ctx_device_in_reset_drop_cnt;
1024 __u64 total_max_cs_in_flight_drop_cnt;
1025 __u64 ctx_max_cs_in_flight_drop_cnt;
1026 __u64 total_validation_drop_cnt;
1027 __u64 ctx_validation_drop_cnt;
1028 };
1029
1030
1031
1032
1033
1034 struct hl_info_last_err_open_dev_time {
1035 __s64 timestamp;
1036 };
1037
1038
1039
1040
1041
1042
1043 struct hl_info_cs_timeout_event {
1044 __s64 timestamp;
1045 __u64 seq;
1046 };
1047
1048 #define HL_RAZWI_PAGE_FAULT 0
1049 #define HL_RAZWI_MMU_ACCESS_ERROR 1
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065 struct hl_info_razwi_event {
1066 __s64 timestamp;
1067 __u64 addr;
1068 __u16 engine_id_1;
1069 __u16 engine_id_2;
1070 __u8 no_engine_id;
1071 __u8 error_type;
1072 __u8 pad[2];
1073 };
1074
1075 #define MAX_QMAN_STREAMS_INFO 4
1076 #define OPCODE_INFO_MAX_ADDR_SIZE 8
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093 struct hl_info_undefined_opcode_event {
1094 __s64 timestamp;
1095 __u64 cb_addr_streams[MAX_QMAN_STREAMS_INFO][OPCODE_INFO_MAX_ADDR_SIZE];
1096 __u64 cq_addr;
1097 __u32 cq_size;
1098 __u32 cb_addr_streams_len;
1099 __u32 engine_id;
1100 __u32 stream_id;
1101 };
1102
1103
1104
1105
1106
1107
1108 struct hl_info_dev_memalloc_page_sizes {
1109 __u64 page_order_bitmask;
1110 };
1111
1112 enum gaudi_dcores {
1113 HL_GAUDI_WS_DCORE,
1114 HL_GAUDI_WN_DCORE,
1115 HL_GAUDI_EN_DCORE,
1116 HL_GAUDI_ES_DCORE
1117 };
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135 struct hl_info_args {
1136 __u64 return_pointer;
1137 __u32 return_size;
1138 __u32 op;
1139
1140 union {
1141 __u32 dcore_id;
1142 __u32 ctx_id;
1143 __u32 period_ms;
1144 __u32 pll_index;
1145 __u32 eventfd;
1146 };
1147
1148 __u32 pad;
1149 };
1150
1151
1152 #define HL_CB_OP_CREATE 0
1153
1154 #define HL_CB_OP_DESTROY 1
1155
1156 #define HL_CB_OP_INFO 2
1157
1158
1159 #define HL_MAX_CB_SIZE (0x200000 - 32)
1160
1161
1162 #define HL_CB_FLAGS_MAP 0x1
1163
1164
1165 #define HL_CB_FLAGS_GET_DEVICE_VA 0x2
1166
1167 struct hl_cb_in {
1168
1169 __u64 cb_handle;
1170
1171 __u32 op;
1172
1173
1174
1175
1176 __u32 cb_size;
1177
1178
1179 __u32 ctx_id;
1180
1181 __u32 flags;
1182 };
1183
1184 struct hl_cb_out {
1185 union {
1186
1187 __u64 cb_handle;
1188
1189 union {
1190
1191 struct {
1192
1193 __u32 usage_cnt;
1194 __u32 pad;
1195 };
1196
1197
1198 __u64 device_va;
1199 };
1200 };
1201 };
1202
1203 union hl_cb_args {
1204 struct hl_cb_in in;
1205 struct hl_cb_out out;
1206 };
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222 #define HL_CS_CHUNK_FLAGS_USER_ALLOC_CB 0x1
1223
1224
1225
1226
1227
1228 struct hl_cs_chunk {
1229 union {
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244 __u64 cb_handle;
1245
1246
1247
1248
1249
1250
1251
1252
1253 __u64 signal_seq_arr;
1254
1255
1256
1257
1258
1259
1260
1261 __u64 encaps_signal_seq;
1262 };
1263
1264
1265 __u32 queue_index;
1266
1267 union {
1268
1269
1270
1271
1272 __u32 cb_size;
1273
1274
1275
1276
1277
1278 __u32 num_signal_seq_arr;
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289 __u32 encaps_signal_offset;
1290 };
1291
1292
1293 __u32 cs_chunk_flags;
1294
1295
1296
1297
1298
1299 __u32 collective_engine_id;
1300
1301
1302 __u32 pad[10];
1303 };
1304
1305
1306 #define HL_CS_FLAGS_FORCE_RESTORE 0x1
1307 #define HL_CS_FLAGS_SIGNAL 0x2
1308 #define HL_CS_FLAGS_WAIT 0x4
1309 #define HL_CS_FLAGS_COLLECTIVE_WAIT 0x8
1310
1311 #define HL_CS_FLAGS_TIMESTAMP 0x20
1312 #define HL_CS_FLAGS_STAGED_SUBMISSION 0x40
1313 #define HL_CS_FLAGS_STAGED_SUBMISSION_FIRST 0x80
1314 #define HL_CS_FLAGS_STAGED_SUBMISSION_LAST 0x100
1315 #define HL_CS_FLAGS_CUSTOM_TIMEOUT 0x200
1316 #define HL_CS_FLAGS_SKIP_RESET_ON_TIMEOUT 0x400
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336 #define HL_CS_FLAGS_ENCAP_SIGNALS 0x800
1337 #define HL_CS_FLAGS_RESERVE_SIGNALS_ONLY 0x1000
1338 #define HL_CS_FLAGS_UNRESERVE_SIGNALS_ONLY 0x2000
1339
1340 #define HL_CS_STATUS_SUCCESS 0
1341
1342 #define HL_MAX_JOBS_PER_CS 512
1343
1344 struct hl_cs_in {
1345
1346
1347 __u64 chunks_restore;
1348
1349
1350 __u64 chunks_execute;
1351
1352 union {
1353
1354
1355
1356
1357
1358 __u64 seq;
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370 __u32 encaps_sig_handle_id;
1371
1372
1373 struct {
1374
1375 __u32 encaps_signals_count;
1376
1377
1378 __u32 encaps_signals_q_idx;
1379 };
1380 };
1381
1382
1383
1384
1385 __u32 num_chunks_restore;
1386
1387
1388
1389
1390 __u32 num_chunks_execute;
1391
1392
1393
1394
1395 __u32 timeout;
1396
1397
1398 __u32 cs_flags;
1399
1400
1401 __u32 ctx_id;
1402 __u8 pad[4];
1403 };
1404
1405 struct hl_cs_out {
1406 union {
1407
1408
1409
1410
1411 __u64 seq;
1412
1413
1414 struct {
1415
1416 __u32 handle_id;
1417
1418
1419 __u32 count;
1420 };
1421 };
1422
1423
1424 __u32 status;
1425
1426
1427
1428
1429
1430 __u32 sob_base_addr_offset;
1431
1432
1433
1434
1435
1436
1437 __u16 sob_count_before_submission;
1438 __u16 pad[3];
1439 };
1440
1441 union hl_cs_args {
1442 struct hl_cs_in in;
1443 struct hl_cs_out out;
1444 };
1445
1446 #define HL_WAIT_CS_FLAGS_INTERRUPT 0x2
1447 #define HL_WAIT_CS_FLAGS_INTERRUPT_MASK 0xFFF00000
1448 #define HL_WAIT_CS_FLAGS_ANY_CQ_INTERRUPT 0xFFF00000
1449 #define HL_WAIT_CS_FLAGS_ANY_DEC_INTERRUPT 0xFFE00000
1450 #define HL_WAIT_CS_FLAGS_MULTI_CS 0x4
1451 #define HL_WAIT_CS_FLAGS_INTERRUPT_KERNEL_CQ 0x10
1452 #define HL_WAIT_CS_FLAGS_REGISTER_INTERRUPT 0x20
1453
1454 #define HL_WAIT_MULTI_CS_LIST_MAX_LEN 32
1455
1456 struct hl_wait_cs_in {
1457 union {
1458 struct {
1459
1460
1461
1462
1463
1464 __u64 seq;
1465
1466
1467
1468 __u64 timeout_us;
1469 };
1470
1471 struct {
1472 union {
1473
1474
1475
1476
1477
1478
1479
1480 __u64 addr;
1481
1482
1483
1484
1485
1486 __u64 cq_counters_handle;
1487 };
1488
1489
1490 __u64 target;
1491 };
1492 };
1493
1494
1495 __u32 ctx_id;
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507 __u32 flags;
1508
1509 union {
1510 struct {
1511
1512 __u8 seq_arr_len;
1513 __u8 pad[7];
1514 };
1515
1516
1517
1518
1519 __u64 interrupt_timeout_us;
1520 };
1521
1522
1523
1524
1525
1526
1527
1528
1529 __u64 cq_counters_offset;
1530
1531
1532
1533
1534
1535 __u64 timestamp_handle;
1536
1537
1538
1539
1540
1541
1542
1543 __u64 timestamp_offset;
1544 };
1545
1546 #define HL_WAIT_CS_STATUS_COMPLETED 0
1547 #define HL_WAIT_CS_STATUS_BUSY 1
1548 #define HL_WAIT_CS_STATUS_TIMEDOUT 2
1549 #define HL_WAIT_CS_STATUS_ABORTED 3
1550
1551 #define HL_WAIT_CS_STATUS_FLAG_GONE 0x1
1552 #define HL_WAIT_CS_STATUS_FLAG_TIMESTAMP_VLD 0x2
1553
1554 struct hl_wait_cs_out {
1555
1556 __u32 status;
1557
1558 __u32 flags;
1559
1560
1561
1562
1563
1564 __s64 timestamp_nsec;
1565
1566 __u32 cs_completion_map;
1567 __u32 pad;
1568 };
1569
1570 union hl_wait_cs_args {
1571 struct hl_wait_cs_in in;
1572 struct hl_wait_cs_out out;
1573 };
1574
1575
1576 #define HL_MEM_OP_ALLOC 0
1577
1578
1579 #define HL_MEM_OP_FREE 1
1580
1581
1582 #define HL_MEM_OP_MAP 2
1583
1584
1585 #define HL_MEM_OP_UNMAP 3
1586
1587
1588 #define HL_MEM_OP_MAP_BLOCK 4
1589
1590
1591
1592
1593 #define HL_MEM_OP_EXPORT_DMABUF_FD 5
1594
1595
1596
1597
1598
1599
1600
1601 #define HL_MEM_OP_TS_ALLOC 6
1602
1603
1604 #define HL_MEM_CONTIGUOUS 0x1
1605 #define HL_MEM_SHARED 0x2
1606 #define HL_MEM_USERPTR 0x4
1607 #define HL_MEM_FORCE_HINT 0x8
1608 #define HL_MEM_PREFETCH 0x40
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619 struct hl_mem_in {
1620 union {
1621
1622
1623
1624
1625
1626
1627 struct {
1628 __u64 mem_size;
1629 __u64 page_size;
1630 } alloc;
1631
1632
1633
1634
1635
1636 struct {
1637 __u64 handle;
1638 } free;
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650 struct {
1651 __u64 hint_addr;
1652 __u64 handle;
1653 } map_device;
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666 struct {
1667 __u64 host_virt_addr;
1668 __u64 hint_addr;
1669 __u64 mem_size;
1670 } map_host;
1671
1672
1673
1674
1675
1676
1677
1678 struct {
1679 __u64 block_addr;
1680 } map_block;
1681
1682
1683
1684
1685
1686 struct {
1687 __u64 device_virt_addr;
1688 } unmap;
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699 struct {
1700 __u64 handle;
1701 __u64 mem_size;
1702 } export_dmabuf_fd;
1703 };
1704
1705 __u32 op;
1706 __u32 flags;
1707 __u32 ctx_id;
1708 __u32 num_of_elements;
1709 };
1710
1711 struct hl_mem_out {
1712 union {
1713
1714
1715
1716
1717
1718 __u64 device_virt_addr;
1719
1720
1721
1722
1723
1724 __u64 handle;
1725
1726 struct {
1727
1728
1729
1730
1731 __u64 block_handle;
1732
1733
1734
1735
1736
1737 __u32 block_size;
1738
1739 __u32 pad;
1740 };
1741
1742
1743
1744
1745
1746
1747 __s32 fd;
1748 };
1749 };
1750
1751 union hl_mem_args {
1752 struct hl_mem_in in;
1753 struct hl_mem_out out;
1754 };
1755
1756 #define HL_DEBUG_MAX_AUX_VALUES 10
1757
1758 struct hl_debug_params_etr {
1759
1760 __u64 buffer_address;
1761
1762
1763 __u64 buffer_size;
1764
1765
1766 __u32 sink_mode;
1767 __u32 pad;
1768 };
1769
1770 struct hl_debug_params_etf {
1771
1772 __u64 buffer_address;
1773
1774
1775 __u64 buffer_size;
1776
1777
1778 __u32 sink_mode;
1779 __u32 pad;
1780 };
1781
1782 struct hl_debug_params_stm {
1783
1784 __u64 he_mask;
1785 __u64 sp_mask;
1786
1787
1788 __u32 id;
1789
1790
1791 __u32 frequency;
1792 };
1793
1794 struct hl_debug_params_bmon {
1795
1796 __u64 start_addr0;
1797 __u64 addr_mask0;
1798
1799 __u64 start_addr1;
1800 __u64 addr_mask1;
1801
1802
1803 __u32 bw_win;
1804 __u32 win_capture;
1805
1806
1807 __u32 id;
1808
1809
1810 __u32 control;
1811
1812
1813 __u64 start_addr2;
1814 __u64 end_addr2;
1815
1816 __u64 start_addr3;
1817 __u64 end_addr3;
1818 };
1819
1820 struct hl_debug_params_spmu {
1821
1822 __u64 event_types[HL_DEBUG_MAX_AUX_VALUES];
1823
1824
1825 __u32 event_types_num;
1826
1827
1828 __u32 pmtrc_val;
1829 __u32 trc_ctrl_host_val;
1830 __u32 trc_en_host_val;
1831 };
1832
1833
1834 #define HL_DEBUG_OP_ETR 0
1835
1836 #define HL_DEBUG_OP_ETF 1
1837
1838 #define HL_DEBUG_OP_STM 2
1839
1840 #define HL_DEBUG_OP_FUNNEL 3
1841
1842 #define HL_DEBUG_OP_BMON 4
1843
1844 #define HL_DEBUG_OP_SPMU 5
1845
1846 #define HL_DEBUG_OP_TIMESTAMP 6
1847
1848
1849
1850 #define HL_DEBUG_OP_SET_MODE 7
1851
1852 struct hl_debug_args {
1853
1854
1855
1856
1857 __u64 input_ptr;
1858
1859 __u64 output_ptr;
1860
1861 __u32 input_size;
1862
1863 __u32 output_size;
1864
1865 __u32 op;
1866
1867
1868
1869
1870 __u32 reg_idx;
1871
1872 __u32 enable;
1873
1874 __u32 ctx_id;
1875 };
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886 #define HL_NOTIFIER_EVENT_TPC_ASSERT (1ULL << 0)
1887 #define HL_NOTIFIER_EVENT_UNDEFINED_OPCODE (1ULL << 1)
1888 #define HL_NOTIFIER_EVENT_DEVICE_RESET (1ULL << 2)
1889 #define HL_NOTIFIER_EVENT_CS_TIMEOUT (1ULL << 3)
1890 #define HL_NOTIFIER_EVENT_DEVICE_UNAVAILABLE (1ULL << 4)
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906 #define HL_IOCTL_INFO \
1907 _IOWR('H', 0x01, struct hl_info_args)
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928 #define HL_IOCTL_CB \
1929 _IOWR('H', 0x02, union hl_cb_args)
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981 #define HL_IOCTL_CS \
1982 _IOWR('H', 0x03, union hl_cs_args)
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015 #define HL_IOCTL_WAIT_CS \
2016 _IOWR('H', 0x04, union hl_wait_cs_args)
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033 #define HL_IOCTL_MEMORY \
2034 _IOWR('H', 0x05, union hl_mem_args)
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060 #define HL_IOCTL_DEBUG \
2061 _IOWR('H', 0x06, struct hl_debug_args)
2062
2063 #define HL_COMMAND_START 0x01
2064 #define HL_COMMAND_END 0x07
2065
2066 #endif