0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032 #ifndef __AMDGPU_DRM_H__
0033 #define __AMDGPU_DRM_H__
0034
0035 #include "drm.h"
0036
0037 #if defined(__cplusplus)
0038 extern "C" {
0039 #endif
0040
0041 #define DRM_AMDGPU_GEM_CREATE 0x00
0042 #define DRM_AMDGPU_GEM_MMAP 0x01
0043 #define DRM_AMDGPU_CTX 0x02
0044 #define DRM_AMDGPU_BO_LIST 0x03
0045 #define DRM_AMDGPU_CS 0x04
0046 #define DRM_AMDGPU_INFO 0x05
0047 #define DRM_AMDGPU_GEM_METADATA 0x06
0048 #define DRM_AMDGPU_GEM_WAIT_IDLE 0x07
0049 #define DRM_AMDGPU_GEM_VA 0x08
0050 #define DRM_AMDGPU_WAIT_CS 0x09
0051 #define DRM_AMDGPU_GEM_OP 0x10
0052 #define DRM_AMDGPU_GEM_USERPTR 0x11
0053 #define DRM_AMDGPU_WAIT_FENCES 0x12
0054 #define DRM_AMDGPU_VM 0x13
0055 #define DRM_AMDGPU_FENCE_TO_HANDLE 0x14
0056 #define DRM_AMDGPU_SCHED 0x15
0057
0058 #define DRM_IOCTL_AMDGPU_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_CREATE, union drm_amdgpu_gem_create)
0059 #define DRM_IOCTL_AMDGPU_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_MMAP, union drm_amdgpu_gem_mmap)
0060 #define DRM_IOCTL_AMDGPU_CTX DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_CTX, union drm_amdgpu_ctx)
0061 #define DRM_IOCTL_AMDGPU_BO_LIST DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_BO_LIST, union drm_amdgpu_bo_list)
0062 #define DRM_IOCTL_AMDGPU_CS DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_CS, union drm_amdgpu_cs)
0063 #define DRM_IOCTL_AMDGPU_INFO DRM_IOW(DRM_COMMAND_BASE + DRM_AMDGPU_INFO, struct drm_amdgpu_info)
0064 #define DRM_IOCTL_AMDGPU_GEM_METADATA DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_METADATA, struct drm_amdgpu_gem_metadata)
0065 #define DRM_IOCTL_AMDGPU_GEM_WAIT_IDLE DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_WAIT_IDLE, union drm_amdgpu_gem_wait_idle)
0066 #define DRM_IOCTL_AMDGPU_GEM_VA DRM_IOW(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_VA, struct drm_amdgpu_gem_va)
0067 #define DRM_IOCTL_AMDGPU_WAIT_CS DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_WAIT_CS, union drm_amdgpu_wait_cs)
0068 #define DRM_IOCTL_AMDGPU_GEM_OP DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_OP, struct drm_amdgpu_gem_op)
0069 #define DRM_IOCTL_AMDGPU_GEM_USERPTR DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_USERPTR, struct drm_amdgpu_gem_userptr)
0070 #define DRM_IOCTL_AMDGPU_WAIT_FENCES DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_WAIT_FENCES, union drm_amdgpu_wait_fences)
0071 #define DRM_IOCTL_AMDGPU_VM DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_VM, union drm_amdgpu_vm)
0072 #define DRM_IOCTL_AMDGPU_FENCE_TO_HANDLE DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_FENCE_TO_HANDLE, union drm_amdgpu_fence_to_handle)
0073 #define DRM_IOCTL_AMDGPU_SCHED DRM_IOW(DRM_COMMAND_BASE + DRM_AMDGPU_SCHED, union drm_amdgpu_sched)
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096
0097
0098 #define AMDGPU_GEM_DOMAIN_CPU 0x1
0099 #define AMDGPU_GEM_DOMAIN_GTT 0x2
0100 #define AMDGPU_GEM_DOMAIN_VRAM 0x4
0101 #define AMDGPU_GEM_DOMAIN_GDS 0x8
0102 #define AMDGPU_GEM_DOMAIN_GWS 0x10
0103 #define AMDGPU_GEM_DOMAIN_OA 0x20
0104 #define AMDGPU_GEM_DOMAIN_MASK (AMDGPU_GEM_DOMAIN_CPU | \
0105 AMDGPU_GEM_DOMAIN_GTT | \
0106 AMDGPU_GEM_DOMAIN_VRAM | \
0107 AMDGPU_GEM_DOMAIN_GDS | \
0108 AMDGPU_GEM_DOMAIN_GWS | \
0109 AMDGPU_GEM_DOMAIN_OA)
0110
0111
0112 #define AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED (1 << 0)
0113
0114 #define AMDGPU_GEM_CREATE_NO_CPU_ACCESS (1 << 1)
0115
0116 #define AMDGPU_GEM_CREATE_CPU_GTT_USWC (1 << 2)
0117
0118 #define AMDGPU_GEM_CREATE_VRAM_CLEARED (1 << 3)
0119
0120 #define AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS (1 << 5)
0121
0122 #define AMDGPU_GEM_CREATE_VM_ALWAYS_VALID (1 << 6)
0123
0124 #define AMDGPU_GEM_CREATE_EXPLICIT_SYNC (1 << 7)
0125
0126
0127
0128
0129 #define AMDGPU_GEM_CREATE_CP_MQD_GFX9 (1 << 8)
0130
0131
0132
0133 #define AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE (1 << 9)
0134
0135
0136
0137
0138 #define AMDGPU_GEM_CREATE_ENCRYPTED (1 << 10)
0139
0140
0141
0142 #define AMDGPU_GEM_CREATE_PREEMPTIBLE (1 << 11)
0143
0144
0145
0146 #define AMDGPU_GEM_CREATE_DISCARDABLE (1 << 12)
0147
0148 struct drm_amdgpu_gem_create_in {
0149
0150 __u64 bo_size;
0151
0152 __u64 alignment;
0153
0154 __u64 domains;
0155
0156 __u64 domain_flags;
0157 };
0158
0159 struct drm_amdgpu_gem_create_out {
0160
0161 __u32 handle;
0162 __u32 _pad;
0163 };
0164
0165 union drm_amdgpu_gem_create {
0166 struct drm_amdgpu_gem_create_in in;
0167 struct drm_amdgpu_gem_create_out out;
0168 };
0169
0170
0171 #define AMDGPU_BO_LIST_OP_CREATE 0
0172
0173 #define AMDGPU_BO_LIST_OP_DESTROY 1
0174
0175 #define AMDGPU_BO_LIST_OP_UPDATE 2
0176
0177 struct drm_amdgpu_bo_list_in {
0178
0179 __u32 operation;
0180
0181 __u32 list_handle;
0182
0183 __u32 bo_number;
0184
0185 __u32 bo_info_size;
0186
0187 __u64 bo_info_ptr;
0188 };
0189
0190 struct drm_amdgpu_bo_list_entry {
0191
0192 __u32 bo_handle;
0193
0194 __u32 bo_priority;
0195 };
0196
0197 struct drm_amdgpu_bo_list_out {
0198
0199 __u32 list_handle;
0200 __u32 _pad;
0201 };
0202
0203 union drm_amdgpu_bo_list {
0204 struct drm_amdgpu_bo_list_in in;
0205 struct drm_amdgpu_bo_list_out out;
0206 };
0207
0208
0209 #define AMDGPU_CTX_OP_ALLOC_CTX 1
0210 #define AMDGPU_CTX_OP_FREE_CTX 2
0211 #define AMDGPU_CTX_OP_QUERY_STATE 3
0212 #define AMDGPU_CTX_OP_QUERY_STATE2 4
0213 #define AMDGPU_CTX_OP_GET_STABLE_PSTATE 5
0214 #define AMDGPU_CTX_OP_SET_STABLE_PSTATE 6
0215
0216
0217 #define AMDGPU_CTX_NO_RESET 0
0218
0219 #define AMDGPU_CTX_GUILTY_RESET 1
0220
0221 #define AMDGPU_CTX_INNOCENT_RESET 2
0222
0223 #define AMDGPU_CTX_UNKNOWN_RESET 3
0224
0225
0226 #define AMDGPU_CTX_QUERY2_FLAGS_RESET (1<<0)
0227
0228 #define AMDGPU_CTX_QUERY2_FLAGS_VRAMLOST (1<<1)
0229
0230 #define AMDGPU_CTX_QUERY2_FLAGS_GUILTY (1<<2)
0231
0232 #define AMDGPU_CTX_QUERY2_FLAGS_RAS_CE (1<<3)
0233 #define AMDGPU_CTX_QUERY2_FLAGS_RAS_UE (1<<4)
0234
0235
0236 #define AMDGPU_CTX_PRIORITY_UNSET -2048
0237 #define AMDGPU_CTX_PRIORITY_VERY_LOW -1023
0238 #define AMDGPU_CTX_PRIORITY_LOW -512
0239 #define AMDGPU_CTX_PRIORITY_NORMAL 0
0240
0241
0242
0243
0244 #define AMDGPU_CTX_PRIORITY_HIGH 512
0245 #define AMDGPU_CTX_PRIORITY_VERY_HIGH 1023
0246
0247
0248 #define AMDGPU_CTX_STABLE_PSTATE_FLAGS_MASK 0xf
0249 #define AMDGPU_CTX_STABLE_PSTATE_NONE 0
0250 #define AMDGPU_CTX_STABLE_PSTATE_STANDARD 1
0251 #define AMDGPU_CTX_STABLE_PSTATE_MIN_SCLK 2
0252 #define AMDGPU_CTX_STABLE_PSTATE_MIN_MCLK 3
0253 #define AMDGPU_CTX_STABLE_PSTATE_PEAK 4
0254
0255 struct drm_amdgpu_ctx_in {
0256
0257 __u32 op;
0258
0259 __u32 flags;
0260 __u32 ctx_id;
0261
0262 __s32 priority;
0263 };
0264
0265 union drm_amdgpu_ctx_out {
0266 struct {
0267 __u32 ctx_id;
0268 __u32 _pad;
0269 } alloc;
0270
0271 struct {
0272
0273 __u64 flags;
0274
0275 __u32 hangs;
0276
0277 __u32 reset_status;
0278 } state;
0279
0280 struct {
0281 __u32 flags;
0282 __u32 _pad;
0283 } pstate;
0284 };
0285
0286 union drm_amdgpu_ctx {
0287 struct drm_amdgpu_ctx_in in;
0288 union drm_amdgpu_ctx_out out;
0289 };
0290
0291
0292 #define AMDGPU_VM_OP_RESERVE_VMID 1
0293 #define AMDGPU_VM_OP_UNRESERVE_VMID 2
0294
0295 struct drm_amdgpu_vm_in {
0296
0297 __u32 op;
0298 __u32 flags;
0299 };
0300
0301 struct drm_amdgpu_vm_out {
0302
0303 __u64 flags;
0304 };
0305
0306 union drm_amdgpu_vm {
0307 struct drm_amdgpu_vm_in in;
0308 struct drm_amdgpu_vm_out out;
0309 };
0310
0311
0312 #define AMDGPU_SCHED_OP_PROCESS_PRIORITY_OVERRIDE 1
0313 #define AMDGPU_SCHED_OP_CONTEXT_PRIORITY_OVERRIDE 2
0314
0315 struct drm_amdgpu_sched_in {
0316
0317 __u32 op;
0318 __u32 fd;
0319
0320 __s32 priority;
0321 __u32 ctx_id;
0322 };
0323
0324 union drm_amdgpu_sched {
0325 struct drm_amdgpu_sched_in in;
0326 };
0327
0328
0329
0330
0331
0332
0333 #define AMDGPU_GEM_USERPTR_READONLY (1 << 0)
0334 #define AMDGPU_GEM_USERPTR_ANONONLY (1 << 1)
0335 #define AMDGPU_GEM_USERPTR_VALIDATE (1 << 2)
0336 #define AMDGPU_GEM_USERPTR_REGISTER (1 << 3)
0337
0338 struct drm_amdgpu_gem_userptr {
0339 __u64 addr;
0340 __u64 size;
0341
0342 __u32 flags;
0343
0344 __u32 handle;
0345 };
0346
0347
0348
0349 #define AMDGPU_TILING_ARRAY_MODE_SHIFT 0
0350 #define AMDGPU_TILING_ARRAY_MODE_MASK 0xf
0351 #define AMDGPU_TILING_PIPE_CONFIG_SHIFT 4
0352 #define AMDGPU_TILING_PIPE_CONFIG_MASK 0x1f
0353 #define AMDGPU_TILING_TILE_SPLIT_SHIFT 9
0354 #define AMDGPU_TILING_TILE_SPLIT_MASK 0x7
0355 #define AMDGPU_TILING_MICRO_TILE_MODE_SHIFT 12
0356 #define AMDGPU_TILING_MICRO_TILE_MODE_MASK 0x7
0357 #define AMDGPU_TILING_BANK_WIDTH_SHIFT 15
0358 #define AMDGPU_TILING_BANK_WIDTH_MASK 0x3
0359 #define AMDGPU_TILING_BANK_HEIGHT_SHIFT 17
0360 #define AMDGPU_TILING_BANK_HEIGHT_MASK 0x3
0361 #define AMDGPU_TILING_MACRO_TILE_ASPECT_SHIFT 19
0362 #define AMDGPU_TILING_MACRO_TILE_ASPECT_MASK 0x3
0363 #define AMDGPU_TILING_NUM_BANKS_SHIFT 21
0364 #define AMDGPU_TILING_NUM_BANKS_MASK 0x3
0365
0366
0367 #define AMDGPU_TILING_SWIZZLE_MODE_SHIFT 0
0368 #define AMDGPU_TILING_SWIZZLE_MODE_MASK 0x1f
0369 #define AMDGPU_TILING_DCC_OFFSET_256B_SHIFT 5
0370 #define AMDGPU_TILING_DCC_OFFSET_256B_MASK 0xFFFFFF
0371 #define AMDGPU_TILING_DCC_PITCH_MAX_SHIFT 29
0372 #define AMDGPU_TILING_DCC_PITCH_MAX_MASK 0x3FFF
0373 #define AMDGPU_TILING_DCC_INDEPENDENT_64B_SHIFT 43
0374 #define AMDGPU_TILING_DCC_INDEPENDENT_64B_MASK 0x1
0375 #define AMDGPU_TILING_DCC_INDEPENDENT_128B_SHIFT 44
0376 #define AMDGPU_TILING_DCC_INDEPENDENT_128B_MASK 0x1
0377 #define AMDGPU_TILING_SCANOUT_SHIFT 63
0378 #define AMDGPU_TILING_SCANOUT_MASK 0x1
0379
0380
0381 #define AMDGPU_TILING_SET(field, value) \
0382 (((__u64)(value) & AMDGPU_TILING_##field##_MASK) << AMDGPU_TILING_##field##_SHIFT)
0383 #define AMDGPU_TILING_GET(value, field) \
0384 (((__u64)(value) >> AMDGPU_TILING_##field##_SHIFT) & AMDGPU_TILING_##field##_MASK)
0385
0386 #define AMDGPU_GEM_METADATA_OP_SET_METADATA 1
0387 #define AMDGPU_GEM_METADATA_OP_GET_METADATA 2
0388
0389
0390 struct drm_amdgpu_gem_metadata {
0391
0392 __u32 handle;
0393
0394 __u32 op;
0395 struct {
0396
0397 __u64 flags;
0398
0399 __u64 tiling_info;
0400 __u32 data_size_bytes;
0401 __u32 data[64];
0402 } data;
0403 };
0404
0405 struct drm_amdgpu_gem_mmap_in {
0406
0407 __u32 handle;
0408 __u32 _pad;
0409 };
0410
0411 struct drm_amdgpu_gem_mmap_out {
0412
0413 __u64 addr_ptr;
0414 };
0415
0416 union drm_amdgpu_gem_mmap {
0417 struct drm_amdgpu_gem_mmap_in in;
0418 struct drm_amdgpu_gem_mmap_out out;
0419 };
0420
0421 struct drm_amdgpu_gem_wait_idle_in {
0422
0423 __u32 handle;
0424
0425 __u32 flags;
0426
0427 __u64 timeout;
0428 };
0429
0430 struct drm_amdgpu_gem_wait_idle_out {
0431
0432 __u32 status;
0433
0434 __u32 domain;
0435 };
0436
0437 union drm_amdgpu_gem_wait_idle {
0438 struct drm_amdgpu_gem_wait_idle_in in;
0439 struct drm_amdgpu_gem_wait_idle_out out;
0440 };
0441
0442 struct drm_amdgpu_wait_cs_in {
0443
0444
0445
0446
0447 __u64 handle;
0448
0449 __u64 timeout;
0450 __u32 ip_type;
0451 __u32 ip_instance;
0452 __u32 ring;
0453 __u32 ctx_id;
0454 };
0455
0456 struct drm_amdgpu_wait_cs_out {
0457
0458 __u64 status;
0459 };
0460
0461 union drm_amdgpu_wait_cs {
0462 struct drm_amdgpu_wait_cs_in in;
0463 struct drm_amdgpu_wait_cs_out out;
0464 };
0465
0466 struct drm_amdgpu_fence {
0467 __u32 ctx_id;
0468 __u32 ip_type;
0469 __u32 ip_instance;
0470 __u32 ring;
0471 __u64 seq_no;
0472 };
0473
0474 struct drm_amdgpu_wait_fences_in {
0475
0476 __u64 fences;
0477 __u32 fence_count;
0478 __u32 wait_all;
0479 __u64 timeout_ns;
0480 };
0481
0482 struct drm_amdgpu_wait_fences_out {
0483 __u32 status;
0484 __u32 first_signaled;
0485 };
0486
0487 union drm_amdgpu_wait_fences {
0488 struct drm_amdgpu_wait_fences_in in;
0489 struct drm_amdgpu_wait_fences_out out;
0490 };
0491
0492 #define AMDGPU_GEM_OP_GET_GEM_CREATE_INFO 0
0493 #define AMDGPU_GEM_OP_SET_PLACEMENT 1
0494
0495
0496 struct drm_amdgpu_gem_op {
0497
0498 __u32 handle;
0499
0500 __u32 op;
0501
0502 __u64 value;
0503 };
0504
0505 #define AMDGPU_VA_OP_MAP 1
0506 #define AMDGPU_VA_OP_UNMAP 2
0507 #define AMDGPU_VA_OP_CLEAR 3
0508 #define AMDGPU_VA_OP_REPLACE 4
0509
0510
0511 #define AMDGPU_VM_DELAY_UPDATE (1 << 0)
0512
0513
0514
0515 #define AMDGPU_VM_PAGE_READABLE (1 << 1)
0516
0517 #define AMDGPU_VM_PAGE_WRITEABLE (1 << 2)
0518
0519 #define AMDGPU_VM_PAGE_EXECUTABLE (1 << 3)
0520
0521 #define AMDGPU_VM_PAGE_PRT (1 << 4)
0522
0523 #define AMDGPU_VM_MTYPE_MASK (0xf << 5)
0524
0525 #define AMDGPU_VM_MTYPE_DEFAULT (0 << 5)
0526
0527 #define AMDGPU_VM_MTYPE_NC (1 << 5)
0528
0529 #define AMDGPU_VM_MTYPE_WC (2 << 5)
0530
0531 #define AMDGPU_VM_MTYPE_CC (3 << 5)
0532
0533 #define AMDGPU_VM_MTYPE_UC (4 << 5)
0534
0535 #define AMDGPU_VM_MTYPE_RW (5 << 5)
0536
0537 #define AMDGPU_VM_PAGE_NOALLOC (1 << 9)
0538
0539 struct drm_amdgpu_gem_va {
0540
0541 __u32 handle;
0542 __u32 _pad;
0543
0544 __u32 operation;
0545
0546 __u32 flags;
0547
0548 __u64 va_address;
0549
0550 __u64 offset_in_bo;
0551
0552 __u64 map_size;
0553 };
0554
0555 #define AMDGPU_HW_IP_GFX 0
0556 #define AMDGPU_HW_IP_COMPUTE 1
0557 #define AMDGPU_HW_IP_DMA 2
0558 #define AMDGPU_HW_IP_UVD 3
0559 #define AMDGPU_HW_IP_VCE 4
0560 #define AMDGPU_HW_IP_UVD_ENC 5
0561 #define AMDGPU_HW_IP_VCN_DEC 6
0562
0563
0564
0565
0566 #define AMDGPU_HW_IP_VCN_ENC 7
0567 #define AMDGPU_HW_IP_VCN_JPEG 8
0568 #define AMDGPU_HW_IP_NUM 9
0569
0570 #define AMDGPU_HW_IP_INSTANCE_MAX_COUNT 1
0571
0572 #define AMDGPU_CHUNK_ID_IB 0x01
0573 #define AMDGPU_CHUNK_ID_FENCE 0x02
0574 #define AMDGPU_CHUNK_ID_DEPENDENCIES 0x03
0575 #define AMDGPU_CHUNK_ID_SYNCOBJ_IN 0x04
0576 #define AMDGPU_CHUNK_ID_SYNCOBJ_OUT 0x05
0577 #define AMDGPU_CHUNK_ID_BO_HANDLES 0x06
0578 #define AMDGPU_CHUNK_ID_SCHEDULED_DEPENDENCIES 0x07
0579 #define AMDGPU_CHUNK_ID_SYNCOBJ_TIMELINE_WAIT 0x08
0580 #define AMDGPU_CHUNK_ID_SYNCOBJ_TIMELINE_SIGNAL 0x09
0581
0582 struct drm_amdgpu_cs_chunk {
0583 __u32 chunk_id;
0584 __u32 length_dw;
0585 __u64 chunk_data;
0586 };
0587
0588 struct drm_amdgpu_cs_in {
0589
0590 __u32 ctx_id;
0591
0592 __u32 bo_list_handle;
0593 __u32 num_chunks;
0594 __u32 flags;
0595
0596 __u64 chunks;
0597 };
0598
0599 struct drm_amdgpu_cs_out {
0600 __u64 handle;
0601 };
0602
0603 union drm_amdgpu_cs {
0604 struct drm_amdgpu_cs_in in;
0605 struct drm_amdgpu_cs_out out;
0606 };
0607
0608
0609
0610
0611 #define AMDGPU_IB_FLAG_CE (1<<0)
0612
0613
0614 #define AMDGPU_IB_FLAG_PREAMBLE (1<<1)
0615
0616
0617 #define AMDGPU_IB_FLAG_PREEMPT (1<<2)
0618
0619
0620
0621 #define AMDGPU_IB_FLAG_TC_WB_NOT_INVALIDATE (1 << 3)
0622
0623
0624
0625
0626 #define AMDGPU_IB_FLAG_RESET_GDS_MAX_WAVE_ID (1 << 4)
0627
0628
0629
0630 #define AMDGPU_IB_FLAGS_SECURE (1 << 5)
0631
0632
0633
0634 #define AMDGPU_IB_FLAG_EMIT_MEM_SYNC (1 << 6)
0635
0636 struct drm_amdgpu_cs_chunk_ib {
0637 __u32 _pad;
0638
0639 __u32 flags;
0640
0641 __u64 va_start;
0642
0643 __u32 ib_bytes;
0644
0645 __u32 ip_type;
0646
0647 __u32 ip_instance;
0648
0649 __u32 ring;
0650 };
0651
0652 struct drm_amdgpu_cs_chunk_dep {
0653 __u32 ip_type;
0654 __u32 ip_instance;
0655 __u32 ring;
0656 __u32 ctx_id;
0657 __u64 handle;
0658 };
0659
0660 struct drm_amdgpu_cs_chunk_fence {
0661 __u32 handle;
0662 __u32 offset;
0663 };
0664
0665 struct drm_amdgpu_cs_chunk_sem {
0666 __u32 handle;
0667 };
0668
0669 struct drm_amdgpu_cs_chunk_syncobj {
0670 __u32 handle;
0671 __u32 flags;
0672 __u64 point;
0673 };
0674
0675 #define AMDGPU_FENCE_TO_HANDLE_GET_SYNCOBJ 0
0676 #define AMDGPU_FENCE_TO_HANDLE_GET_SYNCOBJ_FD 1
0677 #define AMDGPU_FENCE_TO_HANDLE_GET_SYNC_FILE_FD 2
0678
0679 union drm_amdgpu_fence_to_handle {
0680 struct {
0681 struct drm_amdgpu_fence fence;
0682 __u32 what;
0683 __u32 pad;
0684 } in;
0685 struct {
0686 __u32 handle;
0687 } out;
0688 };
0689
0690 struct drm_amdgpu_cs_chunk_data {
0691 union {
0692 struct drm_amdgpu_cs_chunk_ib ib_data;
0693 struct drm_amdgpu_cs_chunk_fence fence_data;
0694 };
0695 };
0696
0697
0698
0699
0700
0701 #define AMDGPU_IDS_FLAGS_FUSION 0x1
0702 #define AMDGPU_IDS_FLAGS_PREEMPTION 0x2
0703 #define AMDGPU_IDS_FLAGS_TMZ 0x4
0704
0705
0706 #define AMDGPU_INFO_ACCEL_WORKING 0x00
0707
0708 #define AMDGPU_INFO_CRTC_FROM_ID 0x01
0709
0710 #define AMDGPU_INFO_HW_IP_INFO 0x02
0711
0712 #define AMDGPU_INFO_HW_IP_COUNT 0x03
0713
0714 #define AMDGPU_INFO_TIMESTAMP 0x05
0715
0716 #define AMDGPU_INFO_FW_VERSION 0x0e
0717
0718 #define AMDGPU_INFO_FW_VCE 0x1
0719
0720 #define AMDGPU_INFO_FW_UVD 0x2
0721
0722 #define AMDGPU_INFO_FW_GMC 0x03
0723
0724 #define AMDGPU_INFO_FW_GFX_ME 0x04
0725
0726 #define AMDGPU_INFO_FW_GFX_PFP 0x05
0727
0728 #define AMDGPU_INFO_FW_GFX_CE 0x06
0729
0730 #define AMDGPU_INFO_FW_GFX_RLC 0x07
0731
0732 #define AMDGPU_INFO_FW_GFX_MEC 0x08
0733
0734 #define AMDGPU_INFO_FW_SMC 0x0a
0735
0736 #define AMDGPU_INFO_FW_SDMA 0x0b
0737
0738 #define AMDGPU_INFO_FW_SOS 0x0c
0739
0740 #define AMDGPU_INFO_FW_ASD 0x0d
0741
0742 #define AMDGPU_INFO_FW_VCN 0x0e
0743
0744 #define AMDGPU_INFO_FW_GFX_RLC_RESTORE_LIST_CNTL 0x0f
0745
0746 #define AMDGPU_INFO_FW_GFX_RLC_RESTORE_LIST_GPM_MEM 0x10
0747
0748 #define AMDGPU_INFO_FW_GFX_RLC_RESTORE_LIST_SRM_MEM 0x11
0749
0750 #define AMDGPU_INFO_FW_DMCU 0x12
0751 #define AMDGPU_INFO_FW_TA 0x13
0752
0753 #define AMDGPU_INFO_FW_DMCUB 0x14
0754
0755 #define AMDGPU_INFO_FW_TOC 0x15
0756
0757 #define AMDGPU_INFO_FW_CAP 0x16
0758
0759
0760 #define AMDGPU_INFO_NUM_BYTES_MOVED 0x0f
0761
0762 #define AMDGPU_INFO_VRAM_USAGE 0x10
0763
0764 #define AMDGPU_INFO_GTT_USAGE 0x11
0765
0766 #define AMDGPU_INFO_GDS_CONFIG 0x13
0767
0768 #define AMDGPU_INFO_VRAM_GTT 0x14
0769
0770 #define AMDGPU_INFO_READ_MMR_REG 0x15
0771
0772 #define AMDGPU_INFO_DEV_INFO 0x16
0773
0774 #define AMDGPU_INFO_VIS_VRAM_USAGE 0x17
0775
0776 #define AMDGPU_INFO_NUM_EVICTIONS 0x18
0777
0778 #define AMDGPU_INFO_MEMORY 0x19
0779
0780 #define AMDGPU_INFO_VCE_CLOCK_TABLE 0x1A
0781
0782 #define AMDGPU_INFO_VBIOS 0x1B
0783
0784 #define AMDGPU_INFO_VBIOS_SIZE 0x1
0785
0786 #define AMDGPU_INFO_VBIOS_IMAGE 0x2
0787
0788 #define AMDGPU_INFO_VBIOS_INFO 0x3
0789
0790 #define AMDGPU_INFO_NUM_HANDLES 0x1C
0791
0792 #define AMDGPU_INFO_SENSOR 0x1D
0793
0794 #define AMDGPU_INFO_SENSOR_GFX_SCLK 0x1
0795
0796 #define AMDGPU_INFO_SENSOR_GFX_MCLK 0x2
0797
0798 #define AMDGPU_INFO_SENSOR_GPU_TEMP 0x3
0799
0800 #define AMDGPU_INFO_SENSOR_GPU_LOAD 0x4
0801
0802 #define AMDGPU_INFO_SENSOR_GPU_AVG_POWER 0x5
0803
0804 #define AMDGPU_INFO_SENSOR_VDDNB 0x6
0805
0806 #define AMDGPU_INFO_SENSOR_VDDGFX 0x7
0807
0808 #define AMDGPU_INFO_SENSOR_STABLE_PSTATE_GFX_SCLK 0x8
0809
0810 #define AMDGPU_INFO_SENSOR_STABLE_PSTATE_GFX_MCLK 0x9
0811
0812 #define AMDGPU_INFO_NUM_VRAM_CPU_PAGE_FAULTS 0x1E
0813 #define AMDGPU_INFO_VRAM_LOST_COUNTER 0x1F
0814
0815 #define AMDGPU_INFO_RAS_ENABLED_FEATURES 0x20
0816
0817 #define AMDGPU_INFO_RAS_ENABLED_UMC (1 << 0)
0818
0819 #define AMDGPU_INFO_RAS_ENABLED_SDMA (1 << 1)
0820
0821 #define AMDGPU_INFO_RAS_ENABLED_GFX (1 << 2)
0822
0823 #define AMDGPU_INFO_RAS_ENABLED_MMHUB (1 << 3)
0824
0825 #define AMDGPU_INFO_RAS_ENABLED_ATHUB (1 << 4)
0826
0827 #define AMDGPU_INFO_RAS_ENABLED_PCIE (1 << 5)
0828
0829 #define AMDGPU_INFO_RAS_ENABLED_HDP (1 << 6)
0830
0831 #define AMDGPU_INFO_RAS_ENABLED_XGMI (1 << 7)
0832
0833 #define AMDGPU_INFO_RAS_ENABLED_DF (1 << 8)
0834
0835 #define AMDGPU_INFO_RAS_ENABLED_SMN (1 << 9)
0836
0837 #define AMDGPU_INFO_RAS_ENABLED_SEM (1 << 10)
0838
0839 #define AMDGPU_INFO_RAS_ENABLED_MP0 (1 << 11)
0840
0841 #define AMDGPU_INFO_RAS_ENABLED_MP1 (1 << 12)
0842
0843 #define AMDGPU_INFO_RAS_ENABLED_FUSE (1 << 13)
0844
0845 #define AMDGPU_INFO_VIDEO_CAPS 0x21
0846
0847 #define AMDGPU_INFO_VIDEO_CAPS_DECODE 0
0848
0849 #define AMDGPU_INFO_VIDEO_CAPS_ENCODE 1
0850
0851 #define AMDGPU_INFO_MMR_SE_INDEX_SHIFT 0
0852 #define AMDGPU_INFO_MMR_SE_INDEX_MASK 0xff
0853 #define AMDGPU_INFO_MMR_SH_INDEX_SHIFT 8
0854 #define AMDGPU_INFO_MMR_SH_INDEX_MASK 0xff
0855
0856 struct drm_amdgpu_query_fw {
0857
0858 __u32 fw_type;
0859
0860
0861
0862
0863 __u32 ip_instance;
0864
0865
0866
0867
0868 __u32 index;
0869 __u32 _pad;
0870 };
0871
0872
0873 struct drm_amdgpu_info {
0874
0875 __u64 return_pointer;
0876
0877
0878 __u32 return_size;
0879
0880 __u32 query;
0881
0882 union {
0883 struct {
0884 __u32 id;
0885 __u32 _pad;
0886 } mode_crtc;
0887
0888 struct {
0889
0890 __u32 type;
0891
0892
0893
0894
0895 __u32 ip_instance;
0896 } query_hw_ip;
0897
0898 struct {
0899 __u32 dword_offset;
0900
0901 __u32 count;
0902 __u32 instance;
0903
0904 __u32 flags;
0905 } read_mmr_reg;
0906
0907 struct drm_amdgpu_query_fw query_fw;
0908
0909 struct {
0910 __u32 type;
0911 __u32 offset;
0912 } vbios_info;
0913
0914 struct {
0915 __u32 type;
0916 } sensor_info;
0917
0918 struct {
0919 __u32 type;
0920 } video_cap;
0921 };
0922 };
0923
0924 struct drm_amdgpu_info_gds {
0925
0926 __u32 gds_gfx_partition_size;
0927
0928 __u32 compute_partition_size;
0929
0930 __u32 gds_total_size;
0931
0932 __u32 gws_per_gfx_partition;
0933
0934 __u32 gws_per_compute_partition;
0935
0936 __u32 oa_per_gfx_partition;
0937
0938 __u32 oa_per_compute_partition;
0939 __u32 _pad;
0940 };
0941
0942 struct drm_amdgpu_info_vram_gtt {
0943 __u64 vram_size;
0944 __u64 vram_cpu_accessible_size;
0945 __u64 gtt_size;
0946 };
0947
0948 struct drm_amdgpu_heap_info {
0949
0950 __u64 total_heap_size;
0951
0952
0953 __u64 usable_heap_size;
0954
0955
0956
0957
0958
0959
0960
0961 __u64 heap_usage;
0962
0963
0964
0965
0966
0967 __u64 max_allocation;
0968 };
0969
0970 struct drm_amdgpu_memory_info {
0971 struct drm_amdgpu_heap_info vram;
0972 struct drm_amdgpu_heap_info cpu_accessible_vram;
0973 struct drm_amdgpu_heap_info gtt;
0974 };
0975
0976 struct drm_amdgpu_info_firmware {
0977 __u32 ver;
0978 __u32 feature;
0979 };
0980
0981 struct drm_amdgpu_info_vbios {
0982 __u8 name[64];
0983 __u8 vbios_pn[64];
0984 __u32 version;
0985 __u32 pad;
0986 __u8 vbios_ver_str[32];
0987 __u8 date[32];
0988 };
0989
0990 #define AMDGPU_VRAM_TYPE_UNKNOWN 0
0991 #define AMDGPU_VRAM_TYPE_GDDR1 1
0992 #define AMDGPU_VRAM_TYPE_DDR2 2
0993 #define AMDGPU_VRAM_TYPE_GDDR3 3
0994 #define AMDGPU_VRAM_TYPE_GDDR4 4
0995 #define AMDGPU_VRAM_TYPE_GDDR5 5
0996 #define AMDGPU_VRAM_TYPE_HBM 6
0997 #define AMDGPU_VRAM_TYPE_DDR3 7
0998 #define AMDGPU_VRAM_TYPE_DDR4 8
0999 #define AMDGPU_VRAM_TYPE_GDDR6 9
1000 #define AMDGPU_VRAM_TYPE_DDR5 10
1001 #define AMDGPU_VRAM_TYPE_LPDDR4 11
1002 #define AMDGPU_VRAM_TYPE_LPDDR5 12
1003
1004 struct drm_amdgpu_info_device {
1005
1006 __u32 device_id;
1007
1008 __u32 chip_rev;
1009 __u32 external_rev;
1010
1011 __u32 pci_rev;
1012 __u32 family;
1013 __u32 num_shader_engines;
1014 __u32 num_shader_arrays_per_engine;
1015
1016 __u32 gpu_counter_freq;
1017 __u64 max_engine_clock;
1018 __u64 max_memory_clock;
1019
1020 __u32 cu_active_number;
1021
1022 __u32 cu_ao_mask;
1023 __u32 cu_bitmap[4][4];
1024
1025 __u32 enabled_rb_pipes_mask;
1026 __u32 num_rb_pipes;
1027 __u32 num_hw_gfx_contexts;
1028 __u32 _pad;
1029 __u64 ids_flags;
1030
1031 __u64 virtual_address_offset;
1032
1033 __u64 virtual_address_max;
1034
1035 __u32 virtual_address_alignment;
1036
1037 __u32 pte_fragment_size;
1038 __u32 gart_page_size;
1039
1040 __u32 ce_ram_size;
1041
1042 __u32 vram_type;
1043
1044 __u32 vram_bit_width;
1045
1046 __u32 vce_harvest_config;
1047
1048 __u32 gc_double_offchip_lds_buf;
1049
1050 __u64 prim_buf_gpu_addr;
1051
1052 __u64 pos_buf_gpu_addr;
1053
1054 __u64 cntl_sb_buf_gpu_addr;
1055
1056 __u64 param_buf_gpu_addr;
1057 __u32 prim_buf_size;
1058 __u32 pos_buf_size;
1059 __u32 cntl_sb_buf_size;
1060 __u32 param_buf_size;
1061
1062 __u32 wave_front_size;
1063
1064 __u32 num_shader_visible_vgprs;
1065
1066 __u32 num_cu_per_sh;
1067
1068 __u32 num_tcc_blocks;
1069
1070 __u32 gs_vgt_table_depth;
1071
1072 __u32 gs_prim_buffer_depth;
1073
1074 __u32 max_gs_waves_per_vgt;
1075 __u32 _pad1;
1076
1077 __u32 cu_ao_bitmap[4][4];
1078
1079 __u64 high_va_offset;
1080
1081 __u64 high_va_max;
1082
1083 __u32 pa_sc_tile_steering_override;
1084
1085 __u64 tcc_disabled_mask;
1086 };
1087
1088 struct drm_amdgpu_info_hw_ip {
1089
1090 __u32 hw_ip_version_major;
1091 __u32 hw_ip_version_minor;
1092
1093 __u64 capabilities_flags;
1094
1095 __u32 ib_start_alignment;
1096
1097 __u32 ib_size_alignment;
1098
1099 __u32 available_rings;
1100
1101 __u32 ip_discovery_version;
1102 };
1103
1104 struct drm_amdgpu_info_num_handles {
1105
1106 __u32 uvd_max_handles;
1107
1108 __u32 uvd_used_handles;
1109 };
1110
1111 #define AMDGPU_VCE_CLOCK_TABLE_ENTRIES 6
1112
1113 struct drm_amdgpu_info_vce_clock_table_entry {
1114
1115 __u32 sclk;
1116
1117 __u32 mclk;
1118
1119 __u32 eclk;
1120 __u32 pad;
1121 };
1122
1123 struct drm_amdgpu_info_vce_clock_table {
1124 struct drm_amdgpu_info_vce_clock_table_entry entries[AMDGPU_VCE_CLOCK_TABLE_ENTRIES];
1125 __u32 num_valid_entries;
1126 __u32 pad;
1127 };
1128
1129
1130 #define AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG2 0
1131 #define AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4 1
1132 #define AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VC1 2
1133 #define AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4_AVC 3
1134 #define AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_HEVC 4
1135 #define AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_JPEG 5
1136 #define AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VP9 6
1137 #define AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_AV1 7
1138 #define AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_COUNT 8
1139
1140 struct drm_amdgpu_info_video_codec_info {
1141 __u32 valid;
1142 __u32 max_width;
1143 __u32 max_height;
1144 __u32 max_pixels_per_frame;
1145 __u32 max_level;
1146 __u32 pad;
1147 };
1148
1149 struct drm_amdgpu_info_video_caps {
1150 struct drm_amdgpu_info_video_codec_info codec_info[AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_COUNT];
1151 };
1152
1153
1154
1155
1156 #define AMDGPU_FAMILY_UNKNOWN 0
1157 #define AMDGPU_FAMILY_SI 110
1158 #define AMDGPU_FAMILY_CI 120
1159 #define AMDGPU_FAMILY_KV 125
1160 #define AMDGPU_FAMILY_VI 130
1161 #define AMDGPU_FAMILY_CZ 135
1162 #define AMDGPU_FAMILY_AI 141
1163 #define AMDGPU_FAMILY_RV 142
1164 #define AMDGPU_FAMILY_NV 143
1165 #define AMDGPU_FAMILY_VGH 144
1166 #define AMDGPU_FAMILY_GC_11_0_0 145
1167 #define AMDGPU_FAMILY_YC 146
1168 #define AMDGPU_FAMILY_GC_11_0_1 148
1169 #define AMDGPU_FAMILY_GC_10_3_6 149
1170 #define AMDGPU_FAMILY_GC_10_3_7 151
1171
1172 #if defined(__cplusplus)
1173 }
1174 #endif
1175
1176 #endif