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,
--
Alex Mastro <amastro@fb.com>