mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 10:33:41 +02:00
iommufd/selftest: Support user_data in mock_viommu_alloc
Add a simple user_data for an input-to-output loopback test. Link: https://patch.msgid.link/r/cae4632bb3d98a1efb3b77488fbf81814f2041c6.1752126748.git.nicolinc@nvidia.com Reviewed-by: Pranjal Shrivastava <praan@google.com> Reviewed-by: Kevin Tian <kevin.tian@intel.com> Signed-off-by: Nicolin Chen <nicolinc@nvidia.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
This commit is contained in:
parent
1976cdf61c
commit
afeaf592c1
|
|
@ -227,6 +227,19 @@ struct iommu_hwpt_invalidate_selftest {
|
|||
|
||||
#define IOMMU_VIOMMU_TYPE_SELFTEST 0xdeadbeef
|
||||
|
||||
/**
|
||||
* struct iommu_viommu_selftest - vIOMMU data for Mock driver
|
||||
* (IOMMU_VIOMMU_TYPE_SELFTEST)
|
||||
* @in_data: Input random data from user space
|
||||
* @out_data: Output data (matching @in_data) to user space
|
||||
*
|
||||
* Simply set @out_data=@in_data for a loopback test
|
||||
*/
|
||||
struct iommu_viommu_selftest {
|
||||
__u32 in_data;
|
||||
__u32 out_data;
|
||||
};
|
||||
|
||||
/* Should not be equal to any defined value in enum iommu_viommu_invalidate_data_type */
|
||||
#define IOMMU_VIOMMU_INVALIDATE_DATA_SELFTEST 0xdeadbeef
|
||||
#define IOMMU_VIOMMU_INVALIDATE_DATA_SELFTEST_INVALID 0xdadbeef
|
||||
|
|
|
|||
|
|
@ -784,6 +784,21 @@ static int mock_viommu_init(struct iommufd_viommu *viommu,
|
|||
{
|
||||
struct mock_iommu_device *mock_iommu = container_of(
|
||||
viommu->iommu_dev, struct mock_iommu_device, iommu_dev);
|
||||
struct iommu_viommu_selftest data;
|
||||
int rc;
|
||||
|
||||
if (user_data) {
|
||||
rc = iommu_copy_struct_from_user(
|
||||
&data, user_data, IOMMU_VIOMMU_TYPE_SELFTEST, out_data);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
data.out_data = data.in_data;
|
||||
rc = iommu_copy_struct_to_user(
|
||||
user_data, &data, IOMMU_VIOMMU_TYPE_SELFTEST, out_data);
|
||||
if (rc)
|
||||
return rc;
|
||||
}
|
||||
|
||||
refcount_inc(&mock_iommu->users);
|
||||
viommu->ops = &mock_viommu_ops;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user