Lines Matching refs:part

74 	struct mlxsw_sp1_kvdl_part *part, *min_part = NULL;
78 part = kvdl->parts[i];
79 if (alloc_size <= part->info.alloc_size &&
81 part->info.alloc_size <= min_part->info.alloc_size))
82 min_part = part;
91 struct mlxsw_sp1_kvdl_part *part;
95 part = kvdl->parts[i];
96 if (kvdl_index >= part->info.start_index &&
97 kvdl_index <= part->info.end_index)
98 return part;
118 static int mlxsw_sp1_kvdl_part_alloc(struct mlxsw_sp1_kvdl_part *part,
121 const struct mlxsw_sp1_kvdl_part_info *info = &part->info;
126 entry_index = find_first_zero_bit(part->usage, nr_entries);
129 __set_bit(entry_index, part->usage);
136 static void mlxsw_sp1_kvdl_part_free(struct mlxsw_sp1_kvdl_part *part,
139 const struct mlxsw_sp1_kvdl_part_info *info = &part->info;
143 __clear_bit(entry_index, part->usage);
152 struct mlxsw_sp1_kvdl_part *part;
157 part = mlxsw_sp1_kvdl_alloc_size_part(kvdl, entry_count);
158 if (IS_ERR(part))
159 return PTR_ERR(part);
161 return mlxsw_sp1_kvdl_part_alloc(part, p_entry_index);
169 struct mlxsw_sp1_kvdl_part *part;
171 part = mlxsw_sp1_kvdl_index_part(kvdl, entry_index);
172 if (IS_ERR(part))
174 mlxsw_sp1_kvdl_part_free(part, entry_index);
184 struct mlxsw_sp1_kvdl_part *part;
186 part = mlxsw_sp1_kvdl_alloc_size_part(kvdl, entry_count);
187 if (IS_ERR(part))
188 return PTR_ERR(part);
190 *p_alloc_size = part->info.alloc_size;
195 static void mlxsw_sp1_kvdl_part_update(struct mlxsw_sp1_kvdl_part *part,
200 part->info.end_index = size - 1;
202 part->info.start_index = part_prev->info.end_index + 1;
203 part->info.end_index = part->info.start_index + size - 1;
213 struct mlxsw_sp1_kvdl_part *part;
227 part = kzalloc(struct_size(part, usage, BITS_TO_LONGS(nr_entries)),
229 if (!part)
232 memcpy(&part->info, info, sizeof(part->info));
235 mlxsw_sp1_kvdl_part_update(part, part_prev, resource_size);
236 return part;
239 static void mlxsw_sp1_kvdl_part_fini(struct mlxsw_sp1_kvdl_part *part)
241 kfree(part);
277 static u64 mlxsw_sp1_kvdl_part_occ(struct mlxsw_sp1_kvdl_part *part)
279 const struct mlxsw_sp1_kvdl_part_info *info = &part->info;
287 while ((bit = find_next_bit(part->usage, nr_entries, bit + 1))
308 struct mlxsw_sp1_kvdl_part *part;
310 part = kvdl->parts[MLXSW_SP1_KVDL_PART_ID_SINGLE];
311 return mlxsw_sp1_kvdl_part_occ(part);
317 struct mlxsw_sp1_kvdl_part *part;
319 part = kvdl->parts[MLXSW_SP1_KVDL_PART_ID_CHUNKS];
320 return mlxsw_sp1_kvdl_part_occ(part);
326 struct mlxsw_sp1_kvdl_part *part;
328 part = kvdl->parts[MLXSW_SP1_KVDL_PART_ID_LARGE_CHUNKS];
329 return mlxsw_sp1_kvdl_part_occ(part);