Lines Matching full:objects

5  * iommufd provides control over the IOMMU HW objects created by IOMMU kernel
6 * drivers. IOMMU HW objects revolve around IO page tables that map incoming DMA
54 rc = xa_alloc(&ictx->objects, &obj->id, XA_ZERO_ENTRY, in _iommufd_object_alloc()
68 * destruction. Expect for special kernel-only objects there is no in-kernel way
69 * to reliably destroy a single object. Thus all APIs that are creating objects
78 old = xa_store(&ictx->objects, obj->id, obj, GFP_KERNEL); in iommufd_object_finalize()
88 old = xa_erase(&ictx->objects, obj->id); in iommufd_object_abort()
115 xa_lock(&ictx->objects); in iommufd_get_object()
116 obj = xa_load(&ictx->objects, id); in iommufd_get_object()
120 xa_unlock(&ictx->objects); in iommufd_get_object()
150 XA_STATE(xas, &ictx->objects, id); in iommufd_object_remove()
156 * destruction of objects used by external drivers and destroyed by this in iommufd_object_remove()
173 xa_lock(&ictx->objects); in iommufd_object_remove()
199 xa_unlock(&ictx->objects); in iommufd_object_remove()
220 xa_unlock(&ictx->objects); in iommufd_object_remove()
251 xa_init_flags(&ictx->objects, XA_FLAGS_ALLOC1 | XA_FLAGS_ACCOUNT); in iommufd_fops_open()
265 * The objects in the xarray form a graph of "users" counts, and we have in iommufd_fops_release()
266 * to destroy them in a depth first manner. Leaf objects will reduce the in iommufd_fops_release()
267 * users count of interior objects when they are destroyed. in iommufd_fops_release()
269 * Repeatedly destroying all the "1 users" leaf objects will progress in iommufd_fops_release()
273 while (!xa_empty(&ictx->objects)) { in iommufd_fops_release()
277 xa_for_each(&ictx->objects, index, obj) { in iommufd_fops_release()
281 xa_erase(&ictx->objects, index); in iommufd_fops_release()