74 lines
1.7 KiB
ReStructuredText
74 lines
1.7 KiB
ReStructuredText
Buffer Sharing and Synchronization
|
|
==================================
|
|
|
|
The dma-buf subsystem provides the framework for sharing buffers for
|
|
hardware (DMA) access across multiple device drivers and subsystems, and
|
|
for synchronizing asynchronous hardware access.
|
|
|
|
This is used, for example, by drm "prime" multi-GPU support, but is of
|
|
course not limited to GPU use cases.
|
|
|
|
The three main components of this are: (1) dma-buf, representing a
|
|
sg_table and exposed to userspace as a file descriptor to allow passing
|
|
between devices, (2) fence, which provides a mechanism to signal when
|
|
one device as finished access, and (3) reservation, which manages the
|
|
shared or exclusive fence(s) associated with the buffer.
|
|
|
|
Shared DMA Buffers
|
|
------------------
|
|
|
|
.. kernel-doc:: drivers/dma-buf/dma-buf.c
|
|
:export:
|
|
|
|
.. kernel-doc:: include/linux/dma-buf.h
|
|
:internal:
|
|
|
|
Reservation Objects
|
|
-------------------
|
|
|
|
.. kernel-doc:: drivers/dma-buf/reservation.c
|
|
:doc: Reservation Object Overview
|
|
|
|
.. kernel-doc:: drivers/dma-buf/reservation.c
|
|
:export:
|
|
|
|
.. kernel-doc:: include/linux/reservation.h
|
|
:internal:
|
|
|
|
DMA Fences
|
|
----------
|
|
|
|
.. kernel-doc:: drivers/dma-buf/dma-fence.c
|
|
:export:
|
|
|
|
.. kernel-doc:: include/linux/dma-fence.h
|
|
:internal:
|
|
|
|
Seqno Hardware Fences
|
|
~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
.. kernel-doc:: drivers/dma-buf/seqno-fence.c
|
|
:export:
|
|
|
|
.. kernel-doc:: include/linux/seqno-fence.h
|
|
:internal:
|
|
|
|
DMA Fence Array
|
|
~~~~~~~~~~~~~~~
|
|
|
|
.. kernel-doc:: drivers/dma-buf/dma-fence-array.c
|
|
:export:
|
|
|
|
.. kernel-doc:: include/linux/dma-fence-array.h
|
|
:internal:
|
|
|
|
DMA Fence uABI/Sync File
|
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
.. kernel-doc:: drivers/dma-buf/sync_file.c
|
|
:export:
|
|
|
|
.. kernel-doc:: include/linux/sync_file.h
|
|
:internal:
|
|
|