github.com/google/syzkaller@v0.0.0-20251211124644-a066d2bc4b02/sys/linux/dev_msm.txt (about)

     1  # Copyright 2021 syzkaller project authors. All rights reserved.
     2  # Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
     3  
     4  # See https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/drm/msm_drm.h for upstream definitions
     5  
     6  include <drm/msm_drm.h>
     7  
     8  resource fd_msm[fd]
     9  resource msm_submitqueue_id[int32]
    10  resource msm_fence_id[int32]
    11  
    12  openat$msm(fd const[AT_FDCWD], file ptr[in, string["/dev/msm"]], flags flags[open_flags], mode const[0]) fd_msm
    13  
    14  ioctl$DRM_IOCTL_MSM_GET_PARAM(fd fd_msm, cmd const[DRM_IOCTL_MSM_GET_PARAM], arg ptr[inout, drm_msm_param$DRM_IOCTL_MSM_GET_PARAM])
    15  ioctl$DRM_IOCTL_MSM_GEM_NEW(fd fd_msm, cmd const[DRM_IOCTL_MSM_GEM_NEW], arg ptr[inout, drm_msm_gem_new])
    16  ioctl$DRM_IOCTL_MSM_GEM_INFO(fd fd_msm, cmd const[DRM_IOCTL_MSM_GEM_INFO], arg ptr[inout, drm_msm_gem_info])
    17  ioctl$DRM_IOCTL_MSM_GEM_CPU_PREP(fd fd_msm, cmd const[DRM_IOCTL_MSM_GEM_CPU_PREP], arg ptr[in, drm_msm_gem_cpu_prep])
    18  ioctl$DRM_IOCTL_MSM_GEM_CPU_FINI(fd fd_msm, cmd const[DRM_IOCTL_MSM_GEM_CPU_FINI], arg ptr[in, drm_msm_gem_cpu_fini])
    19  ioctl$DRM_IOCTL_MSM_GEM_SUBMIT(fd fd_msm, cmd const[DRM_IOCTL_MSM_GEM_SUBMIT], arg ptr[inout, drm_msm_gem_submit])
    20  ioctl$DRM_IOCTL_MSM_WAIT_FENCE(fd fd_msm, cmd const[DRM_IOCTL_MSM_WAIT_FENCE], arg ptr[in, drm_msm_wait_fence])
    21  ioctl$DRM_IOCTL_MSM_GEM_MADVISE(fd fd_msm, cmd const[DRM_IOCTL_MSM_GEM_MADVISE], arg ptr[inout, drm_msm_gem_madvise])
    22  ioctl$DRM_IOCTL_MSM_SUBMITQUEUE_NEW(fd fd_msm, cmd const[DRM_IOCTL_MSM_SUBMITQUEUE_NEW], arg ptr[inout, drm_msm_submitqueue])
    23  ioctl$DRM_IOCTL_MSM_SUBMITQUEUE_CLOSE(fd fd_msm, cmd const[DRM_IOCTL_MSM_SUBMITQUEUE_CLOSE], arg ptr[in, msm_submitqueue_id])
    24  ioctl$DRM_IOCTL_MSM_SUBMITQUEUE_QUERY(fd fd_msm, cmd const[DRM_IOCTL_MSM_SUBMITQUEUE_QUERY], arg ptr[inout, drm_msm_submitqueue_query])
    25  ioctl$DRM_IOCTL_MSM_SET_PARAM(fd fd_msm, cmd const[DRM_IOCTL_MSM_SET_PARAM], arg ptr[in, drm_msm_param$DRM_IOCTL_MSM_SET_PARAM])
    26  
    27  mmap$DRM_MSM(addr vma, len len[addr], prot flags[mmap_prot], flags flags[mmap_flags], fd fd_msm, offset fileoff)
    28  _ = __NR_mmap2
    29  
    30  drm_msm_gem_new {
    31  	size	int64
    32  	flags	flags[msm_gem_new_flags, int32]
    33  	handle	drm_gem_handle	(out)
    34  }
    35  
    36  drm_msm_gem_info {
    37  	handle	drm_gem_handle
    38  	info	flags[msm_gem_info_flags, int32]
    39  	value	int64
    40  	len	len[value, int32]
    41  	pad	const[0, int32]
    42  }
    43  
    44  drm_msm_param$DRM_IOCTL_MSM_GET_PARAM {
    45  	pipe	flags[msm_pipe_flags, int32]
    46  	param	flags[msm_param_flags, int32]
    47  	value	int64
    48  }
    49  
    50  drm_msm_param$DRM_IOCTL_MSM_SET_PARAM {
    51  	pipe	flags[msm_pipe_flags, int32]
    52  	param	flags[msm_param_set_flags, int32]
    53  	vallen	drm_msm_param_set_union
    54  	pad	const[0, int32]
    55  }
    56  
    57  drm_msm_param_set_union [
    58  	imm	drm_msm_param_set_imm
    59  	ptr	drm_msm_param_set_ptr
    60  ]
    61  
    62  drm_msm_param_set_imm {
    63  	value	int64
    64  	len	const[0, int32]
    65  }
    66  
    67  drm_msm_param_set_ptr {
    68  	value	ptr64[in, array[int8]]
    69  	len	len[value, int32]
    70  }
    71  
    72  drm_msm_timespec {
    73  	tv_sec	int64
    74  	tv_nsec	int64
    75  }
    76  
    77  drm_msm_gem_cpu_prep {
    78  	handle	drm_gem_handle
    79  	op	flags[msm_gem_cpu_prep_flags, int32]
    80  	timeout	drm_msm_timespec	(in)
    81  }
    82  
    83  drm_msm_gem_cpu_fini {
    84  	handle	drm_gem_handle
    85  }
    86  
    87  drm_msm_gem_submit_reloc {
    88  	submit_offset	int32
    89  	or		int32
    90  	shift		int32
    91  	reloc_idx	int32
    92  	reloc_offset	int64
    93  }
    94  
    95  drm_msm_gem_submit_cmd {
    96  	type		flags[msm_gem_submit_cmd_flags, int32]
    97  	submit_idx	int32
    98  	submit_offset	int32
    99  	size		int32[0:0x7fffffff, 4]
   100  	pad		const[0, int32]
   101  	nr_relocs	len[relocs, int32]
   102  	relocs		ptr64[in, array[drm_msm_gem_submit_reloc]]
   103  }
   104  
   105  drm_msm_gem_submit_bo {
   106  	flags		flags[msm_gem_submit_bo_flags, int32]
   107  	handle		drm_gem_handle
   108  	presumed	int64
   109  }
   110  
   111  drm_msm_gem_submit_syncobj {
   112  	handle	drm_syncobj
   113  	flags	flags[msm_gem_submit_syncobj_flags, int32]
   114  	point	int64
   115  }
   116  
   117  drm_msm_gem_submit {
   118  	flags		flags[msm_gem_submit_flags, int32]
   119  	fence		msm_fence_id	(out)
   120  	nr_bos		len[bos, int32]
   121  	nr_cmds		len[cmds, int32]
   122  	bos		ptr64[in, array[drm_msm_gem_submit_bo]]
   123  	cmds		ptr64[in, array[drm_msm_gem_submit_cmd]]
   124  	fence_fd	fd_sync_file[opt]
   125  	queueid		msm_submitqueue_id
   126  	in_syncobjs	ptr64[in, array[drm_msm_gem_submit_syncobj]]
   127  	out_syncobjs	ptr64[in, array[drm_msm_gem_submit_syncobj]]
   128  	nr_in_syncobjs	len[in_syncobjs, int32]
   129  	nr_out_syncobjs	len[out_syncobjs, int32]
   130  	syncobj_stride	int32
   131  	pad		const[0, int32]
   132  }
   133  
   134  drm_msm_wait_fence {
   135  	fence	msm_fence_id
   136  	flags	flags[msm_wait_fence_flags, int32]
   137  	timeout	drm_msm_timespec
   138  	queueid	msm_submitqueue_id
   139  }
   140  
   141  drm_msm_gem_madvise {
   142  	handle		drm_gem_handle
   143  	madv		flags[msm_gem_madvise_flags, int32]
   144  	retained	int32
   145  }
   146  
   147  drm_msm_submitqueue {
   148  	flags	flags[msm_submitqueue_flags, int32]
   149  	prio	int32[0:3]
   150  	id	msm_submitqueue_id	(out)
   151  }
   152  
   153  drm_msm_submitqueue_query {
   154  	data	ptr64[out, int8]
   155  	id	msm_submitqueue_id	(in)
   156  	param	flags[msm_submitqueue_query_flags, int32]	(in)
   157  	len	len[data, int32]
   158  	pad	const[0, int32]
   159  }
   160  
   161  msm_gem_new_flags = MSM_BO_SCANOUT, MSM_BO_GPU_READONLY, MSM_BO_CACHE_MASK, MSM_BO_CACHED, MSM_BO_WC, MSM_BO_UNCACHED
   162  msm_gem_info_flags = MSM_INFO_GET_OFFSET, MSM_INFO_GET_IOVA, MSM_INFO_SET_NAME, MSM_INFO_GET_NAME, MSM_INFO_SET_IOVA
   163  msm_param_flags = MSM_PARAM_GPU_ID, MSM_PARAM_GMEM_SIZE, MSM_PARAM_CHIP_ID, MSM_PARAM_MAX_FREQ, MSM_PARAM_TIMESTAMP, MSM_PARAM_GMEM_BASE, MSM_PARAM_NR_RINGS, MSM_PARAM_PP_PGTABLE, MSM_PARAM_FAULTS, MSM_PARAM_PRIORITIES, MSM_PARAM_SUSPENDS, MSM_PARAM_VA_START, MSM_PARAM_VA_SIZE
   164  msm_param_set_flags = MSM_PARAM_SYSPROF, MSM_PARAM_COMM, MSM_PARAM_CMDLINE
   165  msm_gem_cpu_prep_flags = MSM_PREP_READ, MSM_PREP_WRITE, MSM_PREP_NOSYNC, MSM_PREP_BOOST
   166  msm_pipe_flags = MSM_PIPE_NONE, MSM_PIPE_2D0, MSM_PIPE_2D1, MSM_PIPE_3D0
   167  msm_gem_submit_flags = MSM_PIPE_NONE, MSM_PIPE_2D0, MSM_PIPE_2D1, MSM_PIPE_3D0, MSM_SUBMIT_NO_IMPLICIT, MSM_SUBMIT_FENCE_FD_IN, MSM_SUBMIT_FENCE_FD_OUT, MSM_SUBMIT_SUDO, MSM_SUBMIT_SYNCOBJ_IN, MSM_SUBMIT_SYNCOBJ_OUT, MSM_SUBMIT_FENCE_SN_IN
   168  msm_gem_submit_bo_flags = MSM_SUBMIT_BO_READ, MSM_SUBMIT_BO_WRITE, MSM_SUBMIT_BO_DUMP
   169  msm_gem_submit_syncobj_flags = MSM_SYNCOBJ_RESET
   170  msm_gem_submit_cmd_flags = MSM_SUBMIT_CMD_BUF, MSM_SUBMIT_CMD_IB_TARGET_BUF, MSM_SUBMIT_CMD_CTX_RESTORE_BUF
   171  msm_gem_madvise_flags = MSM_MADV_WILLNEED, MSM_MADV_DONTNEED, __MSM_MADV_PURGED
   172  msm_submitqueue_flags = MSM_SUBMITQUEUE_FLAGS
   173  msm_submitqueue_query_flags = MSM_SUBMITQUEUE_PARAM_FAULTS
   174  msm_wait_fence_flags = MSM_WAIT_FENCE_BOOST