On Fri, Feb 24, 2023 at 08:27:57PM -0400, Jason Gunthorpe wrote:
+int iommufd_hwpt_alloc(struct iommufd_ucmd *ucmd) +{
- struct iommu_hwpt_alloc *cmd = ucmd->cmd;
- struct iommufd_hw_pagetable *hwpt;
- struct iommufd_device *idev;
- struct iommufd_ioas *ioas;
- int rc;
- if (cmd->flags)
return -EOPNOTSUPP;
- idev = iommufd_get_device(ucmd, cmd->dev_id);
- if (IS_ERR(idev))
return PTR_ERR(idev);
- ioas = iommufd_get_ioas(ucmd, cmd->pt_id);
- if (IS_ERR(ioas)) {
rc = PTR_ERR(idev);
PTR_ERR(ioas)
goto out_put_idev;
- }
- mutex_lock(&ioas->mutex);
- hwpt = iommufd_hw_pagetable_alloc(ucmd->ictx, ioas, idev, false);
- mutex_unlock(&ioas->mutex);
- if (IS_ERR(hwpt)) {
rc = PTR_ERR(idev);
PTR_ERR(hwpt)
Thanks Nic