-
- Downloads
dma-buf: Introduce new locking convention
All dma-bufs have dma-reservation lock that allows drivers to perform
exclusive operations over shared dma-bufs. Today's dma-buf API has
incomplete locking specification, which creates dead lock situation
for dma-buf importers and exporters that don't coordinate theirs locks.
This patch introduces new locking convention for dma-buf users. From now
on all dma-buf importers are responsible for holding dma-buf reservation
lock around operations performed over dma-bufs.
This patch implements the new dma-buf locking convention by:
1. Making dma-buf API functions to take the reservation lock.
2. Adding new locked variants of the dma-buf API functions for drivers
that need to manage imported dma-bufs under the held lock.
3. Converting all drivers to the new locking scheme.
Signed-off-by:
Dmitry Osipenko <dmitry.osipenko@collabora.com>
Showing
- drivers/dma-buf/dma-buf.c 172 additions, 98 deletionsdrivers/dma-buf/dma-buf.c
- drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c 4 additions, 2 deletionsdrivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
- drivers/gpu/drm/drm_client.c 2 additions, 2 deletionsdrivers/gpu/drm/drm_client.c
- drivers/gpu/drm/drm_gem.c 33 additions, 0 deletionsdrivers/gpu/drm/drm_gem.c
- drivers/gpu/drm/drm_gem_framebuffer_helper.c 3 additions, 3 deletionsdrivers/gpu/drm/drm_gem_framebuffer_helper.c
- drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c 5 additions, 5 deletionsdrivers/gpu/drm/i915/gem/i915_gem_dmabuf.c
- drivers/gpu/drm/qxl/qxl_object.c 9 additions, 8 deletionsdrivers/gpu/drm/qxl/qxl_object.c
- drivers/gpu/drm/qxl/qxl_prime.c 2 additions, 2 deletionsdrivers/gpu/drm/qxl/qxl_prime.c
- drivers/media/common/videobuf2/videobuf2-dma-contig.c 1 addition, 10 deletionsdrivers/media/common/videobuf2/videobuf2-dma-contig.c
- drivers/media/common/videobuf2/videobuf2-dma-sg.c 1 addition, 10 deletionsdrivers/media/common/videobuf2/videobuf2-dma-sg.c
- drivers/media/common/videobuf2/videobuf2-vmalloc.c 1 addition, 10 deletionsdrivers/media/common/videobuf2/videobuf2-vmalloc.c
- include/drm/drm_gem.h 3 additions, 0 deletionsinclude/drm/drm_gem.h
- include/linux/dma-buf.h 5 additions, 9 deletionsinclude/linux/dma-buf.h
Loading
Please register or sign in to comment