101 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			101 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								# 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"
							 |