Lines Matching refs:up

82 	struct mlx5_uars_page *up = container_of(kref, struct mlx5_uars_page, ref_count);
84 list_del(&up->list);
85 iounmap(up->map);
86 if (mlx5_cmd_free_uar(up->mdev, up->index))
87 mlx5_core_warn(up->mdev, "failed to free uar index %d\n", up->index);
88 bitmap_free(up->reg_bitmap);
89 bitmap_free(up->fp_bitmap);
90 kfree(up);
96 struct mlx5_uars_page *up;
103 up = kzalloc(sizeof(*up), GFP_KERNEL);
104 if (!up)
107 up->mdev = mdev;
108 up->reg_bitmap = bitmap_zalloc(bfregs, GFP_KERNEL);
109 if (!up->reg_bitmap)
112 up->fp_bitmap = bitmap_zalloc(bfregs, GFP_KERNEL);
113 if (!up->fp_bitmap)
118 set_bit(i, up->reg_bitmap);
120 set_bit(i, up->fp_bitmap);
122 up->bfregs = bfregs;
123 up->fp_avail = bfregs * MLX5_FP_BFREGS_PER_UAR / MLX5_BFREGS_PER_UAR;
124 up->reg_avail = bfregs * MLX5_NON_FP_BFREGS_PER_UAR / MLX5_BFREGS_PER_UAR;
126 err = mlx5_cmd_alloc_uar(mdev, &up->index);
132 pfn = uar2pfn(mdev, up->index);
134 up->map = ioremap_wc(pfn << PAGE_SHIFT, PAGE_SIZE);
135 if (!up->map) {
140 up->map = ioremap(pfn << PAGE_SHIFT, PAGE_SIZE);
141 if (!up->map) {
146 kref_init(&up->ref_count);
148 up->index, up->bfregs);
149 return up;
152 if (mlx5_cmd_free_uar(mdev, up->index))
153 mlx5_core_warn(mdev, "failed to free uar index %d\n", up->index);
155 bitmap_free(up->fp_bitmap);
156 bitmap_free(up->reg_bitmap);
157 kfree(up);
183 void mlx5_put_uars_page(struct mlx5_core_dev *mdev, struct mlx5_uars_page *up)
186 kref_put(&up->ref_count, up_rel_func);
205 struct mlx5_uars_page *up;
222 up = alloc_uars_page(mdev, map_wc);
223 if (IS_ERR(up)) {
225 return PTR_ERR(up);
227 list_add(&up->list, head);
229 up = list_entry(head->next, struct mlx5_uars_page, list);
230 kref_get(&up->ref_count);
233 bitmap = up->fp_bitmap;
234 avail = &up->fp_avail;
236 bitmap = up->reg_bitmap;
237 avail = &up->reg_avail;
239 dbi = find_first_bit(bitmap, up->bfregs);
243 list_del(&up->list);
245 bfreg->map = up->map + map_offset(mdev, dbi);
246 bfreg->up = up;
248 bfreg->index = up->index + dbi / MLX5_BFREGS_PER_UAR;
271 struct mlx5_uars_page *up,
280 uar_idx = (bfreg->map - up->map) >> MLX5_ADAPTER_PAGE_SHIFT;
289 struct mlx5_uars_page *up;
305 up = bfreg->up;
306 dbi = addr_to_dbi_in_syspage(mdev, up, bfreg);
309 avail = &up->fp_avail;
310 bitmap = up->fp_bitmap;
312 avail = &up->reg_avail;
313 bitmap = up->reg_bitmap;
319 list_add_tail(&up->list, head);
321 kref_put(&up->ref_count, up_rel_func);