1# SPDX-License-Identifier: GPL-2.0-only
2menuconfig VFIO
3	tristate "VFIO Non-Privileged userspace driver framework"
4	select IOMMU_API
5	select VFIO_IOMMU_TYPE1 if MMU && (X86 || S390 || ARM || ARM64)
6	select INTERVAL_TREE
7	help
8	  VFIO provides a framework for secure userspace device drivers.
9	  See Documentation/driver-api/vfio.rst for more details.
10
11	  If you don't know what to do here, say N.
12
13if VFIO
14config VFIO_IOMMU_TYPE1
15	tristate
16	default n
17
18config VFIO_IOMMU_SPAPR_TCE
19	tristate
20	depends on SPAPR_TCE_IOMMU
21	default VFIO
22
23config VFIO_SPAPR_EEH
24	tristate
25	depends on EEH && VFIO_IOMMU_SPAPR_TCE
26	default VFIO
27
28config VFIO_VIRQFD
29	tristate
30	select EVENTFD
31	default n
32
33config VFIO_NOIOMMU
34	bool "VFIO No-IOMMU support"
35	help
36	  VFIO is built on the ability to isolate devices using the IOMMU.
37	  Only with an IOMMU can userspace access to DMA capable devices be
38	  considered secure.  VFIO No-IOMMU mode enables IOMMU groups for
39	  devices without IOMMU backing for the purpose of re-using the VFIO
40	  infrastructure in a non-secure mode.  Use of this mode will result
41	  in an unsupportable kernel and will therefore taint the kernel.
42	  Device assignment to virtual machines is also not possible with
43	  this mode since there is no IOMMU to provide DMA translation.
44
45	  If you don't know what to do here, say N.
46
47source "drivers/vfio/pci/Kconfig"
48source "drivers/vfio/platform/Kconfig"
49source "drivers/vfio/mdev/Kconfig"
50source "drivers/vfio/fsl-mc/Kconfig"
51endif
52
53source "virt/lib/Kconfig"
54