tree: git://people.freedesktop.org/~airlied/linux.git drm-syncobj head: 0c2ce5924ab63ae73c49bef9cf369a5e9d50e79d commit: 3f58246dcd0bf3579af908c8e0a7a6715d3f51e4 [4/6] drm: add initial sync object interfaces reproduce: make htmldocs All warnings (new ones prefixed by >>): include/linux/init.h:1: warning: no structured comments found kernel/sched/core.c:2085: warning: No description found for parameter 'rf' kernel/sched/core.c:2085: warning: Excess function parameter 'cookie' description in 'try_to_wake_up_local' include/linux/kthread.h:26: warning: Excess function parameter '...' description in 'kthread_create' kernel/sys.c:1: warning: no structured comments found include/linux/device.h:969: warning: No description found for parameter 'dma_ops' drivers/dma-buf/seqno-fence.c:1: warning: no structured comments found include/linux/iio/iio.h:597: warning: No description found for parameter 'trig_readonly' include/linux/iio/trigger.h:151: warning: No description found for parameter 'indio_dev' include/linux/iio/trigger.h:151: warning: No description found for parameter 'trig' include/linux/device.h:970: warning: No description found for parameter 'dma_ops' drivers/regulator/core.c:1467: warning: Excess function parameter 'ret' description in 'regulator_dev_lookup' include/drm/drm_drv.h:439: warning: No description found for parameter 'open' include/drm/drm_drv.h:439: warning: No description found for parameter 'preclose' include/drm/drm_drv.h:439: warning: No description found for parameter 'postclose' include/drm/drm_drv.h:439: warning: No description found for parameter 'lastclose' include/drm/drm_drv.h:439: warning: No description found for parameter 'set_busid' include/drm/drm_drv.h:439: warning: No description found for parameter 'irq_handler' include/drm/drm_drv.h:439: warning: No description found for parameter 'irq_preinstall' include/drm/drm_drv.h:439: warning: No description found for parameter 'irq_postinstall' include/drm/drm_drv.h:439: warning: No description found for parameter 'irq_uninstall' include/drm/drm_drv.h:439: warning: No description found for parameter 'debugfs_init' include/drm/drm_drv.h:439: warning: No description found for parameter 'debugfs_cleanup' include/drm/drm_drv.h:439: warning: No description found for parameter 'gem_open_object' include/drm/drm_drv.h:439: warning: No description found for parameter 'gem_close_object' include/drm/drm_drv.h:439: warning: No description found for parameter 'prime_handle_to_fd' include/drm/drm_drv.h:439: warning: No description found for parameter 'prime_fd_to_handle' include/drm/drm_drv.h:439: warning: No description found for parameter 'gem_prime_export' include/drm/drm_drv.h:439: warning: No description found for parameter 'gem_prime_import' include/drm/drm_drv.h:439: warning: No description found for parameter 'gem_prime_pin' include/drm/drm_drv.h:439: warning: No description found for parameter 'gem_prime_unpin' include/drm/drm_drv.h:439: warning: No description found for parameter 'gem_prime_res_obj' include/drm/drm_drv.h:439: warning: No description found for parameter 'gem_prime_get_sg_table' include/drm/drm_drv.h:439: warning: No description found for parameter 'gem_prime_import_sg_table' include/drm/drm_drv.h:439: warning: No description found for parameter 'gem_prime_vmap' include/drm/drm_drv.h:439: warning: No description found for parameter 'gem_prime_vunmap' include/drm/drm_drv.h:439: warning: No description found for parameter 'gem_prime_mmap' include/drm/drm_drv.h:439: warning: No description found for parameter 'gem_vm_ops' include/drm/drm_drv.h:439: warning: No description found for parameter 'major' include/drm/drm_drv.h:439: warning: No description found for parameter 'minor' include/drm/drm_drv.h:439: warning: No description found for parameter 'patchlevel' include/drm/drm_drv.h:439: warning: No description found for parameter 'name' include/drm/drm_drv.h:439: warning: No description found for parameter 'desc' include/drm/drm_drv.h:439: warning: No description found for parameter 'date' include/drm/drm_drv.h:439: warning: No description found for parameter 'driver_features' include/drm/drm_drv.h:439: warning: No description found for parameter 'ioctls' include/drm/drm_drv.h:439: warning: No description found for parameter 'num_ioctls' include/drm/drm_drv.h:439: warning: No description found for parameter 'fops' include/drm/drm_color_mgmt.h:1: warning: no structured comments found drivers/gpu/drm/drm_fb_cma_helper.c:557: warning: Excess function parameter 'num_crtc' description in 'drm_fbdev_cma_init' drivers/gpu/drm/drm_fb_cma_helper.c:558: warning: Excess function parameter 'num_crtc' description in 'drm_fbdev_cma_init' >> drivers/gpu/drm/drm_syncobj.c:75: warning: No description found for parameter 'file_private' >> drivers/gpu/drm/drm_syncobj.c:75: warning: No description found for parameter 'handle' >> drivers/gpu/drm/drm_syncobj.c:75: warning: No description found for parameter 'fence' >> drivers/gpu/drm/drm_syncobj.c:75: warning: No description found for parameter 'old_fence' drivers/gpu/drm/drm_syncobj.c:101: warning: No description found for parameter 'file_private' drivers/gpu/drm/drm_syncobj.c:101: warning: No description found for parameter 'handle' drivers/gpu/drm/drm_syncobj.c:101: warning: No description found for parameter 'fence' >> drivers/gpu/drm/drm_syncobj.c:195: warning: Excess function parameter 'dev' description in 'drm_syncobj_open' >> drivers/gpu/drm/drm_syncobj.c:220: warning: Excess function parameter 'dev' description in 'drm_syncobj_release' drivers/gpu/drm/i915/intel_lpe_audio.c:342: warning: No description found for parameter 'pipe' drivers/gpu/drm/i915/intel_lpe_audio.c:342: warning: No description found for parameter 'dp_output' drivers/gpu/drm/i915/intel_lpe_audio.c:342: warning: No description found for parameter 'link_rate' drivers/gpu/drm/i915/intel_lpe_audio.c:343: warning: No description found for parameter 'pipe' drivers/gpu/drm/i915/intel_lpe_audio.c:343: warning: No description found for parameter 'dp_output' drivers/gpu/drm/i915/intel_lpe_audio.c:343: warning: No description found for parameter 'link_rate' drivers/media/dvb-core/dvb_frontend.h:677: warning: No description found for parameter 'refcount' Documentation/core-api/assoc_array.rst:13: WARNING: Enumerated list ends without a blank line; unexpected unindent. Documentation/doc-guide/sphinx.rst:110: ERROR: Unknown target name: "sphinx c domain". kernel/sched/fair.c:7616: WARNING: Inline emphasis start-string without end-string. kernel/time/timer.c:1200: ERROR: Unexpected indentation. kernel/time/timer.c:1202: ERROR: Unexpected indentation. kernel/time/timer.c:1203: WARNING: Block quote ends without a blank line; unexpected unindent. include/linux/wait.h:122: WARNING: Block quote ends without a blank line; unexpected unindent. include/linux/wait.h:125: ERROR: Unexpected indentation. include/linux/wait.h:127: WARNING: Block quote ends without a blank line; unexpected unindent. kernel/time/hrtimer.c:990: WARNING: Block quote ends without a blank line; unexpected unindent. kernel/signal.c:322: WARNING: Inline literal start-string without end-string. include/linux/iio/iio.h:219: ERROR: Unexpected indentation. include/linux/iio/iio.h:220: WARNING: Block quote ends without a blank line; unexpected unindent. include/linux/iio/iio.h:226: WARNING: Definition list ends without a blank line; unexpected unindent. drivers/iio/industrialio-core.c:639: ERROR: Unknown target name: "iio_val". drivers/iio/industrialio-core.c:646: ERROR: Unknown target name: "iio_val". drivers/message/fusion/mptbase.c:5051: WARNING: Definition list ends without a blank line; unexpected unindent. drivers/tty/serial/serial_core.c:1898: WARNING: Definition list ends without a blank line; unexpected unindent. include/linux/regulator/driver.h:271: ERROR: Unknown target name: "regulator_regmap_x_voltage". include/linux/spi/spi.h:369: ERROR: Unexpected indentation. drivers/usb/core/message.c:478: ERROR: Unexpected indentation. drivers/usb/core/message.c:479: WARNING: Block quote ends without a blank line; unexpected unindent. Documentation/driver-api/usb.rst:623: ERROR: Unknown target name: "usb_type". Documentation/driver-api/usb.rst:623: ERROR: Unknown target name: "usb_dir". Documentation/driver-api/usb.rst:623: ERROR: Unknown target name: "usb_recip". Documentation/driver-api/usb.rst:689: ERROR: Unknown target name: "usbdevfs_urb_type". sound/soc/soc-core.c:2670: ERROR: Unknown target name: "snd_soc_daifmt". sound/core/jack.c:312: ERROR: Unknown target name: "snd_jack_btn". WARNING: dvipng command 'dvipng' cannot be run (needed for math display), check the imgmath_dvipng setting vim +/file_private +75 drivers/gpu/drm/drm_syncobj.c 69 */ 70 int drm_syncobj_swap_fences(struct drm_file *file_private, 71 uint32_t handle, 72 struct dma_fence *fence, 73 struct dma_fence **old_fence) 74 { > 75 struct sync_file *sync_file = drm_syncobj_file_lookup(file_private, handle); 76 77 if (!sync_file) 78 return -EINVAL; 79 80 *old_fence = sync_file_replace_fence(sync_file, fence); 81 if (*old_fence) 82 return -EINVAL; 83 return 0; 84 } 85 EXPORT_SYMBOL(drm_syncobj_swap_fences); 86 87 /** 88 * drm_syncobj_replace_fence - lookup and replace fence in a sync object. 89 * @file_private - drm file private pointer. 90 * @handle - syncobj handle to lookup 91 * @fence - fence to install in sync file. 92 * Returns: 0 on success or -EINVAL on error 93 * 94 * This looks up a sync object and replaces the fence on it, freeing 95 * the old one. 96 */ 97 int drm_syncobj_replace_fence(struct drm_file *file_private, 98 u32 handle, 99 struct dma_fence *fence) 100 { 101 struct dma_fence *old_fence; 102 int r; 103 104 r = drm_syncobj_swap_fences(file_private, handle, fence, &old_fence); 105 if (r) 106 return r; 107 dma_fence_put(old_fence); 108 return 0; 109 } 110 EXPORT_SYMBOL(drm_syncobj_replace_fence); 111 112 static int drm_syncobj_create(struct drm_file *file_private, 113 unsigned type, 114 unsigned flags, u32 *handle) 115 { 116 struct sync_file *sync_file = sync_file_alloc(); 117 int ret; 118 119 idr_preload(GFP_KERNEL); 120 spin_lock(&file_private->syncobj_table_lock); 121 ret = idr_alloc(&file_private->syncobj_idr, sync_file, 1, 0, GFP_NOWAIT); 122 spin_unlock(&file_private->syncobj_table_lock); 123 124 idr_preload_end(); 125 126 if (ret < 0) 127 return ret; 128 129 *handle = ret; 130 return 0; 131 } 132 133 static void drm_syncobj_destroy(struct drm_file *file_private, 134 u32 handle) 135 { 136 struct sync_file *sync_file = drm_syncobj_file_lookup(file_private, handle); 137 if (!sync_file) 138 return; 139 140 spin_lock(&file_private->syncobj_table_lock); 141 idr_remove(&file_private->syncobj_idr, handle); 142 spin_unlock(&file_private->syncobj_table_lock); 143 144 fput(sync_file->file); 145 } 146 147 static int drm_syncobj_handle_to_fd(struct drm_file *file_private, 148 u32 handle, int *fd) 149 { 150 struct sync_file *sync_file = drm_syncobj_file_lookup(file_private, handle); 151 int ret; 152 if (!sync_file) 153 return -EINVAL; 154 155 ret = get_unused_fd_flags(O_CLOEXEC); 156 if (ret < 0) 157 return ret; 158 fd_install(ret, sync_file->file); 159 *fd = ret; 160 return 0; 161 } 162 163 static int drm_syncobj_fd_to_handle(struct drm_file *file_private, 164 int fd, u32 *handle) 165 { 166 struct sync_file *sync_file = sync_file_fdget(fd); 167 int ret; 168 if (!sync_file) 169 return -EINVAL; 170 idr_preload(GFP_KERNEL); 171 spin_lock(&file_private->syncobj_table_lock); 172 ret = idr_alloc(&file_private->syncobj_idr, sync_file, 1, 0, GFP_NOWAIT); 173 spin_unlock(&file_private->syncobj_table_lock); 174 idr_preload_end(); 175 176 if (ret < 0) { 177 fput(sync_file->file); 178 return ret; 179 } 180 *handle = ret; 181 return 0; 182 } 183 184 /** 185 * drm_syncobj_open - initalizes syncobj file-private structures at devnode open time 186 * @dev: drm_device which is being opened by userspace 187 * @file_private: drm file-private structure to set up 188 * 189 * Called at device open time, sets up the structure for handling refcounting 190 * of sync objects. 191 */ 192 void 193 drm_syncobj_open(struct drm_file *file_private) 194 { > 195 idr_init(&file_private->syncobj_idr); 196 spin_lock_init(&file_private->syncobj_table_lock); 197 } 198 199 static int 200 drm_syncobj_release_handle(int id, void *ptr, void *data) 201 { 202 struct sync_file *sync_file = ptr; 203 204 fput(sync_file->file); 205 return 0; 206 } 207 208 /** 209 * drm_syncobj_release - release file-private sync object resources 210 * @dev: drm_device which is being closed by userspace 211 * @file_private: drm file-private structure to clean up 212 * 213 * Called at close time when the filp is going away. 214 * 215 * Releases any remaining references on objects by this filp. 216 */ 217 void 218 drm_syncobj_release(struct drm_file *file_private) 219 { > 220 idr_for_each(&file_private->syncobj_idr, 221 &drm_syncobj_release_handle, file_private); 222 idr_destroy(&file_private->syncobj_idr); 223 } --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip
_______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel