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()
62 INIT_LIST_HEAD(&viommu->veventqs); in iommufd_viommu_alloc_ioctl()
63 init_rwsem(&viommu->veventqs_rwsem); in iommufd_viommu_alloc_ioctl()
69 viommu->iommu_dev = __iommu_get_iommu_dev(idev->dev); in iommufd_viommu_alloc_ioctl()
71 cmd->out_viommu_id = viommu->obj.id; in iommufd_viommu_alloc_ioctl()
75 iommufd_object_finalize(ucmd->ictx, &viommu->obj); in iommufd_viommu_alloc_ioctl()
79 iommufd_object_abort_and_destroy(ucmd->ictx, &viommu->obj); in iommufd_viommu_alloc_ioctl()
91 struct iommufd_viommu *viommu = vdev->viommu; in iommufd_vdevice_destroy() local
94 xa_cmpxchg(&viommu->vdevs, vdev->id, vdev, NULL, GFP_KERNEL); in iommufd_vdevice_destroy()
95 refcount_dec(&viommu->obj.users); in iommufd_vdevice_destroy()
103 struct iommufd_viommu *viommu; in iommufd_vdevice_alloc_ioctl() local
112 viommu = iommufd_get_viommu(ucmd, cmd->viommu_id); in iommufd_vdevice_alloc_ioctl()
113 if (IS_ERR(viommu)) in iommufd_vdevice_alloc_ioctl()
114 return PTR_ERR(viommu); in iommufd_vdevice_alloc_ioctl()
122 if (viommu->iommu_dev != __iommu_get_iommu_dev(idev->dev)) { in iommufd_vdevice_alloc_ioctl()
136 vdev->viommu = viommu; in iommufd_vdevice_alloc_ioctl()
137 refcount_inc(&viommu->obj.users); in iommufd_vdevice_alloc_ioctl()
139 curr = xa_cmpxchg(&viommu->vdevs, virt_id, NULL, vdev, GFP_KERNEL); in iommufd_vdevice_alloc_ioctl()
157 iommufd_put_object(ucmd->ictx, &viommu->obj); in iommufd_vdevice_alloc_ioctl()