Message ID | 20170512113042.14646-1-chris@chris-wilson.co.uk (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Chris, [auto build test WARNING on linus/master] [also build test WARNING on v4.11 next-20170512] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Chris-Wilson/dma-buf-sync-file-Defer-creation-of-sync_file-name/20170512-193751 reproduce: make htmldocs All warnings (new ones prefixed by >>): WARNING: convert(1) not found, for SVG to PDF conversion install ImageMagick (https://www.imagemagick.org) arch/x86/include/asm/uaccess_32.h:1: warning: no structured comments found include/linux/init.h:1: warning: no structured comments found include/linux/mod_devicetable.h:686: warning: Excess struct/union/enum/typedef member 'ver_major' description in 'fsl_mc_device_id' include/linux/mod_devicetable.h:686: warning: Excess struct/union/enum/typedef member 'ver_minor' description in 'fsl_mc_device_id' kernel/sched/core.c:2088: warning: No description found for parameter 'rf' kernel/sched/core.c:2088: 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/sync_file.h:47: warning: No description found for parameter 'user_name' >> include/linux/sync_file.h:47: warning: Excess struct/union/enum/typedef member 'name' description in 'sync_file' 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' include/linux/usb/gadget.h:230: warning: No description found for parameter 'claimed' include/linux/usb/gadget.h:230: warning: No description found for parameter 'enabled' include/linux/usb/gadget.h:408: warning: No description found for parameter 'quirk_altset_not_supp' include/linux/usb/gadget.h:408: warning: No description found for parameter 'quirk_stall_not_supp' include/linux/usb/gadget.h:408: warning: No description found for parameter 'quirk_zlp_not_supp' include/drm/drm_drv.h:524: warning: No description found for parameter 'set_busid' include/drm/drm_drv.h:524: warning: No description found for parameter 'irq_handler' include/drm/drm_drv.h:524: warning: No description found for parameter 'irq_preinstall' include/drm/drm_drv.h:524: warning: No description found for parameter 'irq_postinstall' include/drm/drm_drv.h:524: warning: No description found for parameter 'irq_uninstall' include/drm/drm_drv.h:524: warning: No description found for parameter 'debugfs_init' include/drm/drm_drv.h:524: warning: No description found for parameter 'gem_open_object' include/drm/drm_drv.h:524: warning: No description found for parameter 'gem_close_object' include/drm/drm_drv.h:524: warning: No description found for parameter 'prime_handle_to_fd' include/drm/drm_drv.h:524: warning: No description found for parameter 'prime_fd_to_handle' include/drm/drm_drv.h:524: warning: No description found for parameter 'gem_prime_export' include/drm/drm_drv.h:524: warning: No description found for parameter 'gem_prime_import' include/drm/drm_drv.h:524: warning: No description found for parameter 'gem_prime_pin' include/drm/drm_drv.h:524: warning: No description found for parameter 'gem_prime_unpin' include/drm/drm_drv.h:524: warning: No description found for parameter 'gem_prime_res_obj' include/drm/drm_drv.h:524: warning: No description found for parameter 'gem_prime_get_sg_table' include/drm/drm_drv.h:524: warning: No description found for parameter 'gem_prime_import_sg_table' include/drm/drm_drv.h:524: warning: No description found for parameter 'gem_prime_vmap' include/drm/drm_drv.h:524: warning: No description found for parameter 'gem_prime_vunmap' include/drm/drm_drv.h:524: warning: No description found for parameter 'gem_prime_mmap' include/drm/drm_drv.h:524: warning: No description found for parameter 'gem_vm_ops' include/drm/drm_drv.h:524: warning: No description found for parameter 'major' include/drm/drm_drv.h:524: warning: No description found for parameter 'minor' include/drm/drm_drv.h:524: warning: No description found for parameter 'patchlevel' include/drm/drm_drv.h:524: warning: No description found for parameter 'name' include/drm/drm_drv.h:524: warning: No description found for parameter 'desc' include/drm/drm_drv.h:524: warning: No description found for parameter 'date' include/drm/drm_drv.h:524: warning: No description found for parameter 'driver_features' include/drm/drm_drv.h:524: warning: No description found for parameter 'ioctls' include/drm/drm_drv.h:524: warning: No description found for parameter 'num_ioctls' include/drm/drm_drv.h:524: warning: No description found for parameter 'fops' include/drm/drm_color_mgmt.h:1: warning: no structured comments found drivers/gpu/drm/drm_plane_helper.c:403: warning: No description found for parameter 'ctx' drivers/gpu/drm/drm_plane_helper.c:404: warning: No description found for parameter 'ctx' drivers/gpu/drm/i915/intel_lpe_audio.c:350: warning: No description found for parameter 'dp_output' drivers/gpu/drm/i915/intel_lpe_audio.c:350: warning: No description found for parameter 'link_rate' drivers/gpu/drm/i915/intel_lpe_audio.c:351: warning: No description found for parameter 'dp_output' drivers/gpu/drm/i915/intel_lpe_audio.c:351: warning: No description found for parameter 'link_rate' Documentation/core-api/assoc_array.rst:13: WARNING: Enumerated list ends without a blank line; unexpected unindent. Documentation/doc-guide/sphinx.rst:126: ERROR: Unknown target name: "sphinx c domain". kernel/sched/fair.c:7650: 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:638: ERROR: Unknown target name: "iio_val". drivers/iio/industrialio-core.c:645: 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. drivers/pci/pci.c:3456: ERROR: Unexpected indentation. include/linux/regulator/driver.h:271: ERROR: Unknown target name: "regulator_regmap_x_voltage". include/linux/spi/spi.h:370: ERROR: Unexpected indentation. drivers/gpu/drm/drm_scdc_helper.c:203: ERROR: Unexpected indentation. drivers/gpu/drm/drm_scdc_helper.c:204: WARNING: Block quote ends without a blank line; unexpected unindent. drivers/gpu/drm/drm_ioctl.c:690: WARNING: Definition list ends without a blank line; unexpected unindent. Documentation/gpu/todo.rst:111: ERROR: Unknown target name: "drm_fb". 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". Documentation/usb/typec.rst:116: ERROR: Error in "kernel-doc" directive: invalid option block. vim +/user_name +47 include/linux/sync_file.h a02b9dc90 include/linux/sync_file.h Gustavo Padovan 2016-08-05 31 * @fence: fence with the fences in the sync_file a02b9dc90 include/linux/sync_file.h Gustavo Padovan 2016-08-05 32 * @cb: fence callback information d4cab38e1 drivers/staging/android/sync_file.h Gustavo Padovan 2016-04-28 33 */ d4cab38e1 drivers/staging/android/sync_file.h Gustavo Padovan 2016-04-28 34 struct sync_file { d4cab38e1 drivers/staging/android/sync_file.h Gustavo Padovan 2016-04-28 35 struct file *file; d4cab38e1 drivers/staging/android/sync_file.h Gustavo Padovan 2016-04-28 36 struct kref kref; 184ed11f9 include/linux/sync_file.h Chris Wilson 2017-05-12 37 char user_name[32]; d4cab38e1 drivers/staging/android/sync_file.h Gustavo Padovan 2016-04-28 38 #ifdef CONFIG_DEBUG_FS d4cab38e1 drivers/staging/android/sync_file.h Gustavo Padovan 2016-04-28 39 struct list_head sync_file_list; d4cab38e1 drivers/staging/android/sync_file.h Gustavo Padovan 2016-04-28 40 #endif d4cab38e1 drivers/staging/android/sync_file.h Gustavo Padovan 2016-04-28 41 d4cab38e1 drivers/staging/android/sync_file.h Gustavo Padovan 2016-04-28 42 wait_queue_head_t wq; d4cab38e1 drivers/staging/android/sync_file.h Gustavo Padovan 2016-04-28 43 f54d18670 include/linux/sync_file.h Chris Wilson 2016-10-25 44 struct dma_fence *fence; f54d18670 include/linux/sync_file.h Chris Wilson 2016-10-25 45 struct dma_fence_cb cb; d4cab38e1 drivers/staging/android/sync_file.h Gustavo Padovan 2016-04-28 46 }; d4cab38e1 drivers/staging/android/sync_file.h Gustavo Padovan 2016-04-28 @47 f54d18670 include/linux/sync_file.h Chris Wilson 2016-10-25 48 #define POLL_ENABLED DMA_FENCE_FLAG_USER_BITS e24165537 include/linux/sync_file.h Gustavo Padovan 2016-08-05 49 f54d18670 include/linux/sync_file.h Chris Wilson 2016-10-25 50 struct sync_file *sync_file_create(struct dma_fence *fence); f54d18670 include/linux/sync_file.h Chris Wilson 2016-10-25 51 struct dma_fence *sync_file_get_fence(int fd); d4cab38e1 drivers/staging/android/sync_file.h Gustavo Padovan 2016-04-28 52 d4cab38e1 drivers/staging/android/sync_file.h Gustavo Padovan 2016-04-28 53 #endif /* _LINUX_SYNC_H */ :::::: The code at line 47 was first introduced by commit :::::: d4cab38e153d62ecd502645390c0289c1b8337df staging/android: prepare sync_file for de-staging :::::: TO: Gustavo Padovan <gustavo.padovan@collabora.co.uk> :::::: CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Hi Chris, Thanks for the patch! 2017-05-12 Chris Wilson <chris@chris-wilson.co.uk>: > Constructing the name takes the majority of the time for allocating a > sync_file to wrap a fence, and the name is very rarely used (only via > the sync_file status user interface). To reduce the impact on the common > path (that of creating sync_file to pass around), defer the construction > of the name until it is first used. > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > Cc: Sumit Semwal <sumit.semwal@linaro.org> > Cc: Gustavo Padovan <gustavo@padovan.org> > --- > drivers/dma-buf/sync_file.c | 18 +++++++++++------- > include/linux/sync_file.h | 2 +- > 2 files changed, 12 insertions(+), 8 deletions(-) > > diff --git a/drivers/dma-buf/sync_file.c b/drivers/dma-buf/sync_file.c > index 2321035f6204..2cccfa834778 100644 > --- a/drivers/dma-buf/sync_file.c > +++ b/drivers/dma-buf/sync_file.c > @@ -82,11 +82,6 @@ struct sync_file *sync_file_create(struct dma_fence *fence) > > sync_file->fence = dma_fence_get(fence); > > - snprintf(sync_file->name, sizeof(sync_file->name), "%s-%s%llu-%d", > - fence->ops->get_driver_name(fence), > - fence->ops->get_timeline_name(fence), fence->context, > - fence->seqno); > - > return sync_file; > } > EXPORT_SYMBOL(sync_file_create); > @@ -268,7 +263,7 @@ static struct sync_file *sync_file_merge(const char *name, struct sync_file *a, > goto err; > } > > - strlcpy(sync_file->name, name, sizeof(sync_file->name)); > + strlcpy(sync_file->user_name, name, sizeof(sync_file->user_name)); > return sync_file; > > err: > @@ -422,7 +417,16 @@ static long sync_file_ioctl_fence_info(struct sync_file *sync_file, > } > > no_fences: > - strlcpy(info.name, sync_file->name, sizeof(info.name)); > + if (!sync_file->user_name[0]) { > + scnprintf(sync_file->user_name, > + sizeof(sync_file->user_name), > + "%s-%s%llu-%d", > + sync_file->fence->ops->get_driver_name(sync_file->fence), > + sync_file->fence->ops->get_timeline_name(sync_file->fence), > + sync_file->fence->context, > + sync_file->fence->seqno); > + } > + strlcpy(info.name, sync_file->user_name, sizeof(info.name)); > info.status = dma_fence_is_signaled(sync_file->fence); > info.num_fences = num_fences; > > diff --git a/include/linux/sync_file.h b/include/linux/sync_file.h > index 3e3ab84fc4cd..0cbeff29f510 100644 > --- a/include/linux/sync_file.h > +++ b/include/linux/sync_file.h > @@ -34,7 +34,7 @@ > struct sync_file { > struct file *file; > struct kref kref; > - char name[32]; > + char user_name[32]; Looks good to me, but please re-spin it fixing the issue reported by the test bot then I can apply it. Gustavo
Hi Chris,
[auto build test ERROR on linus/master]
[also build test ERROR on v4.12-rc1 next-20170516]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Chris-Wilson/dma-buf-sync-file-Defer-creation-of-sync_file-name/20170512-193751
config: x86_64-rhel (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64
All errors (new ones prefixed by >>):
drivers//dma-buf/sync_debug.c: In function 'sync_print_sync_file':
>> drivers//dma-buf/sync_debug.c:137:53: error: 'struct sync_file' has no member named 'name'
seq_printf(s, "[%p] %s: %s\n", sync_file, sync_file->name,
^~
vim +137 drivers//dma-buf/sync_debug.c
0f0d8406 drivers/staging/android/sync_debug.c Maarten Lankhorst 2014-07-01 131
d7fdb0ae drivers/staging/android/sync_debug.c Gustavo Padovan 2016-01-21 132 static void sync_print_sync_file(struct seq_file *s,
d7fdb0ae drivers/staging/android/sync_debug.c Gustavo Padovan 2016-01-21 133 struct sync_file *sync_file)
0f0d8406 drivers/staging/android/sync_debug.c Maarten Lankhorst 2014-07-01 134 {
0f0d8406 drivers/staging/android/sync_debug.c Maarten Lankhorst 2014-07-01 135 int i;
0f0d8406 drivers/staging/android/sync_debug.c Maarten Lankhorst 2014-07-01 136
d7fdb0ae drivers/staging/android/sync_debug.c Gustavo Padovan 2016-01-21 @137 seq_printf(s, "[%p] %s: %s\n", sync_file, sync_file->name,
d6c99f4b drivers/dma-buf/sync_debug.c Chris Wilson 2017-01-04 138 sync_status_str(dma_fence_get_status(sync_file->fence)));
0f0d8406 drivers/staging/android/sync_debug.c Maarten Lankhorst 2014-07-01 139
f54d1867 drivers/dma-buf/sync_debug.c Chris Wilson 2016-10-25 140 if (dma_fence_is_array(sync_file->fence)) {
:::::: The code at line 137 was first introduced by commit
:::::: d7fdb0ae9d115fa14ff3a5382c8a62de41c7786a staging/android: rename sync_fence to sync_file
:::::: TO: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
:::::: CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
diff --git a/drivers/dma-buf/sync_file.c b/drivers/dma-buf/sync_file.c index 2321035f6204..2cccfa834778 100644 --- a/drivers/dma-buf/sync_file.c +++ b/drivers/dma-buf/sync_file.c @@ -82,11 +82,6 @@ struct sync_file *sync_file_create(struct dma_fence *fence) sync_file->fence = dma_fence_get(fence); - snprintf(sync_file->name, sizeof(sync_file->name), "%s-%s%llu-%d", - fence->ops->get_driver_name(fence), - fence->ops->get_timeline_name(fence), fence->context, - fence->seqno); - return sync_file; } EXPORT_SYMBOL(sync_file_create); @@ -268,7 +263,7 @@ static struct sync_file *sync_file_merge(const char *name, struct sync_file *a, goto err; } - strlcpy(sync_file->name, name, sizeof(sync_file->name)); + strlcpy(sync_file->user_name, name, sizeof(sync_file->user_name)); return sync_file; err: @@ -422,7 +417,16 @@ static long sync_file_ioctl_fence_info(struct sync_file *sync_file, } no_fences: - strlcpy(info.name, sync_file->name, sizeof(info.name)); + if (!sync_file->user_name[0]) { + scnprintf(sync_file->user_name, + sizeof(sync_file->user_name), + "%s-%s%llu-%d", + sync_file->fence->ops->get_driver_name(sync_file->fence), + sync_file->fence->ops->get_timeline_name(sync_file->fence), + sync_file->fence->context, + sync_file->fence->seqno); + } + strlcpy(info.name, sync_file->user_name, sizeof(info.name)); info.status = dma_fence_is_signaled(sync_file->fence); info.num_fences = num_fences; diff --git a/include/linux/sync_file.h b/include/linux/sync_file.h index 3e3ab84fc4cd..0cbeff29f510 100644 --- a/include/linux/sync_file.h +++ b/include/linux/sync_file.h @@ -34,7 +34,7 @@ struct sync_file { struct file *file; struct kref kref; - char name[32]; + char user_name[32]; #ifdef CONFIG_DEBUG_FS struct list_head sync_file_list; #endif
Constructing the name takes the majority of the time for allocating a sync_file to wrap a fence, and the name is very rarely used (only via the sync_file status user interface). To reduce the impact on the common path (that of creating sync_file to pass around), defer the construction of the name until it is first used. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Sumit Semwal <sumit.semwal@linaro.org> Cc: Gustavo Padovan <gustavo@padovan.org> --- drivers/dma-buf/sync_file.c | 18 +++++++++++------- include/linux/sync_file.h | 2 +- 2 files changed, 12 insertions(+), 8 deletions(-)