David Matlack
61cbfe5014
vfio: selftests: Add iommufd mode
...
Add a new IOMMU mode for using iommufd directly. In this mode userspace
opens /dev/iommu and binds it to a device FD acquired through
/dev/vfio/devices/vfioX.
Acked-by: Shuah Khan <skhan@linuxfoundation.org >
Signed-off-by: David Matlack <dmatlack@google.com >
Link: https://lore.kernel.org/r/20250822212518.4156428-29-dmatlack@google.com
Signed-off-by: Alex Williamson <alex.williamson@redhat.com >
2025-08-27 12:14:11 -06:00
David Matlack
d1a17495bb
vfio: selftests: Add iommufd_compat_type1{,v2} modes
...
Add new IOMMU modes for using iommufd in compatibility mode with
VFIO_TYPE1_IOMMU and VFIO_TYPE1v2_IOMMU.
In these modes, VFIO selftests will open /dev/iommu and treats it as a
container FD (as if it had opened /dev/vfio/vfio) and the kernel
translates the container ioctls to iommufd calls transparently.
Acked-by: Shuah Khan <skhan@linuxfoundation.org >
Signed-off-by: David Matlack <dmatlack@google.com >
Link: https://lore.kernel.org/r/20250822212518.4156428-28-dmatlack@google.com
Signed-off-by: Alex Williamson <alex.williamson@redhat.com >
2025-08-27 12:14:10 -06:00
David Matlack
0969c685ba
vfio: selftests: Add vfio_type1v2_mode
...
Add a new IOMMU mode for using VFIO_TYPE1v2_IOMMU.
Acked-by: Shuah Khan <skhan@linuxfoundation.org >
Signed-off-by: David Matlack <dmatlack@google.com >
Link: https://lore.kernel.org/r/20250822212518.4156428-27-dmatlack@google.com
Signed-off-by: Alex Williamson <alex.williamson@redhat.com >
2025-08-27 12:14:10 -06:00
David Matlack
892aff147a
vfio: selftests: Replicate tests across all iommu_modes
...
Automatically replicate vfio_dma_mapping_test and vfio_pci_driver_test
across all supported IOMMU modes using fixture variants. Both of these
tests exercise DMA mapping to some degree so having automatic coverage
across all IOMMU modes will help catch bugs.
Acked-by: Shuah Khan <skhan@linuxfoundation.org >
Signed-off-by: David Matlack <dmatlack@google.com >
Link: https://lore.kernel.org/r/20250822212518.4156428-26-dmatlack@google.com
Signed-off-by: Alex Williamson <alex.williamson@redhat.com >
2025-08-27 12:14:10 -06:00
David Matlack
5df9bd6205
vfio: selftests: Encapsulate IOMMU mode
...
Encapsulate the "IOMMU mode" a test should use behind a new struct.
In the future this will be used to support other types of IOMMUs besides
VFIO_TYPE1_IOMMU, and allow users to select the mode on the command
line.
No functional change intended.
Acked-by: Shuah Khan <skhan@linuxfoundation.org >
Signed-off-by: David Matlack <dmatlack@google.com >
Link: https://lore.kernel.org/r/20250822212518.4156428-25-dmatlack@google.com
Signed-off-by: Alex Williamson <alex.williamson@redhat.com >
2025-08-27 12:14:09 -06:00
David Matlack
118e073ef6
vfio: selftests: Move helper to get cdev path to libvfio
...
Move the helper function to get the VFIO cdev path to libvfio so that it
can be used in libvfio in a subsequent commit.
No functional change intended.
Acked-by: Shuah Khan <skhan@linuxfoundation.org >
Signed-off-by: David Matlack <dmatlack@google.com >
Link: https://lore.kernel.org/r/20250822212518.4156428-24-dmatlack@google.com
Signed-off-by: Alex Williamson <alex.williamson@redhat.com >
2025-08-27 12:14:09 -06:00
David Matlack
1b197032ac
vfio: selftests: Add driver framework
...
Add a driver framework to VFIO selftests, so that devices can generate
DMA and interrupts in a common way that can be then utilized by tests.
This will enable VFIO selftests to exercise real hardware DMA and
interrupt paths, without needing any device-specific code in the test
itself.
Subsequent commits will introduce drivers for specific devices.
Acked-by: Shuah Khan <skhan@linuxfoundation.org >
Signed-off-by: David Matlack <dmatlack@google.com >
Link: https://lore.kernel.org/r/20250822212518.4156428-13-dmatlack@google.com
Signed-off-by: Alex Williamson <alex.williamson@redhat.com >
2025-08-27 12:14:05 -06:00
David Matlack
50d8fe805f
vfio: selftests: Add a helper for matching vendor+device IDs
...
Add a helper function for matching a device against a given vendor and
device ID. This will be used in a subsequent commit to match devices
against drivers.
Acked-by: Shuah Khan <skhan@linuxfoundation.org >
Signed-off-by: David Matlack <dmatlack@google.com >
Link: https://lore.kernel.org/r/20250822212518.4156428-12-dmatlack@google.com
Signed-off-by: Alex Williamson <alex.williamson@redhat.com >
2025-08-27 12:14:05 -06:00
David Matlack
924947804f
vfio: selftests: Enable asserting MSI eventfds not firing
...
Make it possible to assert that a given MSI eventfd did _not_ fire by
adding a helper to mark an eventfd non-blocking. Demonstrate this in
vfio_pci_device_test by asserting the MSI eventfd did not fire before
vfio_pci_irq_trigger().
Acked-by: Shuah Khan <skhan@linuxfoundation.org >
Signed-off-by: David Matlack <dmatlack@google.com >
Link: https://lore.kernel.org/r/20250822212518.4156428-11-dmatlack@google.com
Signed-off-by: Alex Williamson <alex.williamson@redhat.com >
2025-08-27 12:14:04 -06:00
David Matlack
346cd58f1f
vfio: selftests: Keep track of DMA regions mapped into the device
...
Keep track of the list of DMA regions that are mapped into the device
using a linked list and a new struct vfio_dma_region and use that to add
{__,}to_iova() for converting host virtual addresses into IOVAs.
This will be used in a subsequent commit to map multiple DMA regions
into a device that are then used by drivers.
Acked-by: Shuah Khan <skhan@linuxfoundation.org >
Signed-off-by: David Matlack <dmatlack@google.com >
Link: https://lore.kernel.org/r/20250822212518.4156428-10-dmatlack@google.com
Signed-off-by: Alex Williamson <alex.williamson@redhat.com >
2025-08-27 12:14:04 -06:00
Josh Hilke
a0fd0af504
vfio: selftests: Add test to reset vfio device.
...
Add a test to vfio_pci_device_test which resets the device. If reset is
not supported by the device, the test is skipped.
Signed-off-by: Josh Hilke <jrhilke@google.com >
Acked-by: Shuah Khan <skhan@linuxfoundation.org >
Signed-off-by: David Matlack <dmatlack@google.com >
Link: https://lore.kernel.org/r/20250822212518.4156428-7-dmatlack@google.com
Signed-off-by: Alex Williamson <alex.williamson@redhat.com >
2025-08-27 12:14:03 -06:00
David Matlack
19faf6fd96
vfio: selftests: Add a helper library for VFIO selftests
...
Add a basic helper library to be used by VFIO selftests.
The basic unit of the library is struct vfio_pci_device, which
represents a single PCI device that is bound to the vfio-pci driver. The
library currently only supports a single device per group and container,
and VFIO IOMMU types.
The code in this library was heavily based on prior work done by
Raghavendra Rao Ananta <rananta@google.com >, and the VFIO_ASSERT*()
macros were written by Vipin Sharma <vipinsh@google.com >.
Separate that Makefile rules for building the library into a separate
script so that the library can be built by and linked into KVM selftests
in a subsequent commit.
Acked-by: Shuah Khan <skhan@linuxfoundation.org >
Signed-off-by: David Matlack <dmatlack@google.com >
Link: https://lore.kernel.org/r/20250822212518.4156428-3-dmatlack@google.com
Signed-off-by: Alex Williamson <alex.williamson@redhat.com >
2025-08-27 12:14:01 -06:00