mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 10:04:04 +02:00
Add a vfio_pci variant driver for the s390-specific Internal Shared Memory (ISM) devices used for inter-VM communication. This enables the development of vfio-pci-based user space drivers for ISM devices. On s390, kernel primitives such as ioread() and iowrite() are switched over from function-handle-based PCI load/stores instructions to PCI memory-I/O (MIO) loads/stores when these are available and not explicitly disabled. Since these instructions cannot be used with ISM devices, ensure that classic function-handle-based PCI instructions are used instead. The driver is still required even when MIO instructions are disabled, as the ISM device relies on the PCI store block (PCISTB) instruction to perform write operations. Stores are not fragmented, therefore one ioctl corresponds to exactly one PCISTB instruction. User space must ensure to not write more than 4096 bytes at once to an ISM BAR which is the maximum payload of the PCISTB instruction. Reviewed-by: Alexandra Winter <wintera@linux.ibm.com> Reviewed-by: Niklas Schnelle <schnelle@linux.ibm.com> Signed-off-by: Julian Ruess <julianr@linux.ibm.com> Reviewed-by: Farhan Ali <alifm@linux.ibm.com> Link: https://lore.kernel.org/r/20260325-vfio_pci_ism-v8-2-ddc504cde914@linux.ibm.com Signed-off-by: Alex Williamson <alex@shazbot.org>
78 lines
1.9 KiB
Plaintext
78 lines
1.9 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0-only
|
|
menu "VFIO support for PCI devices"
|
|
depends on PCI
|
|
|
|
config VFIO_PCI_CORE
|
|
tristate
|
|
select VFIO_VIRQFD
|
|
select IRQ_BYPASS_MANAGER
|
|
|
|
config VFIO_PCI_INTX
|
|
def_bool y if !S390
|
|
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
|
|
|
|
source "drivers/vfio/pci/mlx5/Kconfig"
|
|
|
|
source "drivers/vfio/pci/ism/Kconfig"
|
|
|
|
source "drivers/vfio/pci/hisilicon/Kconfig"
|
|
|
|
source "drivers/vfio/pci/pds/Kconfig"
|
|
|
|
source "drivers/vfio/pci/virtio/Kconfig"
|
|
|
|
source "drivers/vfio/pci/nvgrace-gpu/Kconfig"
|
|
|
|
source "drivers/vfio/pci/qat/Kconfig"
|
|
|
|
source "drivers/vfio/pci/xe/Kconfig"
|
|
|
|
endmenu
|