iova_allocator
struct iova_allocator *iova_allocator_init(struct iommu *iommu);
void iova_allocator_cleanup(struct iova_allocator *allocator);
iova_t iova_allocator_alloc(struct iova_allocator *allocator, size_t size);
struct iova_allocator *iova_allocator_init(struct iommu *iommu)
struct iova_allocator *allocator;
*allocator = (struct iova_allocator){
void iova_allocator_cleanup(struct iova_allocator *allocator)
iova_t iova_allocator_alloc(struct iova_allocator *allocator, size_t size)
do_mmio_map_test(self->iommu, self->iova_allocator,
do_mmio_map_test(self->iommu, self->iova_allocator,
do_mmio_map_test(self->iommu, self->iova_allocator, vaddr, size);
struct iova_allocator *iova_allocator;
self->iova_allocator = iova_allocator_init(self->iommu);
iova_allocator_cleanup(self->iova_allocator);
struct iova_allocator *iova_allocator,
.iova = iova_allocator_alloc(iova_allocator, size),
self->iova_allocator = iova_allocator_init(self->iommu);
iova_allocator_cleanup(self->iova_allocator);
region.iova = iova_allocator_alloc(self->iova_allocator, size);
struct iova_allocator *iova_allocator;
iova_allocator_cleanup(self->iova_allocator);
struct iova_allocator *iova_allocator,
region->iova = iova_allocator_alloc(iova_allocator, size);
struct iova_allocator *iova_allocator;
self->iova_allocator = iova_allocator_init(self->iommu);
region_setup(self->iommu, self->iova_allocator, &self->memcpy_region, SZ_1G);
region_setup(self->iommu, self->iova_allocator, &driver->region, SZ_2M);
self->unmapped_iova = iova_allocator_alloc(self->iova_allocator, SZ_1G);