2019-05-19 20:07:45 +08:00
|
|
|
# SPDX-License-Identifier: GPL-2.0-only
|
2021-08-26 18:39:11 +08:00
|
|
|
menuconfig VFIO
|
|
|
|
tristate "VFIO Non-Privileged userspace driver framework"
|
|
|
|
select IOMMU_API
|
2022-11-30 04:31:50 +08:00
|
|
|
depends on IOMMUFD || !IOMMUFD
|
2022-09-09 02:34:43 +08:00
|
|
|
select INTERVAL_TREE
|
2023-07-18 21:55:50 +08:00
|
|
|
select VFIO_GROUP if SPAPR_TCE_IOMMU || IOMMUFD=n
|
|
|
|
select VFIO_DEVICE_CDEV if !VFIO_GROUP
|
2022-11-30 04:31:54 +08:00
|
|
|
select VFIO_CONTAINER if IOMMUFD=n
|
2021-08-26 18:39:11 +08:00
|
|
|
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
|
2023-07-18 21:55:43 +08:00
|
|
|
config VFIO_DEVICE_CDEV
|
|
|
|
bool "Support for the VFIO cdev /dev/vfio/devices/vfioX"
|
|
|
|
depends on IOMMUFD && !SPAPR_TCE_IOMMU
|
2023-07-18 21:55:50 +08:00
|
|
|
default !VFIO_GROUP
|
2023-07-18 21:55:43 +08:00
|
|
|
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.
|
|
|
|
|
2023-07-18 21:55:50 +08:00
|
|
|
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.
|
|
|
|
|
2022-11-30 04:31:54 +08:00
|
|
|
config VFIO_CONTAINER
|
|
|
|
bool "Support for the VFIO container /dev/vfio/vfio"
|
|
|
|
select VFIO_IOMMU_TYPE1 if MMU && (X86 || S390 || ARM || ARM64)
|
2023-07-18 21:55:50 +08:00
|
|
|
depends on VFIO_GROUP
|
2022-11-30 04:31:54 +08:00
|
|
|
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
|
2012-07-31 22:16:23 +08:00
|
|
|
config VFIO_IOMMU_TYPE1
|
|
|
|
tristate
|
|
|
|
default n
|
|
|
|
|
2013-05-21 11:33:10 +08:00
|
|
|
config VFIO_IOMMU_SPAPR_TCE
|
|
|
|
tristate
|
2021-08-26 18:39:11 +08:00
|
|
|
depends on SPAPR_TCE_IOMMU
|
2017-02-09 04:13:25 +08:00
|
|
|
default VFIO
|
2023-01-19 01:50:28 +08:00
|
|
|
endif
|
2013-05-21 11:33:10 +08:00
|
|
|
|
2021-07-17 02:39:12 +08:00
|
|
|
config VFIO_NOIOMMU
|
2015-12-22 06:13:33 +08:00
|
|
|
bool "VFIO No-IOMMU support"
|
2023-07-18 21:55:50 +08:00
|
|
|
depends on VFIO_GROUP
|
2015-12-22 06:13:33 +08:00
|
|
|
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.
|
2022-11-30 04:31:54 +08:00
|
|
|
|
|
|
|
config VFIO_VIRQFD
|
VFIO updates for v6.2-rc1
- Replace deprecated git://github.com link in MAINTAINERS. (Palmer Dabbelt)
- Simplify vfio/mlx5 with module_pci_driver() helper. (Shang XiaoJing)
- Drop unnecessary buffer from ACPI call. (Rafael Mendonca)
- Correct latent missing include issue in iova-bitmap and fix support
for unaligned bitmaps. Follow-up with better fix through refactor.
(Joao Martins)
- Rework ccw mdev driver to split private data from parent structure,
better aligning with the mdev lifecycle and allowing us to remove
a temporary workaround. (Eric Farman)
- Add an interface to get an estimated migration data size for a device,
allowing userspace to make informed decisions, ex. more accurately
predicting VM downtime. (Yishai Hadas)
- Fix minor typo in vfio/mlx5 array declaration. (Yishai Hadas)
- Simplify module and Kconfig through consolidating SPAPR/EEH code and
config options and folding virqfd module into main vfio module.
(Jason Gunthorpe)
- Fix error path from device_register() across all vfio mdev and sample
drivers. (Alex Williamson)
- Define migration pre-copy interface and implement for vfio/mlx5
devices, allowing portions of the device state to be saved while the
device continues operation, towards reducing the stop-copy state
size. (Jason Gunthorpe, Yishai Hadas, Shay Drory)
- Implement pre-copy for hisi_acc devices. (Shameer Kolothum)
- Fixes to mdpy mdev driver remove path and error path on probe.
(Shang XiaoJing)
- vfio/mlx5 fixes for incorrect return after copy_to_user() fault and
incorrect buffer freeing. (Dan Carpenter)
-----BEGIN PGP SIGNATURE-----
iQJPBAABCAA5FiEEQvbATlQL0amee4qQI5ubbjuwiyIFAmObfPgbHGFsZXgud2ls
bGlhbXNvbkByZWRoYXQuY29tAAoJECObm247sIsiDogP/i9GuBKposvZpnfxXWwo
oNpKBZSOVMW8wgavNEuryMb+9WoouIghce8XU49MmONoP26kIh5TA14Zpi3XWkLK
K+NlpwicESvLeZVHU7f3R8meVqmPtlxIi59jE+CfEHB8BW2HIAsEdwdhkxMwus9C
nuiiK/2YYyQWOXYc4LAIkspMzjtGPy6Im5P6AED+dI+TFCEqJAM5qgOLJZFlk4a/
WwZY2xjVKOl6xf5VZXGw+v7fDgz2Ju+j4Bm3X5lx1HgiDrEH83MjXY5h67neAIVb
bXrfNLN++MiuO5niGTFMbUjGVUIFxsfmJzBnL9QrLsuj0JrGEKsu/1JEO78g0Km0
ZCChoJ6UyUOgxt6evEymUAZAAkbcKaaht2gdbAXW71tv9p1TripAbBKwVeah1bQp
SiHPqy9InKJlhaf+GbXL9eux1WVMfQ6FZccU16bNt7VaV2I8js85z/2gqVD0a5Mw
+gnwp5XMUFWNKlJrnc7uVCD0bDExwQhr75OP4rWjMNvvLi9hPXJ2cI2Sg+9OLzQw
vm/I+Df+FfXCuGAgX4Lxq76pqWlYGJH0Qxc14Ds6YoXqygBPz9yvTtuBv8mTHJzE
KdAl/6DmZZxZ/JFD9lPF80KRiAsJ6iNf6tPTWES7hfDBfIdgQ/DZbXridLWJPNoi
xLfaW19yrLTXWKSmR7G2Lsz4
=q9xs
-----END PGP SIGNATURE-----
Merge tag 'vfio-v6.2-rc1' of https://github.com/awilliam/linux-vfio
Pull VFIO updates from Alex Williamson:
- Replace deprecated git://github.com link in MAINTAINERS (Palmer
Dabbelt)
- Simplify vfio/mlx5 with module_pci_driver() helper (Shang XiaoJing)
- Drop unnecessary buffer from ACPI call (Rafael Mendonca)
- Correct latent missing include issue in iova-bitmap and fix support
for unaligned bitmaps. Follow-up with better fix through refactor
(Joao Martins)
- Rework ccw mdev driver to split private data from parent structure,
better aligning with the mdev lifecycle and allowing us to remove a
temporary workaround (Eric Farman)
- Add an interface to get an estimated migration data size for a
device, allowing userspace to make informed decisions, ex. more
accurately predicting VM downtime (Yishai Hadas)
- Fix minor typo in vfio/mlx5 array declaration (Yishai Hadas)
- Simplify module and Kconfig through consolidating SPAPR/EEH code and
config options and folding virqfd module into main vfio module (Jason
Gunthorpe)
- Fix error path from device_register() across all vfio mdev and sample
drivers (Alex Williamson)
- Define migration pre-copy interface and implement for vfio/mlx5
devices, allowing portions of the device state to be saved while the
device continues operation, towards reducing the stop-copy state size
(Jason Gunthorpe, Yishai Hadas, Shay Drory)
- Implement pre-copy for hisi_acc devices (Shameer Kolothum)
- Fixes to mdpy mdev driver remove path and error path on probe (Shang
XiaoJing)
- vfio/mlx5 fixes for incorrect return after copy_to_user() fault and
incorrect buffer freeing (Dan Carpenter)
* tag 'vfio-v6.2-rc1' of https://github.com/awilliam/linux-vfio: (42 commits)
vfio/mlx5: error pointer dereference in error handling
vfio/mlx5: fix error code in mlx5vf_precopy_ioctl()
samples: vfio-mdev: Fix missing pci_disable_device() in mdpy_fb_probe()
hisi_acc_vfio_pci: Enable PRE_COPY flag
hisi_acc_vfio_pci: Move the dev compatibility tests for early check
hisi_acc_vfio_pci: Introduce support for PRE_COPY state transitions
hisi_acc_vfio_pci: Add support for precopy IOCTL
vfio/mlx5: Enable MIGRATION_PRE_COPY flag
vfio/mlx5: Fallback to STOP_COPY upon specific PRE_COPY error
vfio/mlx5: Introduce multiple loads
vfio/mlx5: Consider temporary end of stream as part of PRE_COPY
vfio/mlx5: Introduce vfio precopy ioctl implementation
vfio/mlx5: Introduce SW headers for migration states
vfio/mlx5: Introduce device transitions of PRE_COPY
vfio/mlx5: Refactor to use queue based data chunks
vfio/mlx5: Refactor migration file state
vfio/mlx5: Refactor MKEY usage
vfio/mlx5: Refactor PD usage
vfio/mlx5: Enforce a single SAVE command at a time
vfio: Extend the device migration protocol with PRE_COPY
...
2022-12-16 05:12:15 +08:00
|
|
|
bool
|
2022-11-30 04:31:54 +08:00
|
|
|
select EVENTFD
|
|
|
|
default n
|
2015-12-22 06:13:33 +08:00
|
|
|
|
2023-11-06 15:22:23 +08:00
|
|
|
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.
|
|
|
|
|
2012-07-31 22:16:24 +08:00
|
|
|
source "drivers/vfio/pci/Kconfig"
|
2015-03-17 04:08:44 +08:00
|
|
|
source "drivers/vfio/platform/Kconfig"
|
2016-11-17 04:46:13 +08:00
|
|
|
source "drivers/vfio/mdev/Kconfig"
|
2020-10-06 01:36:45 +08:00
|
|
|
source "drivers/vfio/fsl-mc/Kconfig"
|
2023-05-31 20:45:57 +08:00
|
|
|
source "drivers/vfio/cdx/Kconfig"
|
2021-08-26 18:39:11 +08:00
|
|
|
endif
|
|
|
|
|
2015-09-18 22:29:50 +08:00
|
|
|
source "virt/lib/Kconfig"
|