# SPDX-License-Identifier: GPL-2.0-only
menu "VFIO support for PCI devices"
	depends on PCI && MMU

config VFIO_PCI_CORE
	tristate
	select VFIO_VIRQFD
	select IRQ_BYPASS_MANAGER

config VFIO_PCI_MMAP
	def_bool y if !S390
	depends on VFIO_PCI_CORE

config VFIO_PCI_INTX
	bool "VFIO support for PCI devices INTX"
	default y if (!S390 && !LOONGARCH)
	depends on VFIO_PCI_CORE

config VFIO_PCI
	tristate "Generic VFIO support for any PCI device"
	select VFIO_PCI_CORE
	help
	  Support for the generic PCI VFIO bus driver which can connect any
	  PCI device to the VFIO framework.

	  If you don't know what to do here, say N.

if VFIO_PCI
config VFIO_PCI_VGA
	bool "Generic VFIO PCI support for VGA devices"
	depends on X86 && VGA_ARB
	help
	  Support for VGA extension to VFIO PCI.  This exposes an additional
	  region on VGA devices for accessing legacy VGA addresses used by
	  BIOS and generic video drivers.

	  If you don't know what to do here, say N.

config VFIO_PCI_IGD
	bool "Generic VFIO PCI extensions for Intel graphics (GVT-d)"
	depends on X86
	default y
	help
	  Support for Intel IGD specific extensions to enable direct
	  assignment to virtual machines.  This includes exposing an IGD
	  specific firmware table and read-only copies of the host bridge
	  and LPC bridge config space.

	  To enable Intel IGD assignment through vfio-pci, say Y.
endif

config VFIO_PCI_ZDEV_KVM
	bool "VFIO PCI extensions for s390x KVM passthrough"
	depends on S390 && KVM
	default y
	help
	  Support s390x-specific extensions to enable support for enhancements
	  to KVM passthrough capabilities, such as interpretive execution of
	  zPCI instructions.

	  To enable s390x KVM vfio-pci extensions, say Y.

config VFIO_PCI_DMABUF
	def_bool y if VFIO_PCI_CORE && PCI_P2PDMA && DMA_SHARED_BUFFER

config VFIO_PCI_LIVEUPDATE
	bool "VFIO PCI support for Live Update (EXPERIMENTAL)"
	depends on VFIO_PCI && PCI_LIVEUPDATE
	select VFIO_DEVICE_CDEV
	help
	  Support for preserving devices bound to vfio-pci across a Live
	  Update. This option should only be enabled by developers working on
	  implementing this support. Once enough support has landed in the
	  kernel, this option will no longer be marked EXPERIMENTAL.

	  If you don't know what to do here, say N.

source "drivers/vfio/pci/mlx5/Kconfig"

source "drivers/vfio/pci/hisilicon/Kconfig"

source "drivers/vfio/pci/pds/Kconfig"

source "drivers/vfio/pci/qat/Kconfig"

source "drivers/vfio/pci/nvgrace-gpu/Kconfig"

endmenu
