Lines Matching refs:seg
88 u32 seg; in mthca_buddy_alloc() local
95 seg = find_first_bit(buddy->bits[o], m); in mthca_buddy_alloc()
96 if (seg < m) in mthca_buddy_alloc()
104 clear_bit(seg, buddy->bits[o]); in mthca_buddy_alloc()
109 seg <<= 1; in mthca_buddy_alloc()
110 set_bit(seg ^ 1, buddy->bits[o]); in mthca_buddy_alloc()
116 seg <<= order; in mthca_buddy_alloc()
118 return seg; in mthca_buddy_alloc()
121 static void mthca_buddy_free(struct mthca_buddy *buddy, u32 seg, int order) in mthca_buddy_free() argument
123 seg >>= order; in mthca_buddy_free()
127 while (test_bit(seg ^ 1, buddy->bits[order])) { in mthca_buddy_free()
128 clear_bit(seg ^ 1, buddy->bits[order]); in mthca_buddy_free()
130 seg >>= 1; in mthca_buddy_free()
134 set_bit(seg, buddy->bits[order]); in mthca_buddy_free()
193 u32 seg = mthca_buddy_alloc(buddy, order); in mthca_alloc_mtt_range() local
195 if (seg == -1) in mthca_alloc_mtt_range()
199 if (mthca_table_get_range(dev, dev->mr_table.mtt_table, seg, in mthca_alloc_mtt_range()
200 seg + (1 << order) - 1)) { in mthca_alloc_mtt_range()
201 mthca_buddy_free(buddy, seg, order); in mthca_alloc_mtt_range()
202 seg = -1; in mthca_alloc_mtt_range()
205 return seg; in mthca_alloc_mtt_range()