| # SPDX-License-Identifier: GPL-2.0-only | |
| menuconfig VFIO | |
| tristate "VFIO Non-Privileged userspace driver framework" | |
| select IOMMU_API | |
| depends on IOMMUFD || !IOMMUFD | |
| select INTERVAL_TREE | |
| select VFIO_GROUP if SPAPR_TCE_IOMMU || IOMMUFD=n | |
| select VFIO_DEVICE_CDEV if !VFIO_GROUP | |
| select VFIO_CONTAINER if IOMMUFD=n | |
| help | |
| VFIO provides a framework for secure userspace device drivers. | |
| See Documentation/driver-api/vfio.rst for more details. | |
| If you don't know what to do here, say N. | |
| if VFIO | |
| config VFIO_DEVICE_CDEV | |
| bool "Support for the VFIO cdev /dev/vfio/devices/vfioX" | |
| depends on IOMMUFD && !SPAPR_TCE_IOMMU | |
| default !VFIO_GROUP | |
| help | |
| The VFIO device cdev is another way for userspace to get device | |
| access. Userspace gets device fd by opening device cdev under | |
| /dev/vfio/devices/vfioX, and then bind the device fd with an iommufd | |
| to set up secure DMA context for device access. | |
| If you don't know what to do here, say N. | |
| config VFIO_GROUP | |
| bool "Support for the VFIO group /dev/vfio/$group_id" | |
| default y | |
| help | |
| VFIO group support provides the traditional model for accessing | |
| devices through VFIO and is used by the majority of userspace | |
| applications and drivers making use of VFIO. | |
| If you don't know what to do here, say Y. | |
| config VFIO_CONTAINER | |
| bool "Support for the VFIO container /dev/vfio/vfio" | |
| select VFIO_IOMMU_TYPE1 if MMU && (X86 || S390 || ARM || ARM64) | |
| depends on VFIO_GROUP | |
| default y | |
| help | |
| The VFIO container is the classic interface to VFIO for establishing | |
| IOMMU mappings. If N is selected here then IOMMUFD must be used to | |
| manage the mappings. | |
| Unless testing IOMMUFD say Y here. | |
| if VFIO_CONTAINER | |
| config VFIO_IOMMU_TYPE1 | |
| tristate | |
| default n | |
| config VFIO_IOMMU_SPAPR_TCE | |
| tristate | |
| depends on SPAPR_TCE_IOMMU | |
| default VFIO | |
| endif | |
| config VFIO_NOIOMMU | |
| bool "VFIO No-IOMMU support" | |
| depends on VFIO_GROUP || (VFIO_DEVICE_CDEV && !GENERIC_ATOMIC64) | |
| depends on !VFIO_GROUP || VFIO_CONTAINER || IOMMUFD_VFIO_CONTAINER | |
| select IOMMUFD_NOIOMMU if VFIO_DEVICE_CDEV && !GENERIC_ATOMIC64 | |
| help | |
| VFIO is built on the ability to isolate devices using the IOMMU. | |
| Only with an IOMMU can userspace access to DMA capable devices be | |
| considered secure. VFIO No-IOMMU mode enables IOMMU groups for | |
| devices without IOMMU backing for the purpose of re-using the VFIO | |
| infrastructure in a non-secure mode. Use of this mode will result | |
| in an unsupportable kernel and will therefore taint the kernel. | |
| Device assignment to virtual machines is also not possible with | |
| this mode since there is no IOMMU to provide DMA translation. | |
| If you don't know what to do here, say N. | |
| config VFIO_VIRQFD | |
| bool | |
| select EVENTFD | |
| default n | |
| config VFIO_DEBUGFS | |
| bool "Export VFIO internals in DebugFS" | |
| depends on DEBUG_FS | |
| help | |
| Allows exposure of VFIO device internals. This option enables | |
| the use of debugfs by VFIO drivers as required. The device can | |
| cause the VFIO code create a top-level debug/vfio directory | |
| during initialization, and then populate a subdirectory with | |
| entries as required. | |
| source "drivers/vfio/pci/Kconfig" | |
| source "drivers/vfio/platform/Kconfig" | |
| source "drivers/vfio/mdev/Kconfig" | |
| source "drivers/vfio/fsl-mc/Kconfig" | |
| source "drivers/vfio/cdx/Kconfig" | |
| endif | |
| source "virt/lib/Kconfig" |