| 1 | # SPDX-License-Identifier: GPL-2.0-only |
| 2 | menu "DMABUF options" |
| 3 | |
| 4 | config SYNC_FILE |
| 5 | bool "Explicit Synchronization Framework" |
| 6 | default n |
| 7 | select DMA_SHARED_BUFFER |
| 8 | help |
| 9 | The Sync File Framework adds explicit synchronization via |
| 10 | userspace. It enables send/receive 'struct dma_fence' objects to/from |
| 11 | userspace via Sync File fds for synchronization between drivers via |
| 12 | userspace components. It has been ported from Android. |
| 13 | |
| 14 | The first and main user for this is graphics in which a fence is |
| 15 | associated with a buffer. When a job is submitted to the GPU a fence |
| 16 | is attached to the buffer and is transferred via userspace, using Sync |
| 17 | Files fds, to the DRM driver for example. More details at |
| 18 | Documentation/driver-api/sync_file.rst. |
| 19 | |
| 20 | config SW_SYNC |
| 21 | bool "Sync File Validation Framework" |
| 22 | default n |
| 23 | depends on SYNC_FILE |
| 24 | depends on DEBUG_FS |
| 25 | help |
| 26 | A sync object driver that uses a 32bit counter to coordinate |
| 27 | synchronization. Useful when there is no hardware primitive backing |
| 28 | the synchronization. |
| 29 | |
| 30 | WARNING: improper use of this can result in deadlocking kernel |
| 31 | drivers from userspace. Intended for test and debug only. |
| 32 | |
| 33 | config UDMABUF |
| 34 | bool "userspace dmabuf misc driver" |
| 35 | default n |
| 36 | depends on DMA_SHARED_BUFFER |
| 37 | depends on MEMFD_CREATE || COMPILE_TEST |
| 38 | depends on MMU |
| 39 | help |
| 40 | A driver to let userspace turn memfd regions into dma-bufs. |
| 41 | Qemu can use this to create host dmabufs for guest framebuffers. |
| 42 | |
| 43 | config DMABUF_DEBUG |
| 44 | bool "DMA-BUF debug checks" |
| 45 | depends on DMA_SHARED_BUFFER |
| 46 | default y if DEBUG |
| 47 | help |
| 48 | This option enables additional checks for DMA-BUF importers and |
| 49 | exporters. Specifically it validates that importers do not peek at the |
| 50 | underlying struct page when they import a buffer. |
| 51 | |
| 52 | config DMABUF_KUNIT_TEST |
| 53 | tristate "KUnit tests for DMA-BUF" if !KUNIT_ALL_TESTS |
| 54 | depends on KUNIT |
| 55 | select DMA_SHARED_BUFFER |
| 56 | default KUNIT_ALL_TESTS |
| 57 | help |
| 58 | Enable kunit tests for DMA-BUF |
| 59 | |
| 60 | menuconfig DMABUF_HEAPS |
| 61 | bool "DMA-BUF Userland Memory Heaps" |
| 62 | select DMA_SHARED_BUFFER |
| 63 | help |
| 64 | Choose this option to enable the DMA-BUF userland memory heaps. |
| 65 | This options creates per heap chardevs in /dev/dma_heap/ which |
| 66 | allows userspace to allocate dma-bufs that can be shared |
| 67 | between drivers. |
| 68 | |
| 69 | source "drivers/dma-buf/heaps/Kconfig" |
| 70 | |
| 71 | endmenu |