| # SPDX-License-Identifier: GPL-2.0-only |
| menu "DMABUF options" |
| |
| config SYNC_FILE |
| bool "Explicit Synchronization Framework" |
| default n |
| select DMA_SHARED_BUFFER |
| help |
| The Sync File Framework adds explicit synchronization via |
| userspace. It enables send/receive 'struct dma_fence' objects to/from |
| userspace via Sync File fds for synchronization between drivers via |
| userspace components. It has been ported from Android. |
| |
| The first and main user for this is graphics in which a fence is |
| associated with a buffer. When a job is submitted to the GPU a fence |
| is attached to the buffer and is transferred via userspace, using Sync |
| Files fds, to the DRM driver for example. More details at |
| Documentation/driver-api/sync_file.rst. |
| |
| config SW_SYNC |
| bool "Sync File Validation Framework" |
| default n |
| depends on SYNC_FILE |
| depends on DEBUG_FS |
| help |
| A sync object driver that uses a 32bit counter to coordinate |
| synchronization. Useful when there is no hardware primitive backing |
| the synchronization. |
| |
| WARNING: improper use of this can result in deadlocking kernel |
| drivers from userspace. Intended for test and debug only. |
| |
| config UDMABUF |
| bool "userspace dmabuf misc driver" |
| default n |
| depends on DMA_SHARED_BUFFER |
| depends on MEMFD_CREATE || COMPILE_TEST |
| depends on MMU |
| help |
| A driver to let userspace turn memfd regions into dma-bufs. |
| Qemu can use this to create host dmabufs for guest framebuffers. |
| |
| config DMABUF_MOVE_NOTIFY |
| bool "Move notify between drivers (EXPERIMENTAL)" |
| default n |
| depends on DMA_SHARED_BUFFER |
| help |
| Don't pin buffers if the dynamic DMA-buf interface is available on |
| both the exporter as well as the importer. This fixes a security |
| problem where userspace is able to pin unrestricted amounts of memory |
| through DMA-buf. |
| This is marked experimental because we don't yet have a consistent |
| execution context and memory management between drivers. |
| |
| config DMABUF_DEBUG |
| bool "DMA-BUF debug checks" |
| depends on DMA_SHARED_BUFFER |
| default y if DMA_API_DEBUG |
| help |
| This option enables additional checks for DMA-BUF importers and |
| exporters. Specifically it validates that importers do not peek at the |
| underlying struct page when they import a buffer. |
| |
| config DMABUF_SELFTESTS |
| tristate "Selftests for the dma-buf interfaces" |
| default n |
| depends on DMA_SHARED_BUFFER |
| |
| menuconfig DMABUF_HEAPS |
| bool "DMA-BUF Userland Memory Heaps" |
| select DMA_SHARED_BUFFER |
| help |
| Choose this option to enable the DMA-BUF userland memory heaps. |
| This options creates per heap chardevs in /dev/dma_heap/ which |
| allows userspace to allocate dma-bufs that can be shared |
| between drivers. |
| |
| menuconfig DMABUF_SYSFS_STATS |
| bool "DMA-BUF sysfs statistics (DEPRECATED)" |
| depends on DMA_SHARED_BUFFER |
| help |
| Choose this option to enable DMA-BUF sysfs statistics |
| in location /sys/kernel/dmabuf/buffers. |
| |
| /sys/kernel/dmabuf/buffers/<inode_number> will contain |
| statistics for the DMA-BUF with the unique inode number |
| <inode_number>. |
| |
| This option is deprecated and should sooner or later be removed. |
| Android is the only user of this and it turned out that this resulted |
| in quite some performance problems. |
| |
| source "drivers/dma-buf/heaps/Kconfig" |
| |
| endmenu |