Lines Matching full:viommu

8 	struct iommufd_viommu *viommu =  in iommufd_viommu_destroy()  local
11 if (viommu->ops && viommu->ops->destroy) in iommufd_viommu_destroy()
12 viommu->ops->destroy(viommu); in iommufd_viommu_destroy()
13 refcount_dec(&viommu->hwpt->common.obj.users); in iommufd_viommu_destroy()
14 xa_destroy(&viommu->vdevs); in iommufd_viommu_destroy()
21 struct iommufd_viommu *viommu; in iommufd_viommu_alloc_ioctl() local
50 viommu = ops->viommu_alloc(idev->dev, hwpt_paging->common.domain, in iommufd_viommu_alloc_ioctl()
52 if (IS_ERR(viommu)) { in iommufd_viommu_alloc_ioctl()
53 rc = PTR_ERR(viommu); in iommufd_viommu_alloc_ioctl()
57 xa_init(&viommu->vdevs); in iommufd_viommu_alloc_ioctl()
58 viommu->type = cmd->type; in iommufd_viommu_alloc_ioctl()
59 viommu->ictx = ucmd->ictx; in iommufd_viommu_alloc_ioctl()
60 viommu->hwpt = hwpt_paging; in iommufd_viommu_alloc_ioctl()
61 refcount_inc(&viommu->hwpt->common.obj.users); in iommufd_viommu_alloc_ioctl()
67 viommu->iommu_dev = __iommu_get_iommu_dev(idev->dev); in iommufd_viommu_alloc_ioctl()
69 cmd->out_viommu_id = viommu->obj.id; in iommufd_viommu_alloc_ioctl()
73 iommufd_object_finalize(ucmd->ictx, &viommu->obj); in iommufd_viommu_alloc_ioctl()
77 iommufd_object_abort_and_destroy(ucmd->ictx, &viommu->obj); in iommufd_viommu_alloc_ioctl()
89 struct iommufd_viommu *viommu = vdev->viommu; in iommufd_vdevice_destroy() local
92 xa_cmpxchg(&viommu->vdevs, vdev->id, vdev, NULL, GFP_KERNEL); in iommufd_vdevice_destroy()
93 refcount_dec(&viommu->obj.users); in iommufd_vdevice_destroy()
101 struct iommufd_viommu *viommu; in iommufd_vdevice_alloc_ioctl() local
110 viommu = iommufd_get_viommu(ucmd, cmd->viommu_id); in iommufd_vdevice_alloc_ioctl()
111 if (IS_ERR(viommu)) in iommufd_vdevice_alloc_ioctl()
112 return PTR_ERR(viommu); in iommufd_vdevice_alloc_ioctl()
120 if (viommu->iommu_dev != __iommu_get_iommu_dev(idev->dev)) { in iommufd_vdevice_alloc_ioctl()
134 vdev->viommu = viommu; in iommufd_vdevice_alloc_ioctl()
135 refcount_inc(&viommu->obj.users); in iommufd_vdevice_alloc_ioctl()
137 curr = xa_cmpxchg(&viommu->vdevs, virt_id, NULL, vdev, GFP_KERNEL); in iommufd_vdevice_alloc_ioctl()
155 iommufd_put_object(ucmd->ictx, &viommu->obj); in iommufd_vdevice_alloc_ioctl()