iommu-api: Remove iommu_{un}map_range functions
[safe/jmp/linux-2.6] / drivers / net / mlx4 / alloc.c
index e2bc7ec..8c85156 100644 (file)
@@ -33,6 +33,7 @@
 
 #include <linux/errno.h>
 #include <linux/slab.h>
+#include <linux/mm.h>
 #include <linux/bitmap.h>
 #include <linux/dma-mapping.h>
 #include <linux/vmalloc.h>
@@ -71,35 +72,6 @@ void mlx4_bitmap_free(struct mlx4_bitmap *bitmap, u32 obj)
        mlx4_bitmap_free_range(bitmap, obj, 1);
 }
 
-static unsigned long find_aligned_range(unsigned long *bitmap,
-                                       u32 start, u32 nbits,
-                                       int len, int align)
-{
-       unsigned long end, i;
-
-again:
-       start = ALIGN(start, align);
-
-       while ((start < nbits) && test_bit(start, bitmap))
-               start += align;
-
-       if (start >= nbits)
-               return -1;
-
-       end = start+len;
-       if (end > nbits)
-               return -1;
-
-       for (i = start + 1; i < end; i++) {
-               if (test_bit(i, bitmap)) {
-                       start = i + 1;
-                       goto again;
-               }
-       }
-
-       return start;
-}
-
 u32 mlx4_bitmap_alloc_range(struct mlx4_bitmap *bitmap, int cnt, int align)
 {
        u32 obj, i;
@@ -109,13 +81,13 @@ u32 mlx4_bitmap_alloc_range(struct mlx4_bitmap *bitmap, int cnt, int align)
 
        spin_lock(&bitmap->lock);
 
-       obj = find_aligned_range(bitmap->table, bitmap->last,
-                                bitmap->max, cnt, align);
+       obj = bitmap_find_next_zero_area(bitmap->table, bitmap->max,
+                               bitmap->last, cnt, align - 1);
        if (obj >= bitmap->max) {
                bitmap->top = (bitmap->top + bitmap->max + bitmap->reserved_top)
                                & bitmap->mask;
-               obj = find_aligned_range(bitmap->table, 0, bitmap->max,
-                                        cnt, align);
+               obj = bitmap_find_next_zero_area(bitmap->table, bitmap->max,
+                                               0, cnt, align - 1);
        }
 
        if (obj < bitmap->max) {