Lines Matching +full:0 +full:xa
46 * @xa: xarray holds the IOASID space
53 #define IOASID_ALLOCATOR_CUSTOM BIT(0) /* Needs framework to track results */
55 struct xarray xa; member
72 .flags = 0,
73 .xa = XARRAY_INIT(ioasid_xa, XA_FLAGS_ALLOC),
82 if (xa_alloc(&default_allocator.xa, &id, opaque, XA_LIMIT(min, max), GFP_ATOMIC)) { in default_alloc()
94 ioasid_data = xa_erase(&default_allocator.xa, ioasid); in default_free()
107 xa_init_flags(&ia_data->xa, XA_FLAGS_ALLOC); in ioasid_alloc_allocator()
129 * are managed by IOASID framework similar to data stored in xa by default
143 int ret = 0; in ioasid_register_allocator()
161 if (xa_empty(&active_allocator->xa)) { in ioasid_register_allocator()
190 return 0; in ioasid_register_allocator()
230 WARN_ON(!xa_empty(&pallocator->xa)); in ioasid_unregister_allocator()
272 int ret = 0; in ioasid_set_data()
275 ioasid_data = xa_load(&active_allocator->xa, ioasid); in ioasid_set_data()
333 xa_alloc(&active_allocator->xa, &id, data, XA_LIMIT(id, id), GFP_ATOMIC)) { in ioasid_alloc()
358 ioasid_data = xa_load(&active_allocator->xa, ioasid); in ioasid_get()
382 ioasid_data = xa_load(&active_allocator->xa, ioasid); in ioasid_put()
393 /* Custom allocator needs additional steps to free the xa element */ in ioasid_put()
395 ioasid_data = xa_erase(&active_allocator->xa, ioasid); in ioasid_put()
428 ioasid_data = xa_load(&idata->xa, ioasid); in ioasid_find()