XenevaOS
Loading...
Searching...
No Matches
panfrost_drm.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: MIT */
2/*
3 * Copyright © 2014-2018 Broadcom
4 * Copyright © 2019 Collabora ltd.
5 */
6#ifndef _PANFROST_DRM_H_
7#define _PANFROST_DRM_H_
8
9#include "drm.h"
10
11#if defined(__cplusplus)
12extern "C" {
13#endif
14
15#define DRM_PANFROST_SUBMIT 0x00
16#define DRM_PANFROST_WAIT_BO 0x01
17#define DRM_PANFROST_CREATE_BO 0x02
18#define DRM_PANFROST_MMAP_BO 0x03
19#define DRM_PANFROST_GET_PARAM 0x04
20#define DRM_PANFROST_GET_BO_OFFSET 0x05
21#define DRM_PANFROST_PERFCNT_ENABLE 0x06
22#define DRM_PANFROST_PERFCNT_DUMP 0x07
23#define DRM_PANFROST_MADVISE 0x08
24#define DRM_PANFROST_SET_LABEL_BO 0x09
25#define DRM_PANFROST_JM_CTX_CREATE 0x0a
26#define DRM_PANFROST_JM_CTX_DESTROY 0x0b
27#define DRM_PANFROST_SYNC_BO 0x0c
28#define DRM_PANFROST_QUERY_BO_INFO 0x0d
29
30#define DRM_IOCTL_PANFROST_SUBMIT DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_SUBMIT, struct drm_panfrost_submit)
31#define DRM_IOCTL_PANFROST_WAIT_BO DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_WAIT_BO, struct drm_panfrost_wait_bo)
32#define DRM_IOCTL_PANFROST_CREATE_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_CREATE_BO, struct drm_panfrost_create_bo)
33#define DRM_IOCTL_PANFROST_MMAP_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_MMAP_BO, struct drm_panfrost_mmap_bo)
34#define DRM_IOCTL_PANFROST_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_GET_PARAM, struct drm_panfrost_get_param)
35#define DRM_IOCTL_PANFROST_GET_BO_OFFSET DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_GET_BO_OFFSET, struct drm_panfrost_get_bo_offset)
36#define DRM_IOCTL_PANFROST_MADVISE DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_MADVISE, struct drm_panfrost_madvise)
37#define DRM_IOCTL_PANFROST_SET_LABEL_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_SET_LABEL_BO, struct drm_panfrost_set_label_bo)
38#define DRM_IOCTL_PANFROST_JM_CTX_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_JM_CTX_CREATE, struct drm_panfrost_jm_ctx_create)
39#define DRM_IOCTL_PANFROST_JM_CTX_DESTROY DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_JM_CTX_DESTROY, struct drm_panfrost_jm_ctx_destroy)
40#define DRM_IOCTL_PANFROST_SYNC_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_SYNC_BO, struct drm_panfrost_sync_bo)
41#define DRM_IOCTL_PANFROST_QUERY_BO_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_QUERY_BO_INFO, struct drm_panfrost_query_bo_info)
42
43/*
44 * Unstable ioctl(s): only exposed when the unsafe unstable_ioctls module
45 * param is set to true.
46 * All these ioctl(s) are subject to deprecation, so please don't rely on
47 * them for anything but debugging purpose.
48 */
49#define DRM_IOCTL_PANFROST_PERFCNT_ENABLE DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_PERFCNT_ENABLE, struct drm_panfrost_perfcnt_enable)
50#define DRM_IOCTL_PANFROST_PERFCNT_DUMP DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_PERFCNT_DUMP, struct drm_panfrost_perfcnt_dump)
51
52#define PANFROST_JD_REQ_FS (1 << 0)
53#define PANFROST_JD_REQ_CYCLE_COUNT (1 << 1)
103
126
127/* Valid flags to pass to drm_panfrost_create_bo.
128 * PANFROST_BO_WB_MMAP can't be set if PANFROST_BO_HEAP is.
129 */
130#define PANFROST_BO_NOEXEC 1
131#define PANFROST_BO_HEAP 2
132#define PANFROST_BO_WB_MMAP 4
133
166
192
239};
240
246
252
253/*
254 * Returns the offset for the BO in the GPU address space for this DRM fd.
255 * This is the same value returned by drm_panfrost_create_bo, if that was called
256 * from this DRM fd.
257 */
263
266 /*
267 * On bifrost we have 2 sets of counters, this parameter defines the
268 * one to track.
269 */
271};
272
276
277/* madvise provides a way to tell the kernel in case a buffers contents
278 * can be discarded under memory pressure, which is useful for userspace
279 * bo cache where we want to optimistically hold on to buffer allocate
280 * and potential mmap, but allow the pages to be discarded under memory
281 * pressure.
282 *
283 * Typical usage would involve madvise(DONTNEED) when buffer enters BO
284 * cache, and madvise(WILLNEED) if trying to recycle buffer from BO cache.
285 * In the WILLNEED case, 'retained' indicates to userspace whether the
286 * backing pages still exist.
287 */
288#define PANFROST_MADV_WILLNEED 0 /* backing pages are needed, status returned in 'retained' */
289#define PANFROST_MADV_DONTNEED 1 /* backing pages not needed */
290
292 __u32 handle; /* in, GEM handle */
293 __u32 madv; /* in, PANFROST_MADV_x */
294 __u32 retained; /* out, whether backing store still exists */
295};
296
317
318/* Valid flags to pass to drm_panfrost_bo_sync_op */
319#define PANFROST_BO_SYNC_CPU_CACHE_FLUSH 0
320#define PANFROST_BO_SYNC_CPU_CACHE_FLUSH_AND_INVALIDATE 1
321
347
360
362#define DRM_PANFROST_BO_IS_IMPORTED (1 << 0)
363
377
378/* Definitions for coredump decoding in user space */
379#define PANFROSTDUMP_MAJOR 1
380#define PANFROSTDUMP_MINOR 0
381
382#define PANFROSTDUMP_MAGIC 0x464E4150 /* PANF */
383
384#define PANFROSTDUMP_BUF_REG 0
385#define PANFROSTDUMP_BUF_BOMAP (PANFROSTDUMP_BUF_REG + 1)
386#define PANFROSTDUMP_BUF_BO (PANFROSTDUMP_BUF_BOMAP + 1)
387#define PANFROSTDUMP_BUF_TRAILER (PANFROSTDUMP_BUF_BO + 1)
388
389/*
390 * This structure is the native endianness of the dumping machine, tools can
391 * detect the endianness by looking at the value in 'magic'.
392 */
398
399 union {
400 struct {
407
408 struct {
413
414 /*
415 * Force same size in case we want to expand the header
416 * with new fields and also keep it 512-byte aligned
417 */
418
420 };
421};
422
423/* Registers object, an array of these */
428
447
458
471
472#if defined(__cplusplus)
473}
474#endif
475
476#endif /* _PANFROST_DRM_H_ */
uint32_t __u32
Definition drm.h:42
int64_t __s64
Definition drm.h:43
uint64_t __u64
Definition drm.h:44
drm_panfrost_gpu_coherency
Definition panfrost_drm.h:241
@ DRM_PANFROST_GPU_COHERENCY_ACE
Definition panfrost_drm.h:243
@ DRM_PANFROST_GPU_COHERENCY_ACE_LITE
Definition panfrost_drm.h:242
@ DRM_PANFROST_GPU_COHERENCY_NONE
Definition panfrost_drm.h:244
drm_panfrost_param
Definition panfrost_drm.h:193
@ DRM_PANFROST_PARAM_THREAD_MAX_WORKGROUP_SZ
Definition panfrost_drm.h:209
@ DRM_PANFROST_PARAM_JS_FEATURES6
Definition panfrost_drm.h:222
@ DRM_PANFROST_PARAM_TEXTURE_FEATURES3
Definition panfrost_drm.h:215
@ DRM_PANFROST_PARAM_MEM_FEATURES
Definition panfrost_drm.h:205
@ DRM_PANFROST_PARAM_JS_FEATURES8
Definition panfrost_drm.h:224
@ DRM_PANFROST_PARAM_AFBC_FEATURES
Definition panfrost_drm.h:234
@ DRM_PANFROST_PARAM_JS_FEATURES12
Definition panfrost_drm.h:228
@ DRM_PANFROST_PARAM_JS_FEATURES3
Definition panfrost_drm.h:219
@ DRM_PANFROST_PARAM_TILER_FEATURES
Definition panfrost_drm.h:204
@ DRM_PANFROST_PARAM_SYSTEM_TIMESTAMP_FREQUENCY
Definition panfrost_drm.h:236
@ DRM_PANFROST_PARAM_JS_FEATURES13
Definition panfrost_drm.h:229
@ DRM_PANFROST_PARAM_JS_FEATURES10
Definition panfrost_drm.h:226
@ DRM_PANFROST_PARAM_JS_FEATURES1
Definition panfrost_drm.h:217
@ DRM_PANFROST_PARAM_ALLOWED_JM_CTX_PRIORITIES
Definition panfrost_drm.h:237
@ DRM_PANFROST_PARAM_TEXTURE_FEATURES0
Definition panfrost_drm.h:212
@ DRM_PANFROST_PARAM_TEXTURE_FEATURES2
Definition panfrost_drm.h:214
@ DRM_PANFROST_PARAM_STACK_PRESENT
Definition panfrost_drm.h:199
@ DRM_PANFROST_PARAM_JS_FEATURES14
Definition panfrost_drm.h:230
@ DRM_PANFROST_PARAM_MMU_FEATURES
Definition panfrost_drm.h:206
@ DRM_PANFROST_PARAM_COHERENCY_FEATURES
Definition panfrost_drm.h:211
@ DRM_PANFROST_PARAM_JS_FEATURES5
Definition panfrost_drm.h:221
@ DRM_PANFROST_PARAM_THREAD_MAX_BARRIER_SZ
Definition panfrost_drm.h:210
@ DRM_PANFROST_PARAM_JS_FEATURES15
Definition panfrost_drm.h:231
@ DRM_PANFROST_PARAM_L2_FEATURES
Definition panfrost_drm.h:202
@ DRM_PANFROST_PARAM_GPU_REVISION
Definition panfrost_drm.h:195
@ DRM_PANFROST_PARAM_GPU_PROD_ID
Definition panfrost_drm.h:194
@ DRM_PANFROST_PARAM_SELECTED_COHERENCY
Definition panfrost_drm.h:238
@ DRM_PANFROST_PARAM_JS_FEATURES2
Definition panfrost_drm.h:218
@ DRM_PANFROST_PARAM_JS_FEATURES4
Definition panfrost_drm.h:220
@ DRM_PANFROST_PARAM_TEXTURE_FEATURES1
Definition panfrost_drm.h:213
@ DRM_PANFROST_PARAM_JS_FEATURES0
Definition panfrost_drm.h:216
@ DRM_PANFROST_PARAM_SYSTEM_TIMESTAMP
Definition panfrost_drm.h:235
@ DRM_PANFROST_PARAM_TILER_PRESENT
Definition panfrost_drm.h:197
@ DRM_PANFROST_PARAM_MAX_THREADS
Definition panfrost_drm.h:208
@ DRM_PANFROST_PARAM_THREAD_TLS_ALLOC
Definition panfrost_drm.h:233
@ DRM_PANFROST_PARAM_JS_FEATURES7
Definition panfrost_drm.h:223
@ DRM_PANFROST_PARAM_CORE_FEATURES
Definition panfrost_drm.h:203
@ DRM_PANFROST_PARAM_JS_PRESENT
Definition panfrost_drm.h:201
@ DRM_PANFROST_PARAM_AS_PRESENT
Definition panfrost_drm.h:200
@ DRM_PANFROST_PARAM_JS_FEATURES11
Definition panfrost_drm.h:227
@ DRM_PANFROST_PARAM_THREAD_FEATURES
Definition panfrost_drm.h:207
@ DRM_PANFROST_PARAM_L2_PRESENT
Definition panfrost_drm.h:198
@ DRM_PANFROST_PARAM_JS_FEATURES9
Definition panfrost_drm.h:225
@ DRM_PANFROST_PARAM_NR_CORE_GROUPS
Definition panfrost_drm.h:232
@ DRM_PANFROST_PARAM_SHADER_PRESENT
Definition panfrost_drm.h:196
drm_panfrost_jm_ctx_priority
Definition panfrost_drm.h:429
@ PANFROST_JM_CTX_PRIORITY_MEDIUM
Definition panfrost_drm.h:438
@ PANFROST_JM_CTX_PRIORITY_HIGH
Definition panfrost_drm.h:445
@ PANFROST_JM_CTX_PRIORITY_LOW
Definition panfrost_drm.h:433
Definition panfrost_drm.h:325
__u32 handle
Definition panfrost_drm.h:327
__u32 type
Definition panfrost_drm.h:330
__u32 offset
Definition panfrost_drm.h:337
__u32 size
Definition panfrost_drm.h:345
Definition panfrost_drm.h:139
__u64 offset
Definition panfrost_drm.h:164
__u32 pad
Definition panfrost_drm.h:155
__u32 handle
Definition panfrost_drm.h:151
__u32 size
Definition panfrost_drm.h:143
__u32 flags
Definition panfrost_drm.h:147
Definition panfrost_drm.h:258
__u64 offset
Definition panfrost_drm.h:261
__u32 handle
Definition panfrost_drm.h:259
__u32 pad
Definition panfrost_drm.h:260
Definition panfrost_drm.h:247
__u32 pad
Definition panfrost_drm.h:249
__u32 param
Definition panfrost_drm.h:248
__u64 value
Definition panfrost_drm.h:250
Definition panfrost_drm.h:448
__u32 handle
Definition panfrost_drm.h:452
__u32 priority
Definition panfrost_drm.h:456
Definition panfrost_drm.h:459
__u32 pad
Definition panfrost_drm.h:469
__u32 handle
Definition panfrost_drm.h:465
Definition panfrost_drm.h:291
__u32 retained
Definition panfrost_drm.h:294
__u32 madv
Definition panfrost_drm.h:293
__u32 handle
Definition panfrost_drm.h:292
Definition panfrost_drm.h:178
__u64 offset
Definition panfrost_drm.h:190
__u32 handle
Definition panfrost_drm.h:182
__u32 flags
Definition panfrost_drm.h:186
Definition panfrost_drm.h:273
__u64 buf_ptr
Definition panfrost_drm.h:274
Definition panfrost_drm.h:264
__u32 counterset
Definition panfrost_drm.h:270
__u32 enable
Definition panfrost_drm.h:265
Definition panfrost_drm.h:364
__u32 handle
Definition panfrost_drm.h:366
__u32 pad
Definition panfrost_drm.h:375
__u32 extra_flags
Definition panfrost_drm.h:369
__u32 create_flags
Definition panfrost_drm.h:372
Definition panfrost_drm.h:300
__u32 pad
Definition panfrost_drm.h:308
__u32 handle
Definition panfrost_drm.h:304
__u64 label
Definition panfrost_drm.h:315
Definition panfrost_drm.h:60
__u32 jm_ctx_handle
Definition panfrost_drm.h:97
__u32 bo_handle_count
Definition panfrost_drm.h:88
__u64 jc
Definition panfrost_drm.h:64
__u32 in_sync_count
Definition panfrost_drm.h:74
__u32 out_sync
Definition panfrost_drm.h:78
__u64 bo_handles
Definition panfrost_drm.h:83
__u32 requirements
Definition panfrost_drm.h:92
__u32 pad
Definition panfrost_drm.h:101
__u64 in_syncs
Definition panfrost_drm.h:69
Definition panfrost_drm.h:351
__u32 op_count
Definition panfrost_drm.h:356
__u32 pad
Definition panfrost_drm.h:358
__u64 ops
Definition panfrost_drm.h:353
Definition panfrost_drm.h:112
__u32 pad
Definition panfrost_drm.h:120
__u32 handle
Definition panfrost_drm.h:116
__s64 timeout_ns
Definition panfrost_drm.h:124
Definition panfrost_drm.h:393
__u32 minor
Definition panfrost_drm.h:404
__u64 iova
Definition panfrost_drm.h:410
__u64 jc
Definition panfrost_drm.h:401
__u32 type
Definition panfrost_drm.h:395
__u64 nbos
Definition panfrost_drm.h:405
struct panfrost_dump_object_header::@213::@215 reghdr
__u32 major
Definition panfrost_drm.h:403
__u32 gpu_id
Definition panfrost_drm.h:402
__u32 file_offset
Definition panfrost_drm.h:397
__u32 data[2]
Definition panfrost_drm.h:411
struct panfrost_dump_object_header::@213::@216 bomap
__u32 valid
Definition panfrost_drm.h:409
__u32 sizer[496]
Definition panfrost_drm.h:419
__u32 magic
Definition panfrost_drm.h:394
__u32 file_size
Definition panfrost_drm.h:396
Definition panfrost_drm.h:424
__u32 reg
Definition panfrost_drm.h:425
__u32 value
Definition panfrost_drm.h:426