From: Jason Gunthorpe jgg@nvidia.com Sent: Thursday, February 23, 2023 5:03 AM
iommufd wants to use more infrastructure, like the iommu_group, that the mock device does not support. Create a more complete mock device that can go through the whole cycle of ownership, blocking domain, and has an iommu_group.
this is a nice move! Presumable with a real struct device we can further extend the mock device to test nested, pasid attach/alloc, etc. in the future.
- /*
* The iommu core has no way to associate a single device with an
iommu
* driver (heck currently it can't even support two iommu_drivers
* registering). Hack it together with an open coded dev_iommu_get().
* Notice that the normal notifier triggered iommu release process
also
* does not work here because this bus is not in iommu_buses.
*/
- mdev->dev.iommu = kzalloc(sizeof(*dev_iommu), GFP_KERNEL);
- if (!mdev->dev.iommu) {
rc = -ENOMEM;
goto err_group;
- }
- mutex_init(&mdev->dev.iommu->lock);
- mdev->dev.iommu->iommu_dev = &mock_iommu_device;
I understand how this hack works but didn't get why in this case dev_iommu_get() cannot be reused...
but this is minor.
Reviewed-by: Kevin Tian kevin.tian@intel.com