1
0
Fork 0
alistair23-linux/drivers/dma-buf
Chris Wilson 71ebc9a379 dma-buf/sync-file: Defer creation of sync_file->name
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.

v2: Update kerneldoc (kbuild test robot)
v3: sync_debug.c was peeking at the name
v4: Comment upon the potential race between two users of
sync_file_get_name() and claim that such a race is below the level of
notice. However, to prevent any future nuisance, use a global spinlock
to serialize the assignment of the name.
v5: Completely avoid the read/write race by only storing the name passed
in from the user inside sync_file->user_name and passing in a buffer to
dynamically construct the name otherwise.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Sumit Semwal <sumit.semwal@linaro.org>
Cc: Gustavo Padovan <gustavo@padovan.org>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: David Herrmann <dh.herrmann@gmail.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170516111042.24719-1-chris@chris-wilson.co.uk
2017-05-24 13:08:29 -03:00
..
Kconfig dma-buf: Rename struct fence to dma_fence 2016-10-25 14:40:39 +02:00
Makefile dma-buf: Rename struct fence to dma_fence 2016-10-25 14:40:39 +02:00
dma-buf.c dma-buf: Adjust a null pointer check in dma_buf_attach() 2017-05-08 20:50:21 +05:30
dma-fence-array.c dma-fence: add dma_fence_match_context helper 2017-03-17 23:51:36 +05:30
dma-fence.c dma-buf: avoid scheduling on fence status query v2 2017-04-27 16:56:10 -03:00
reservation.c reservation: revert "wait only with non-zero timeout specified (v3)" v2 2016-11-09 00:48:57 +05:30
seqno-fence.c dma-buf: Rename struct fence to dma_fence 2016-10-25 14:40:39 +02:00
sw_sync.c dma-buf/sw_sync: put fence reference from the fence creation 2016-11-08 23:57:40 +05:30
sync_debug.c dma-buf/sync-file: Defer creation of sync_file->name 2017-05-24 13:08:29 -03:00
sync_debug.h dma-buf: Rename struct fence to dma_fence 2016-10-25 14:40:39 +02:00
sync_file.c dma-buf/sync-file: Defer creation of sync_file->name 2017-05-24 13:08:29 -03:00
sync_trace.h dma-buf/sw_sync: de-stage SW_SYNC 2016-08-15 16:41:46 +02:00