| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- # 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. This interface does
- not support noiommu.
- 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
- 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"
|