Add a PowerPC-specific VFIO selftest IOMMU mode for sPAPR TCE v2. The new mode uses the legacy VFIO container interface with VFIO_SPAPR_TCE_v2_IOMMU. It does not use iommufd or VFIO cdev.
On PowerPC, generate the sPAPR TCE v2 fixture variant so the tests exercise the backend that is valid for this platform. Signed-off-by: Narayana Murty N <[email protected]> --- tools/testing/selftests/vfio/lib/include/libvfio/iommu.h | 8 ++++++++ tools/testing/selftests/vfio/lib/iommu.c | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/tools/testing/selftests/vfio/lib/include/libvfio/iommu.h b/tools/testing/selftests/vfio/lib/include/libvfio/iommu.h index e9a3386a4719..ba027a7270d0 100644 --- a/tools/testing/selftests/vfio/lib/include/libvfio/iommu.h +++ b/tools/testing/selftests/vfio/lib/include/libvfio/iommu.h @@ -66,17 +66,25 @@ struct iommu_iova_range *iommu_iova_ranges(struct iommu *iommu, u32 *nranges); #define MODE_IOMMUFD_COMPAT_TYPE1 "iommufd_compat_type1" #define MODE_IOMMUFD_COMPAT_TYPE1V2 "iommufd_compat_type1v2" #define MODE_IOMMUFD "iommufd" +#ifdef __powerpc__ +#define MODE_VFIO_SPAPR_TCE_V2_IOMMU "vfio_spapr_tce_v2_iommu" +#endif /* * Generator for VFIO selftests fixture variants that replicate across all * possible IOMMU modes. Tests must define FIXTURE_VARIANT_ADD_IOMMU_MODE() * which should then use FIXTURE_VARIANT_ADD() to create the variant. */ +#ifdef __powerpc__ +#define FIXTURE_VARIANT_ADD_ALL_IOMMU_MODES(...) \ +FIXTURE_VARIANT_ADD_IOMMU_MODE(vfio_spapr_tce_v2_iommu, ##__VA_ARGS__) +#else #define FIXTURE_VARIANT_ADD_ALL_IOMMU_MODES(...) \ FIXTURE_VARIANT_ADD_IOMMU_MODE(vfio_type1_iommu, ##__VA_ARGS__); \ FIXTURE_VARIANT_ADD_IOMMU_MODE(vfio_type1v2_iommu, ##__VA_ARGS__); \ FIXTURE_VARIANT_ADD_IOMMU_MODE(iommufd_compat_type1, ##__VA_ARGS__); \ FIXTURE_VARIANT_ADD_IOMMU_MODE(iommufd_compat_type1v2, ##__VA_ARGS__); \ FIXTURE_VARIANT_ADD_IOMMU_MODE(iommufd, ##__VA_ARGS__) +#endif #endif /* SELFTESTS_VFIO_LIB_INCLUDE_LIBVFIO_IOMMU_H */ diff --git a/tools/testing/selftests/vfio/lib/iommu.c b/tools/testing/selftests/vfio/lib/iommu.c index 035dac069d60..e86457a715bf 100644 --- a/tools/testing/selftests/vfio/lib/iommu.c +++ b/tools/testing/selftests/vfio/lib/iommu.c @@ -47,6 +47,13 @@ static const struct iommu_mode iommu_modes[] = { { .name = MODE_IOMMUFD, }, +#ifdef __powerpc__ + { + .name = MODE_VFIO_SPAPR_TCE_V2_IOMMU, + .container_path = "/dev/vfio/vfio", + .iommu_type = VFIO_SPAPR_TCE_v2_IOMMU, + }, +#endif }; static const struct iommu_mode *lookup_iommu_mode(const char *iommu_mode) -- 2.51.1

