aboutsummaryrefslogtreecommitdiff
path: root/Documentation/dma-buf.rst
blob: 939d1ad1075e1b55a222cf70983dcde63486b663 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
==================================
Buffer Sharing and Synchronization
==================================


Introduction
------------

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:

* dma-buf_: represents an sg_table, and is exposed to userspace as a file
  descriptor to allow passing between devices,

* fence_: which provides a mechanism to signal when one device has finished
  access, and
 
* reservation_: manages the shared or exclusive fence(s) associated with the
  buffer.

.. _dma-buf:

dma-buf
~~~~~~~

.. kernel-doc:: drivers/dma-buf/dma-buf.c
   :export:

.. kernel-doc:: include/linux/dma-buf.h
   :internal:

.. _fence:

fence
~~~~~

.. kernel-doc:: drivers/dma-buf/fence.c
   :export:

.. kernel-doc:: include/linux/fence.h
   :internal:

.. kernel-doc:: drivers/dma-buf/seqno-fence.c
   :export:

.. kernel-doc:: include/linux/seqno-fence.h
   :internal:

.. kernel-doc:: drivers/dma-buf/sync_file.c
   :export:

.. kernel-doc:: include/linux/sync_file.h
   :internal:

.. _reservation:

reservation
~~~~~~~~~~~

.. 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: