Lines Matching full:allocator
3 * I/O Address Space ID allocator. There is one global IOASID space, split into
22 * about an allocator. There are two types of allocators:
24 * - Default allocator always has its own XArray to track the IOASIDs allocated.
29 * 1. Default allocator is always available, not dynamically registered. This is
32 * 2. Custom allocators take precedence over the default allocator.
38 * 5. When switching between custom allocator and default allocator, all IOASIDs
39 * must be freed to ensure unadulterated space for the new allocator.
41 * @ops: allocator helper functions and its data
44 * @flags: attributes of the allocator
46 * @rcu: used for kfree_rcu when unregistering allocator
97 /* Allocate and initialize a new custom allocator with its helper functions */
123 * ioasid_register_allocator - register a custom allocator
124 * @ops: the custom allocator ops to be registered
126 * Custom allocators take precedence over the default xarray based allocator.
129 * allocator.
132 * of runtime removal of a custom allocator, the next one is activated based
159 /* Use this new allocator if default is not active */ in ioasid_register_allocator()
165 pr_warn("Default allocator active with outstanding IOASID\n"); in ioasid_register_allocator()
170 /* Check if the allocator is already registered */ in ioasid_register_allocator()
173 pr_err("IOASID allocator already registered\n"); in ioasid_register_allocator()
178 * If the new allocator shares the same ops, in ioasid_register_allocator()
199 * ioasid_unregister_allocator - Remove a custom IOASID allocator ops
200 * @ops: the custom allocator to be removed
202 * Remove an allocator from the list, activate the next allocator in
203 * the order it was registered. Or revert to default allocator if all
226 * the last allocator that shares the same ops in ioasid_unregister_allocator()
237 pr_info("IOASID allocator changed"); in ioasid_unregister_allocator()
319 * Custom allocator needs allocator data to perform platform specific in ioasid_alloc()
332 /* Custom allocator needs framework to store and track allocation results */ in ioasid_alloc()
364 /* Custom allocator needs additional steps to free the xa element */ in ioasid_free()
421 MODULE_DESCRIPTION("IO Address Space ID (IOASID) allocator");