Nicolin Chen
af4fde93c3
iommufd/selftest: Add coverage for IOMMU_GET_HW_INFO ioctl
...
Add a mock_domain_hw_info function and an iommu_test_hw_info data
structure. This allows to test the IOMMU_GET_HW_INFO ioctl passing the
test_reg value for the mock_dev.
Link: https://lore.kernel.org/r/20230818101033.4100-5-yi.l.liu@intel.com
Signed-off-by: Nicolin Chen <nicolinc@nvidia.com >
Signed-off-by: Yi Liu <yi.l.liu@intel.com >
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com >
2023-08-18 12:52:15 -03:00
Nicolin Chen
c154660b6e
iommufd/selftest: Add IOMMU_TEST_OP_ACCESS_REPLACE_IOAS coverage
...
Add a new IOMMU_TEST_OP_ACCESS_REPLACE_IOAS to allow replacing the
access->ioas, corresponding to the iommufd_access_replace() helper.
Then add replace coverage as a part of user_copy test case, which
basically repeats the copy test after replacing the old ioas with a new
one.
Link: https://lore.kernel.org/r/a4897f93d41c34b972213243b8dbf4c3832842e4.1690523699.git.nicolinc@nvidia.com
Reviewed-by: Kevin Tian <kevin.tian@intel.com >
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com >
Signed-off-by: Nicolin Chen <nicolinc@nvidia.com >
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com >
2023-07-28 13:31:24 -03:00
Jason Gunthorpe
6583c865de
iommufd/selftest: Add a selftest for IOMMU_HWPT_ALLOC
...
Test the basic flow.
Link: https://lore.kernel.org/r/19-v8-6659224517ea+532-iommufd_alloc_jgg@nvidia.com
Reviewed-by: Kevin Tian <kevin.tian@intel.com >
Tested-by: Nicolin Chen <nicolinc@nvidia.com >
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com >
2023-07-26 10:20:41 -03:00
Jason Gunthorpe
7a467e02b3
iommufd/selftest: Return the real idev id from selftest mock_domain
...
Now that we actually call iommufd_device_bind() we can return the
idev_id from that function to userspace for use in other APIs.
Link: https://lore.kernel.org/r/18-v8-6659224517ea+532-iommufd_alloc_jgg@nvidia.com
Reviewed-by: Kevin Tian <kevin.tian@intel.com >
Tested-by: Nicolin Chen <nicolinc@nvidia.com >
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com >
2023-07-26 10:20:36 -03:00
Nicolin Chen
fa1ffdb9e2
iommufd/selftest: Test iommufd_device_replace()
...
Allow the selftest to call the function on the mock idev, add some tests
to exercise it.
Link: https://lore.kernel.org/r/16-v8-6659224517ea+532-iommufd_alloc_jgg@nvidia.com
Reviewed-by: Kevin Tian <kevin.tian@intel.com >
Tested-by: Nicolin Chen <nicolinc@nvidia.com >
Signed-off-by: Nicolin Chen <nicolinc@nvidia.com >
Signed-off-by: Yi Liu <yi.l.liu@intel.com >
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com >
2023-07-26 10:20:26 -03:00
Jason Gunthorpe
2cfdeaa07b
iommufd/selftest: Rename the sefltest 'device_id' to 'stdev_id'
...
It is too confusing now that we have the 'dev_id' as part of the main
interface. Make it clear this is the special selftest device object. This
object is analogous to the VFIO device FD.
Link: https://lore.kernel.org/r/7-v3-ae9c2975a131+2e1e8-iommufd_hwpt_jgg@nvidia.com
Reviewed-by: Kevin Tian <kevin.tian@intel.com >
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com >
2023-03-06 10:51:58 -04:00
Jason Gunthorpe
57f0988706
iommufd: Add a selftest
...
Cover the essential functionality of the iommufd with a directed test from
userspace. This aims to achieve reasonable functional coverage using the
in-kernel self test framework.
A second test does a failure injection sweep of the success paths to study
error unwind behaviors.
This allows achieving high coverage of the corner cases in pages.c.
The selftest requires CONFIG_IOMMUFD_TEST to be enabled, and several huge
pages which may require:
echo 4 > /proc/sys/vm/nr_hugepages
Link: https://lore.kernel.org/r/19-v6-a196d26f289e+11787-iommufd_jgg@nvidia.com
Tested-by: Nicolin Chen <nicolinc@nvidia.com >
Tested-by: Matthew Rosato <mjrosato@linux.ibm.com > # s390
Tested-by: Yi Liu <yi.l.liu@intel.com >
Tested-by: Eric Auger <eric.auger@redhat.com > # aarch64
Signed-off-by: Nicolin Chen <nicolinc@nvidia.com >
Signed-off-by: Yi Liu <yi.l.liu@intel.com >
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com >
2022-11-30 20:16:49 -04:00