Test IOMMU mapping the BAR mmaps created during vfio_pci_device_setup().
All IOMMU modes are tested: vfio_type1 variants are expected to succeed, while non-type1 modes are expected to fail. iommufd compat mode can be updated to expect success once kernel support lands; native iommufd will not support mapping vaddrs backed by MMIO (it will support dma-buf based MMIO mapping instead).
To: Alex Williamson alex@shazbot.org To: David Matlack dmatlack@google.com To: Shuah Khan shuah@kernel.org Cc: Peter Xu peterx@redhat.com Cc: linux-kernel@vger.kernel.org Cc: kvm@vger.kernel.org Cc: linux-kselftest@vger.kernel.org Cc: Jason Gunthorpe jgg@ziepe.ca
Changes in v2: - Split into patch series - Factor out mmap_aligned() for vaddr alignment - Align BAR mmaps to improve hugepage IOMMU mapping efficiency - Centralize MODE_* string definitions - Add is_power_of_2() assertion for BAR size - Simplify align calculation to min(size, 1G) - Add map_bar_misaligned test case - Link to v1: https://lore.kernel.org/all/aWA4GKp5ld92sY6e@devgpu015.cco6.facebook.com
Signed-off-by: Alex Mastro amastro@fb.com --- Alex Mastro (3): vfio: selftests: Centralize IOMMU mode name definitions vfio: selftests: Align BAR mmaps for efficient IOMMU mapping vfio: selftests: Add vfio_dma_mapping_mmio_test
tools/testing/selftests/vfio/Makefile | 1 + tools/testing/selftests/vfio/lib/include/libvfio.h | 9 ++ .../selftests/vfio/lib/include/libvfio/iommu.h | 6 + tools/testing/selftests/vfio/lib/iommu.c | 12 +- tools/testing/selftests/vfio/lib/libvfio.c | 25 ++++ tools/testing/selftests/vfio/lib/vfio_pci_device.c | 24 +++- .../selftests/vfio/vfio_dma_mapping_mmio_test.c | 144 +++++++++++++++++++++ .../testing/selftests/vfio/vfio_dma_mapping_test.c | 2 +- 8 files changed, 215 insertions(+), 8 deletions(-) --- base-commit: d721f52e31553a848e0e9947ca15a49c5674aef3 change-id: 20260112-map-mmio-test-b4e4c2d917a9
Best regards,