1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 #ifndef __AMDGPU_DRM_H__
33 #define __AMDGPU_DRM_H__
34
35 #include "drm.h"
36
37 #if defined(__cplusplus)
38 extern "C" {
39 #endif
40
41 #define DRM_AMDGPU_GEM_CREATE 0x00
42 #define DRM_AMDGPU_GEM_MMAP 0x01
43 #define DRM_AMDGPU_CTX 0x02
44 #define DRM_AMDGPU_BO_LIST 0x03
45 #define DRM_AMDGPU_CS 0x04
46 #define DRM_AMDGPU_INFO 0x05
47 #define DRM_AMDGPU_GEM_METADATA 0x06
48 #define DRM_AMDGPU_GEM_WAIT_IDLE 0x07
49 #define DRM_AMDGPU_GEM_VA 0x08
50 #define DRM_AMDGPU_WAIT_CS 0x09
51 #define DRM_AMDGPU_GEM_OP 0x10
52 #define DRM_AMDGPU_GEM_USERPTR 0x11
53 #define DRM_AMDGPU_WAIT_FENCES 0x12
54 #define DRM_AMDGPU_VM 0x13
55 #define DRM_AMDGPU_FENCE_TO_HANDLE 0x14
56 #define DRM_AMDGPU_SCHED 0x15
57
58 #define DRM_IOCTL_AMDGPU_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_CREATE, union drm_amdgpu_gem_create)
59 #define DRM_IOCTL_AMDGPU_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_MMAP, union drm_amdgpu_gem_mmap)
60 #define DRM_IOCTL_AMDGPU_CTX DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_CTX, union drm_amdgpu_ctx)
61 #define DRM_IOCTL_AMDGPU_BO_LIST DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_BO_LIST, union drm_amdgpu_bo_list)
62 #define DRM_IOCTL_AMDGPU_CS DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_CS, union drm_amdgpu_cs)
63 #define DRM_IOCTL_AMDGPU_INFO DRM_IOW(DRM_COMMAND_BASE + DRM_AMDGPU_INFO, struct drm_amdgpu_info)
64 #define DRM_IOCTL_AMDGPU_GEM_METADATA DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_METADATA, struct drm_amdgpu_gem_metadata)
65 #define DRM_IOCTL_AMDGPU_GEM_WAIT_IDLE DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_WAIT_IDLE, union drm_amdgpu_gem_wait_idle)
66 #define DRM_IOCTL_AMDGPU_GEM_VA DRM_IOW(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_VA, struct drm_amdgpu_gem_va)
67 #define DRM_IOCTL_AMDGPU_WAIT_CS DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_WAIT_CS, union drm_amdgpu_wait_cs)
68 #define DRM_IOCTL_AMDGPU_GEM_OP DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_OP, struct drm_amdgpu_gem_op)
69 #define DRM_IOCTL_AMDGPU_GEM_USERPTR DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_USERPTR, struct drm_amdgpu_gem_userptr)
70 #define DRM_IOCTL_AMDGPU_WAIT_FENCES DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_WAIT_FENCES, union drm_amdgpu_wait_fences)
71 #define DRM_IOCTL_AMDGPU_VM DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_VM, union drm_amdgpu_vm)
72 #define DRM_IOCTL_AMDGPU_FENCE_TO_HANDLE DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_FENCE_TO_HANDLE, union drm_amdgpu_fence_to_handle)
73 #define DRM_IOCTL_AMDGPU_SCHED DRM_IOW(DRM_COMMAND_BASE + DRM_AMDGPU_SCHED, union drm_amdgpu_sched)
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98 #define AMDGPU_GEM_DOMAIN_CPU 0x1
99 #define AMDGPU_GEM_DOMAIN_GTT 0x2
100 #define AMDGPU_GEM_DOMAIN_VRAM 0x4
101 #define AMDGPU_GEM_DOMAIN_GDS 0x8
102 #define AMDGPU_GEM_DOMAIN_GWS 0x10
103 #define AMDGPU_GEM_DOMAIN_OA 0x20
104 #define AMDGPU_GEM_DOMAIN_MASK (AMDGPU_GEM_DOMAIN_CPU | \
105 AMDGPU_GEM_DOMAIN_GTT | \
106 AMDGPU_GEM_DOMAIN_VRAM | \
107 AMDGPU_GEM_DOMAIN_GDS | \
108 AMDGPU_GEM_DOMAIN_GWS | \
109 AMDGPU_GEM_DOMAIN_OA)
110
111
112 #define AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED (1 << 0)
113
114 #define AMDGPU_GEM_CREATE_NO_CPU_ACCESS (1 << 1)
115
116 #define AMDGPU_GEM_CREATE_CPU_GTT_USWC (1 << 2)
117
118 #define AMDGPU_GEM_CREATE_VRAM_CLEARED (1 << 3)
119
120 #define AMDGPU_GEM_CREATE_SHADOW (1 << 4)
121
122 #define AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS (1 << 5)
123
124 #define AMDGPU_GEM_CREATE_VM_ALWAYS_VALID (1 << 6)
125
126 #define AMDGPU_GEM_CREATE_EXPLICIT_SYNC (1 << 7)
127
128
129
130 #define AMDGPU_GEM_CREATE_MQD_GFX9 (1 << 8)
131
132
133
134 #define AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE (1 << 9)
135
136 struct drm_amdgpu_gem_create_in {
137
138 __u64 bo_size;
139
140 __u64 alignment;
141
142 __u64 domains;
143
144 __u64 domain_flags;
145 };
146
147 struct drm_amdgpu_gem_create_out {
148
149 __u32 handle;
150 __u32 _pad;
151 };
152
153 union drm_amdgpu_gem_create {
154 struct drm_amdgpu_gem_create_in in;
155 struct drm_amdgpu_gem_create_out out;
156 };
157
158
159 #define AMDGPU_BO_LIST_OP_CREATE 0
160
161 #define AMDGPU_BO_LIST_OP_DESTROY 1
162
163 #define AMDGPU_BO_LIST_OP_UPDATE 2
164
165 struct drm_amdgpu_bo_list_in {
166
167 __u32 operation;
168
169 __u32 list_handle;
170
171 __u32 bo_number;
172
173 __u32 bo_info_size;
174
175 __u64 bo_info_ptr;
176 };
177
178 struct drm_amdgpu_bo_list_entry {
179
180 __u32 bo_handle;
181
182 __u32 bo_priority;
183 };
184
185 struct drm_amdgpu_bo_list_out {
186
187 __u32 list_handle;
188 __u32 _pad;
189 };
190
191 union drm_amdgpu_bo_list {
192 struct drm_amdgpu_bo_list_in in;
193 struct drm_amdgpu_bo_list_out out;
194 };
195
196
197 #define AMDGPU_CTX_OP_ALLOC_CTX 1
198 #define AMDGPU_CTX_OP_FREE_CTX 2
199 #define AMDGPU_CTX_OP_QUERY_STATE 3
200 #define AMDGPU_CTX_OP_QUERY_STATE2 4
201
202
203 #define AMDGPU_CTX_NO_RESET 0
204
205 #define AMDGPU_CTX_GUILTY_RESET 1
206
207 #define AMDGPU_CTX_INNOCENT_RESET 2
208
209 #define AMDGPU_CTX_UNKNOWN_RESET 3
210
211
212 #define AMDGPU_CTX_QUERY2_FLAGS_RESET (1<<0)
213
214 #define AMDGPU_CTX_QUERY2_FLAGS_VRAMLOST (1<<1)
215
216 #define AMDGPU_CTX_QUERY2_FLAGS_GUILTY (1<<2)
217
218 #define AMDGPU_CTX_QUERY2_FLAGS_RAS_CE (1<<3)
219 #define AMDGPU_CTX_QUERY2_FLAGS_RAS_UE (1<<4)
220
221
222 #define AMDGPU_CTX_PRIORITY_UNSET -2048
223 #define AMDGPU_CTX_PRIORITY_VERY_LOW -1023
224 #define AMDGPU_CTX_PRIORITY_LOW -512
225 #define AMDGPU_CTX_PRIORITY_NORMAL 0
226
227
228
229
230 #define AMDGPU_CTX_PRIORITY_HIGH 512
231 #define AMDGPU_CTX_PRIORITY_VERY_HIGH 1023
232
233 struct drm_amdgpu_ctx_in {
234
235 __u32 op;
236
237 __u32 flags;
238 __u32 ctx_id;
239
240 __s32 priority;
241 };
242
243 union drm_amdgpu_ctx_out {
244 struct {
245 __u32 ctx_id;
246 __u32 _pad;
247 } alloc;
248
249 struct {
250
251 __u64 flags;
252
253 __u32 hangs;
254
255 __u32 reset_status;
256 } state;
257 };
258
259 union drm_amdgpu_ctx {
260 struct drm_amdgpu_ctx_in in;
261 union drm_amdgpu_ctx_out out;
262 };
263
264
265 #define AMDGPU_VM_OP_RESERVE_VMID 1
266 #define AMDGPU_VM_OP_UNRESERVE_VMID 2
267
268 struct drm_amdgpu_vm_in {
269
270 __u32 op;
271 __u32 flags;
272 };
273
274 struct drm_amdgpu_vm_out {
275
276 __u64 flags;
277 };
278
279 union drm_amdgpu_vm {
280 struct drm_amdgpu_vm_in in;
281 struct drm_amdgpu_vm_out out;
282 };
283
284
285 #define AMDGPU_SCHED_OP_PROCESS_PRIORITY_OVERRIDE 1
286 #define AMDGPU_SCHED_OP_CONTEXT_PRIORITY_OVERRIDE 2
287
288 struct drm_amdgpu_sched_in {
289
290 __u32 op;
291 __u32 fd;
292
293 __s32 priority;
294 __u32 ctx_id;
295 };
296
297 union drm_amdgpu_sched {
298 struct drm_amdgpu_sched_in in;
299 };
300
301
302
303
304
305
306 #define AMDGPU_GEM_USERPTR_READONLY (1 << 0)
307 #define AMDGPU_GEM_USERPTR_ANONONLY (1 << 1)
308 #define AMDGPU_GEM_USERPTR_VALIDATE (1 << 2)
309 #define AMDGPU_GEM_USERPTR_REGISTER (1 << 3)
310
311 struct drm_amdgpu_gem_userptr {
312 __u64 addr;
313 __u64 size;
314
315 __u32 flags;
316
317 __u32 handle;
318 };
319
320
321
322 #define AMDGPU_TILING_ARRAY_MODE_SHIFT 0
323 #define AMDGPU_TILING_ARRAY_MODE_MASK 0xf
324 #define AMDGPU_TILING_PIPE_CONFIG_SHIFT 4
325 #define AMDGPU_TILING_PIPE_CONFIG_MASK 0x1f
326 #define AMDGPU_TILING_TILE_SPLIT_SHIFT 9
327 #define AMDGPU_TILING_TILE_SPLIT_MASK 0x7
328 #define AMDGPU_TILING_MICRO_TILE_MODE_SHIFT 12
329 #define AMDGPU_TILING_MICRO_TILE_MODE_MASK 0x7
330 #define AMDGPU_TILING_BANK_WIDTH_SHIFT 15
331 #define AMDGPU_TILING_BANK_WIDTH_MASK 0x3
332 #define AMDGPU_TILING_BANK_HEIGHT_SHIFT 17
333 #define AMDGPU_TILING_BANK_HEIGHT_MASK 0x3
334 #define AMDGPU_TILING_MACRO_TILE_ASPECT_SHIFT 19
335 #define AMDGPU_TILING_MACRO_TILE_ASPECT_MASK 0x3
336 #define AMDGPU_TILING_NUM_BANKS_SHIFT 21
337 #define AMDGPU_TILING_NUM_BANKS_MASK 0x3
338
339
340 #define AMDGPU_TILING_SWIZZLE_MODE_SHIFT 0
341 #define AMDGPU_TILING_SWIZZLE_MODE_MASK 0x1f
342 #define AMDGPU_TILING_DCC_OFFSET_256B_SHIFT 5
343 #define AMDGPU_TILING_DCC_OFFSET_256B_MASK 0xFFFFFF
344 #define AMDGPU_TILING_DCC_PITCH_MAX_SHIFT 29
345 #define AMDGPU_TILING_DCC_PITCH_MAX_MASK 0x3FFF
346 #define AMDGPU_TILING_DCC_INDEPENDENT_64B_SHIFT 43
347 #define AMDGPU_TILING_DCC_INDEPENDENT_64B_MASK 0x1
348
349
350 #define AMDGPU_TILING_SET(field, value) \
351 (((__u64)(value) & AMDGPU_TILING_##field##_MASK) << AMDGPU_TILING_##field##_SHIFT)
352 #define AMDGPU_TILING_GET(value, field) \
353 (((__u64)(value) >> AMDGPU_TILING_##field##_SHIFT) & AMDGPU_TILING_##field##_MASK)
354
355 #define AMDGPU_GEM_METADATA_OP_SET_METADATA 1
356 #define AMDGPU_GEM_METADATA_OP_GET_METADATA 2
357
358
359 struct drm_amdgpu_gem_metadata {
360
361 __u32 handle;
362
363 __u32 op;
364 struct {
365
366 __u64 flags;
367
368 __u64 tiling_info;
369 __u32 data_size_bytes;
370 __u32 data[64];
371 } data;
372 };
373
374 struct drm_amdgpu_gem_mmap_in {
375
376 __u32 handle;
377 __u32 _pad;
378 };
379
380 struct drm_amdgpu_gem_mmap_out {
381
382 __u64 addr_ptr;
383 };
384
385 union drm_amdgpu_gem_mmap {
386 struct drm_amdgpu_gem_mmap_in in;
387 struct drm_amdgpu_gem_mmap_out out;
388 };
389
390 struct drm_amdgpu_gem_wait_idle_in {
391
392 __u32 handle;
393
394 __u32 flags;
395
396 __u64 timeout;
397 };
398
399 struct drm_amdgpu_gem_wait_idle_out {
400
401 __u32 status;
402
403 __u32 domain;
404 };
405
406 union drm_amdgpu_gem_wait_idle {
407 struct drm_amdgpu_gem_wait_idle_in in;
408 struct drm_amdgpu_gem_wait_idle_out out;
409 };
410
411 struct drm_amdgpu_wait_cs_in {
412
413
414
415
416 __u64 handle;
417
418 __u64 timeout;
419 __u32 ip_type;
420 __u32 ip_instance;
421 __u32 ring;
422 __u32 ctx_id;
423 };
424
425 struct drm_amdgpu_wait_cs_out {
426
427 __u64 status;
428 };
429
430 union drm_amdgpu_wait_cs {
431 struct drm_amdgpu_wait_cs_in in;
432 struct drm_amdgpu_wait_cs_out out;
433 };
434
435 struct drm_amdgpu_fence {
436 __u32 ctx_id;
437 __u32 ip_type;
438 __u32 ip_instance;
439 __u32 ring;
440 __u64 seq_no;
441 };
442
443 struct drm_amdgpu_wait_fences_in {
444
445 __u64 fences;
446 __u32 fence_count;
447 __u32 wait_all;
448 __u64 timeout_ns;
449 };
450
451 struct drm_amdgpu_wait_fences_out {
452 __u32 status;
453 __u32 first_signaled;
454 };
455
456 union drm_amdgpu_wait_fences {
457 struct drm_amdgpu_wait_fences_in in;
458 struct drm_amdgpu_wait_fences_out out;
459 };
460
461 #define AMDGPU_GEM_OP_GET_GEM_CREATE_INFO 0
462 #define AMDGPU_GEM_OP_SET_PLACEMENT 1
463
464
465 struct drm_amdgpu_gem_op {
466
467 __u32 handle;
468
469 __u32 op;
470
471 __u64 value;
472 };
473
474 #define AMDGPU_VA_OP_MAP 1
475 #define AMDGPU_VA_OP_UNMAP 2
476 #define AMDGPU_VA_OP_CLEAR 3
477 #define AMDGPU_VA_OP_REPLACE 4
478
479
480 #define AMDGPU_VM_DELAY_UPDATE (1 << 0)
481
482
483
484 #define AMDGPU_VM_PAGE_READABLE (1 << 1)
485
486 #define AMDGPU_VM_PAGE_WRITEABLE (1 << 2)
487
488 #define AMDGPU_VM_PAGE_EXECUTABLE (1 << 3)
489
490 #define AMDGPU_VM_PAGE_PRT (1 << 4)
491
492 #define AMDGPU_VM_MTYPE_MASK (0xf << 5)
493
494 #define AMDGPU_VM_MTYPE_DEFAULT (0 << 5)
495
496 #define AMDGPU_VM_MTYPE_NC (1 << 5)
497
498 #define AMDGPU_VM_MTYPE_WC (2 << 5)
499
500 #define AMDGPU_VM_MTYPE_CC (3 << 5)
501
502 #define AMDGPU_VM_MTYPE_UC (4 << 5)
503
504 struct drm_amdgpu_gem_va {
505
506 __u32 handle;
507 __u32 _pad;
508
509 __u32 operation;
510
511 __u32 flags;
512
513 __u64 va_address;
514
515 __u64 offset_in_bo;
516
517 __u64 map_size;
518 };
519
520 #define AMDGPU_HW_IP_GFX 0
521 #define AMDGPU_HW_IP_COMPUTE 1
522 #define AMDGPU_HW_IP_DMA 2
523 #define AMDGPU_HW_IP_UVD 3
524 #define AMDGPU_HW_IP_VCE 4
525 #define AMDGPU_HW_IP_UVD_ENC 5
526 #define AMDGPU_HW_IP_VCN_DEC 6
527 #define AMDGPU_HW_IP_VCN_ENC 7
528 #define AMDGPU_HW_IP_VCN_JPEG 8
529 #define AMDGPU_HW_IP_NUM 9
530
531 #define AMDGPU_HW_IP_INSTANCE_MAX_COUNT 1
532
533 #define AMDGPU_CHUNK_ID_IB 0x01
534 #define AMDGPU_CHUNK_ID_FENCE 0x02
535 #define AMDGPU_CHUNK_ID_DEPENDENCIES 0x03
536 #define AMDGPU_CHUNK_ID_SYNCOBJ_IN 0x04
537 #define AMDGPU_CHUNK_ID_SYNCOBJ_OUT 0x05
538 #define AMDGPU_CHUNK_ID_BO_HANDLES 0x06
539 #define AMDGPU_CHUNK_ID_SCHEDULED_DEPENDENCIES 0x07
540 #define AMDGPU_CHUNK_ID_SYNCOBJ_TIMELINE_WAIT 0x08
541 #define AMDGPU_CHUNK_ID_SYNCOBJ_TIMELINE_SIGNAL 0x09
542
543 struct drm_amdgpu_cs_chunk {
544 __u32 chunk_id;
545 __u32 length_dw;
546 __u64 chunk_data;
547 };
548
549 struct drm_amdgpu_cs_in {
550
551 __u32 ctx_id;
552
553 __u32 bo_list_handle;
554 __u32 num_chunks;
555 __u32 _pad;
556
557 __u64 chunks;
558 };
559
560 struct drm_amdgpu_cs_out {
561 __u64 handle;
562 };
563
564 union drm_amdgpu_cs {
565 struct drm_amdgpu_cs_in in;
566 struct drm_amdgpu_cs_out out;
567 };
568
569
570
571
572 #define AMDGPU_IB_FLAG_CE (1<<0)
573
574
575 #define AMDGPU_IB_FLAG_PREAMBLE (1<<1)
576
577
578 #define AMDGPU_IB_FLAG_PREEMPT (1<<2)
579
580
581
582 #define AMDGPU_IB_FLAG_TC_WB_NOT_INVALIDATE (1 << 3)
583
584
585
586
587 #define AMDGPU_IB_FLAG_RESET_GDS_MAX_WAVE_ID (1 << 4)
588
589 struct drm_amdgpu_cs_chunk_ib {
590 __u32 _pad;
591
592 __u32 flags;
593
594 __u64 va_start;
595
596 __u32 ib_bytes;
597
598 __u32 ip_type;
599
600 __u32 ip_instance;
601
602 __u32 ring;
603 };
604
605 struct drm_amdgpu_cs_chunk_dep {
606 __u32 ip_type;
607 __u32 ip_instance;
608 __u32 ring;
609 __u32 ctx_id;
610 __u64 handle;
611 };
612
613 struct drm_amdgpu_cs_chunk_fence {
614 __u32 handle;
615 __u32 offset;
616 };
617
618 struct drm_amdgpu_cs_chunk_sem {
619 __u32 handle;
620 };
621
622 struct drm_amdgpu_cs_chunk_syncobj {
623 __u32 handle;
624 __u32 flags;
625 __u64 point;
626 };
627
628 #define AMDGPU_FENCE_TO_HANDLE_GET_SYNCOBJ 0
629 #define AMDGPU_FENCE_TO_HANDLE_GET_SYNCOBJ_FD 1
630 #define AMDGPU_FENCE_TO_HANDLE_GET_SYNC_FILE_FD 2
631
632 union drm_amdgpu_fence_to_handle {
633 struct {
634 struct drm_amdgpu_fence fence;
635 __u32 what;
636 __u32 pad;
637 } in;
638 struct {
639 __u32 handle;
640 } out;
641 };
642
643 struct drm_amdgpu_cs_chunk_data {
644 union {
645 struct drm_amdgpu_cs_chunk_ib ib_data;
646 struct drm_amdgpu_cs_chunk_fence fence_data;
647 };
648 };
649
650
651
652
653
654 #define AMDGPU_IDS_FLAGS_FUSION 0x1
655 #define AMDGPU_IDS_FLAGS_PREEMPTION 0x2
656
657
658 #define AMDGPU_INFO_ACCEL_WORKING 0x00
659
660 #define AMDGPU_INFO_CRTC_FROM_ID 0x01
661
662 #define AMDGPU_INFO_HW_IP_INFO 0x02
663
664 #define AMDGPU_INFO_HW_IP_COUNT 0x03
665
666 #define AMDGPU_INFO_TIMESTAMP 0x05
667
668 #define AMDGPU_INFO_FW_VERSION 0x0e
669
670 #define AMDGPU_INFO_FW_VCE 0x1
671
672 #define AMDGPU_INFO_FW_UVD 0x2
673
674 #define AMDGPU_INFO_FW_GMC 0x03
675
676 #define AMDGPU_INFO_FW_GFX_ME 0x04
677
678 #define AMDGPU_INFO_FW_GFX_PFP 0x05
679
680 #define AMDGPU_INFO_FW_GFX_CE 0x06
681
682 #define AMDGPU_INFO_FW_GFX_RLC 0x07
683
684 #define AMDGPU_INFO_FW_GFX_MEC 0x08
685
686 #define AMDGPU_INFO_FW_SMC 0x0a
687
688 #define AMDGPU_INFO_FW_SDMA 0x0b
689
690 #define AMDGPU_INFO_FW_SOS 0x0c
691
692 #define AMDGPU_INFO_FW_ASD 0x0d
693
694 #define AMDGPU_INFO_FW_VCN 0x0e
695
696 #define AMDGPU_INFO_FW_GFX_RLC_RESTORE_LIST_CNTL 0x0f
697
698 #define AMDGPU_INFO_FW_GFX_RLC_RESTORE_LIST_GPM_MEM 0x10
699
700 #define AMDGPU_INFO_FW_GFX_RLC_RESTORE_LIST_SRM_MEM 0x11
701
702 #define AMDGPU_INFO_FW_DMCU 0x12
703 #define AMDGPU_INFO_FW_TA 0x13
704
705 #define AMDGPU_INFO_NUM_BYTES_MOVED 0x0f
706
707 #define AMDGPU_INFO_VRAM_USAGE 0x10
708
709 #define AMDGPU_INFO_GTT_USAGE 0x11
710
711 #define AMDGPU_INFO_GDS_CONFIG 0x13
712
713 #define AMDGPU_INFO_VRAM_GTT 0x14
714
715 #define AMDGPU_INFO_READ_MMR_REG 0x15
716
717 #define AMDGPU_INFO_DEV_INFO 0x16
718
719 #define AMDGPU_INFO_VIS_VRAM_USAGE 0x17
720
721 #define AMDGPU_INFO_NUM_EVICTIONS 0x18
722
723 #define AMDGPU_INFO_MEMORY 0x19
724
725 #define AMDGPU_INFO_VCE_CLOCK_TABLE 0x1A
726
727 #define AMDGPU_INFO_VBIOS 0x1B
728
729 #define AMDGPU_INFO_VBIOS_SIZE 0x1
730
731 #define AMDGPU_INFO_VBIOS_IMAGE 0x2
732
733 #define AMDGPU_INFO_NUM_HANDLES 0x1C
734
735 #define AMDGPU_INFO_SENSOR 0x1D
736
737 #define AMDGPU_INFO_SENSOR_GFX_SCLK 0x1
738
739 #define AMDGPU_INFO_SENSOR_GFX_MCLK 0x2
740
741 #define AMDGPU_INFO_SENSOR_GPU_TEMP 0x3
742
743 #define AMDGPU_INFO_SENSOR_GPU_LOAD 0x4
744
745 #define AMDGPU_INFO_SENSOR_GPU_AVG_POWER 0x5
746
747 #define AMDGPU_INFO_SENSOR_VDDNB 0x6
748
749 #define AMDGPU_INFO_SENSOR_VDDGFX 0x7
750
751 #define AMDGPU_INFO_SENSOR_STABLE_PSTATE_GFX_SCLK 0x8
752
753 #define AMDGPU_INFO_SENSOR_STABLE_PSTATE_GFX_MCLK 0x9
754
755 #define AMDGPU_INFO_NUM_VRAM_CPU_PAGE_FAULTS 0x1E
756 #define AMDGPU_INFO_VRAM_LOST_COUNTER 0x1F
757
758 #define AMDGPU_INFO_RAS_ENABLED_FEATURES 0x20
759
760
761 #define AMDGPU_INFO_RAS_ENABLED_UMC (1 << 0)
762
763 #define AMDGPU_INFO_RAS_ENABLED_SDMA (1 << 1)
764
765 #define AMDGPU_INFO_RAS_ENABLED_GFX (1 << 2)
766
767 #define AMDGPU_INFO_RAS_ENABLED_MMHUB (1 << 3)
768
769 #define AMDGPU_INFO_RAS_ENABLED_ATHUB (1 << 4)
770
771 #define AMDGPU_INFO_RAS_ENABLED_PCIE (1 << 5)
772
773 #define AMDGPU_INFO_RAS_ENABLED_HDP (1 << 6)
774
775 #define AMDGPU_INFO_RAS_ENABLED_XGMI (1 << 7)
776
777 #define AMDGPU_INFO_RAS_ENABLED_DF (1 << 8)
778
779 #define AMDGPU_INFO_RAS_ENABLED_SMN (1 << 9)
780
781 #define AMDGPU_INFO_RAS_ENABLED_SEM (1 << 10)
782
783 #define AMDGPU_INFO_RAS_ENABLED_MP0 (1 << 11)
784
785 #define AMDGPU_INFO_RAS_ENABLED_MP1 (1 << 12)
786
787 #define AMDGPU_INFO_RAS_ENABLED_FUSE (1 << 13)
788
789 #define AMDGPU_INFO_MMR_SE_INDEX_SHIFT 0
790 #define AMDGPU_INFO_MMR_SE_INDEX_MASK 0xff
791 #define AMDGPU_INFO_MMR_SH_INDEX_SHIFT 8
792 #define AMDGPU_INFO_MMR_SH_INDEX_MASK 0xff
793
794 struct drm_amdgpu_query_fw {
795
796 __u32 fw_type;
797
798
799
800
801 __u32 ip_instance;
802
803
804
805
806 __u32 index;
807 __u32 _pad;
808 };
809
810
811 struct drm_amdgpu_info {
812
813 __u64 return_pointer;
814
815
816 __u32 return_size;
817
818 __u32 query;
819
820 union {
821 struct {
822 __u32 id;
823 __u32 _pad;
824 } mode_crtc;
825
826 struct {
827
828 __u32 type;
829
830
831
832
833 __u32 ip_instance;
834 } query_hw_ip;
835
836 struct {
837 __u32 dword_offset;
838
839 __u32 count;
840 __u32 instance;
841
842 __u32 flags;
843 } read_mmr_reg;
844
845 struct drm_amdgpu_query_fw query_fw;
846
847 struct {
848 __u32 type;
849 __u32 offset;
850 } vbios_info;
851
852 struct {
853 __u32 type;
854 } sensor_info;
855 };
856 };
857
858 struct drm_amdgpu_info_gds {
859
860 __u32 gds_gfx_partition_size;
861
862 __u32 compute_partition_size;
863
864 __u32 gds_total_size;
865
866 __u32 gws_per_gfx_partition;
867
868 __u32 gws_per_compute_partition;
869
870 __u32 oa_per_gfx_partition;
871
872 __u32 oa_per_compute_partition;
873 __u32 _pad;
874 };
875
876 struct drm_amdgpu_info_vram_gtt {
877 __u64 vram_size;
878 __u64 vram_cpu_accessible_size;
879 __u64 gtt_size;
880 };
881
882 struct drm_amdgpu_heap_info {
883
884 __u64 total_heap_size;
885
886
887 __u64 usable_heap_size;
888
889
890
891
892
893
894
895 __u64 heap_usage;
896
897
898
899
900
901 __u64 max_allocation;
902 };
903
904 struct drm_amdgpu_memory_info {
905 struct drm_amdgpu_heap_info vram;
906 struct drm_amdgpu_heap_info cpu_accessible_vram;
907 struct drm_amdgpu_heap_info gtt;
908 };
909
910 struct drm_amdgpu_info_firmware {
911 __u32 ver;
912 __u32 feature;
913 };
914
915 #define AMDGPU_VRAM_TYPE_UNKNOWN 0
916 #define AMDGPU_VRAM_TYPE_GDDR1 1
917 #define AMDGPU_VRAM_TYPE_DDR2 2
918 #define AMDGPU_VRAM_TYPE_GDDR3 3
919 #define AMDGPU_VRAM_TYPE_GDDR4 4
920 #define AMDGPU_VRAM_TYPE_GDDR5 5
921 #define AMDGPU_VRAM_TYPE_HBM 6
922 #define AMDGPU_VRAM_TYPE_DDR3 7
923 #define AMDGPU_VRAM_TYPE_DDR4 8
924 #define AMDGPU_VRAM_TYPE_GDDR6 9
925
926 struct drm_amdgpu_info_device {
927
928 __u32 device_id;
929
930 __u32 chip_rev;
931 __u32 external_rev;
932
933 __u32 pci_rev;
934 __u32 family;
935 __u32 num_shader_engines;
936 __u32 num_shader_arrays_per_engine;
937
938 __u32 gpu_counter_freq;
939 __u64 max_engine_clock;
940 __u64 max_memory_clock;
941
942 __u32 cu_active_number;
943
944 __u32 cu_ao_mask;
945 __u32 cu_bitmap[4][4];
946
947 __u32 enabled_rb_pipes_mask;
948 __u32 num_rb_pipes;
949 __u32 num_hw_gfx_contexts;
950 __u32 _pad;
951 __u64 ids_flags;
952
953 __u64 virtual_address_offset;
954
955 __u64 virtual_address_max;
956
957 __u32 virtual_address_alignment;
958
959 __u32 pte_fragment_size;
960 __u32 gart_page_size;
961
962 __u32 ce_ram_size;
963
964 __u32 vram_type;
965
966 __u32 vram_bit_width;
967
968 __u32 vce_harvest_config;
969
970 __u32 gc_double_offchip_lds_buf;
971
972 __u64 prim_buf_gpu_addr;
973
974 __u64 pos_buf_gpu_addr;
975
976 __u64 cntl_sb_buf_gpu_addr;
977
978 __u64 param_buf_gpu_addr;
979 __u32 prim_buf_size;
980 __u32 pos_buf_size;
981 __u32 cntl_sb_buf_size;
982 __u32 param_buf_size;
983
984 __u32 wave_front_size;
985
986 __u32 num_shader_visible_vgprs;
987
988 __u32 num_cu_per_sh;
989
990 __u32 num_tcc_blocks;
991
992 __u32 gs_vgt_table_depth;
993
994 __u32 gs_prim_buffer_depth;
995
996 __u32 max_gs_waves_per_vgt;
997 __u32 _pad1;
998
999 __u32 cu_ao_bitmap[4][4];
1000
1001 __u64 high_va_offset;
1002
1003 __u64 high_va_max;
1004
1005 __u32 pa_sc_tile_steering_override;
1006
1007 __u64 tcc_disabled_mask;
1008 };
1009
1010 struct drm_amdgpu_info_hw_ip {
1011
1012 __u32 hw_ip_version_major;
1013 __u32 hw_ip_version_minor;
1014
1015 __u64 capabilities_flags;
1016
1017 __u32 ib_start_alignment;
1018
1019 __u32 ib_size_alignment;
1020
1021 __u32 available_rings;
1022 __u32 _pad;
1023 };
1024
1025 struct drm_amdgpu_info_num_handles {
1026
1027 __u32 uvd_max_handles;
1028
1029 __u32 uvd_used_handles;
1030 };
1031
1032 #define AMDGPU_VCE_CLOCK_TABLE_ENTRIES 6
1033
1034 struct drm_amdgpu_info_vce_clock_table_entry {
1035
1036 __u32 sclk;
1037
1038 __u32 mclk;
1039
1040 __u32 eclk;
1041 __u32 pad;
1042 };
1043
1044 struct drm_amdgpu_info_vce_clock_table {
1045 struct drm_amdgpu_info_vce_clock_table_entry entries[AMDGPU_VCE_CLOCK_TABLE_ENTRIES];
1046 __u32 num_valid_entries;
1047 __u32 pad;
1048 };
1049
1050
1051
1052
1053 #define AMDGPU_FAMILY_UNKNOWN 0
1054 #define AMDGPU_FAMILY_SI 110
1055 #define AMDGPU_FAMILY_CI 120
1056 #define AMDGPU_FAMILY_KV 125
1057 #define AMDGPU_FAMILY_VI 130
1058 #define AMDGPU_FAMILY_CZ 135
1059 #define AMDGPU_FAMILY_AI 141
1060 #define AMDGPU_FAMILY_RV 142
1061 #define AMDGPU_FAMILY_NV 143
1062
1063 #if defined(__cplusplus)
1064 }
1065 #endif
1066
1067 #endif