# 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 syncronization 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 DEBUG_DMA_BUF_REF
	bool "DEBUG Reference Count"
	depends on STACKDEPOT
	depends on DMA_SHARED_BUFFER
	default n
	help
	  Save stack traces for every call to dma_buf_get and dma_buf_put, to
	  help debug memory leaks. Potential leaks may be found by manually
	  matching the get/put call stacks.  This feature consumes extra memory
	  in order to save the stack traces using STACKDEPOT.

config DMABUF_DESTRUCTOR_SUPPORT
	bool "dmabuf destructor support"
	default n
	depends on DMA_SHARED_BUFFER
	depends on QGKI
	help
	  dma-buf destructor support is useful as it allows clients an
	  opportunity to undo any attributes, such as security attributes,
	  they have applied to the dma-buf's memory.

	  The destructor is called when the dma-buf is freed, if the destructor
	  returns an error the dma-buf's exporter release function is not
	  called in order to ensure that memory which has not been properly
	  cleaned up isn't returned to the system

config UDMABUF
	bool "userspace dmabuf misc driver"
	default n
	depends on DMA_SHARED_BUFFER
	depends on MEMFD_CREATE || COMPILE_TEST
	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_SELFTESTS
	tristate "Selftests for the dma-buf interfaces"
	default n
	depends on DMA_SHARED_BUFFER

endmenu