brintos

brintos / linux-shallow public Read only

0
0
Text · 755 B · 92a9f24 Raw
30 lines · c
1// SPDX-License-Identifier: GPL-2.02/*3 * IOMMU helper functions for the free area management4 */5 6#include <linux/bitmap.h>7#include <linux/iommu-helper.h>8 9unsigned long iommu_area_alloc(unsigned long *map, unsigned long size,10			       unsigned long start, unsigned int nr,11			       unsigned long shift, unsigned long boundary_size,12			       unsigned long align_mask)13{14	unsigned long index;15 16	/* We don't want the last of the limit */17	size -= 1;18again:19	index = bitmap_find_next_zero_area(map, size, start, nr, align_mask);20	if (index < size) {21		if (iommu_is_span_boundary(index, nr, shift, boundary_size)) {22			start = ALIGN(shift + index, boundary_size) - shift;23			goto again;24		}25		bitmap_set(map, index, nr);26		return index;27	}28	return -1;29}30