blob: a9b457a4b949e09ff903f7bfcd97af2bc5ca068c [file] [log] [blame]
Daniel Vetter868c97a2016-12-09 19:53:05 +01001Buffer Sharing and Synchronization
2==================================
3
4The dma-buf subsystem provides the framework for sharing buffers for
5hardware (DMA) access across multiple device drivers and subsystems, and
6for synchronizing asynchronous hardware access.
7
8This is used, for example, by drm "prime" multi-GPU support, but is of
9course not limited to GPU use cases.
10
11The three main components of this are: (1) dma-buf, representing a
12sg_table and exposed to userspace as a file descriptor to allow passing
13between devices, (2) fence, which provides a mechanism to signal when
14one device as finished access, and (3) reservation, which manages the
15shared or exclusive fence(s) associated with the buffer.
16
17Shared DMA Buffers
18------------------
19
20.. kernel-doc:: drivers/dma-buf/dma-buf.c
21 :export:
22
23.. kernel-doc:: include/linux/dma-buf.h
24 :internal:
25
26Reservation Objects
27-------------------
28
29.. kernel-doc:: drivers/dma-buf/reservation.c
30 :doc: Reservation Object Overview
31
32.. kernel-doc:: drivers/dma-buf/reservation.c
33 :export:
34
35.. kernel-doc:: include/linux/reservation.h
36 :internal:
37
38DMA Fences
39----------
40
41.. kernel-doc:: drivers/dma-buf/dma-fence.c
42 :export:
43
44.. kernel-doc:: include/linux/dma-fence.h
45 :internal:
46
47Seqno Hardware Fences
48~~~~~~~~~~~~~~~~~~~~~
49
50.. kernel-doc:: drivers/dma-buf/seqno-fence.c
51 :export:
52
53.. kernel-doc:: include/linux/seqno-fence.h
54 :internal:
55
56DMA Fence Array
57~~~~~~~~~~~~~~~
58
59.. kernel-doc:: drivers/dma-buf/dma-fence-array.c
60 :export:
61
62.. kernel-doc:: include/linux/dma-fence-array.h
63 :internal:
64
65DMA Fence uABI/Sync File
66~~~~~~~~~~~~~~~~~~~~~~~~
67
68.. kernel-doc:: drivers/dma-buf/sync_file.c
69 :export:
70
71.. kernel-doc:: include/linux/sync_file.h
72 :internal:
73