Lines Matching refs:bfregi

1131 			     struct mlx5_bfreg_info *bfregi)  in calc_total_bfregs()  argument
1153 bfregi->num_static_sys_pages = req->total_num_bfregs / bfregs_per_sys_page; in calc_total_bfregs()
1154 bfregi->num_dyn_bfregs = ALIGN(calc_dynamic_bfregs(uars_per_sys_page), bfregs_per_sys_page); in calc_total_bfregs()
1155 bfregi->total_num_bfregs = req->total_num_bfregs + bfregi->num_dyn_bfregs; in calc_total_bfregs()
1156 bfregi->num_sys_pages = bfregi->total_num_bfregs / bfregs_per_sys_page; in calc_total_bfregs()
1161 req->total_num_bfregs, bfregi->total_num_bfregs, in calc_total_bfregs()
1162 bfregi->num_sys_pages); in calc_total_bfregs()
1169 struct mlx5_bfreg_info *bfregi; in allocate_uars() local
1173 bfregi = &context->bfregi; in allocate_uars()
1174 for (i = 0; i < bfregi->num_static_sys_pages; i++) { in allocate_uars()
1175 err = mlx5_cmd_alloc_uar(dev->mdev, &bfregi->sys_pages[i]); in allocate_uars()
1179 mlx5_ib_dbg(dev, "allocated uar %d\n", bfregi->sys_pages[i]); in allocate_uars()
1182 for (i = bfregi->num_static_sys_pages; i < bfregi->num_sys_pages; i++) in allocate_uars()
1183 bfregi->sys_pages[i] = MLX5_IB_INVALID_UAR_INDEX; in allocate_uars()
1189 if (mlx5_cmd_free_uar(dev->mdev, bfregi->sys_pages[i])) in allocate_uars()
1198 struct mlx5_bfreg_info *bfregi; in deallocate_uars() local
1201 bfregi = &context->bfregi; in deallocate_uars()
1202 for (i = 0; i < bfregi->num_sys_pages; i++) in deallocate_uars()
1203 if (i < bfregi->num_static_sys_pages || in deallocate_uars()
1204 bfregi->sys_pages[i] != MLX5_IB_INVALID_UAR_INDEX) in deallocate_uars()
1205 mlx5_cmd_free_uar(dev->mdev, bfregi->sys_pages[i]); in deallocate_uars()
1268 struct mlx5_bfreg_info *bfregi; in mlx5_ib_alloc_ucontext() local
1322 bfregi = &context->bfregi; in mlx5_ib_alloc_ucontext()
1325 bfregi->lib_uar_dyn = lib_uar_dyn; in mlx5_ib_alloc_ucontext()
1330 err = calc_total_bfregs(dev, lib_uar_4k, &req, bfregi); in mlx5_ib_alloc_ucontext()
1334 mutex_init(&bfregi->lock); in mlx5_ib_alloc_ucontext()
1335 bfregi->lib_uar_4k = lib_uar_4k; in mlx5_ib_alloc_ucontext()
1336 bfregi->count = kcalloc(bfregi->total_num_bfregs, sizeof(*bfregi->count), in mlx5_ib_alloc_ucontext()
1338 if (!bfregi->count) { in mlx5_ib_alloc_ucontext()
1343 bfregi->sys_pages = kcalloc(bfregi->num_sys_pages, in mlx5_ib_alloc_ucontext()
1344 sizeof(*bfregi->sys_pages), in mlx5_ib_alloc_ucontext()
1346 if (!bfregi->sys_pages) { in mlx5_ib_alloc_ucontext()
1406 resp.num_dyn_bfregs = bfregi->num_dyn_bfregs; in mlx5_ib_alloc_ucontext()
1414 bfregi->ver = ver; in mlx5_ib_alloc_ucontext()
1415 bfregi->num_low_latency_bfregs = req.num_low_latency_bfregs; in mlx5_ib_alloc_ucontext()
1432 kfree(bfregi->sys_pages); in mlx5_ib_alloc_ucontext()
1435 kfree(bfregi->count); in mlx5_ib_alloc_ucontext()
1445 struct mlx5_bfreg_info *bfregi; in mlx5_ib_dealloc_ucontext() local
1447 bfregi = &context->bfregi; in mlx5_ib_dealloc_ucontext()
1454 kfree(bfregi->sys_pages); in mlx5_ib_dealloc_ucontext()
1455 kfree(bfregi->count); in mlx5_ib_dealloc_ucontext()
1545 struct mlx5_bfreg_info *bfregi = &context->bfregi; in uar_mmap() local
1553 int max_valid_idx = dyn_uar ? bfregi->num_sys_pages : in uar_mmap()
1554 bfregi->num_static_sys_pages; in uar_mmap()
1556 if (bfregi->lib_uar_dyn) in uar_mmap()
1563 idx = get_extended_index(vma->vm_pgoff) + bfregi->num_static_sys_pages; in uar_mmap()
1590 uars_per_page = get_uars_per_sys_page(dev, bfregi->lib_uar_4k); in uar_mmap()
1592 if (bfreg_dyn_idx >= bfregi->total_num_bfregs) { in uar_mmap()
1594 bfreg_dyn_idx, bfregi->total_num_bfregs); in uar_mmap()
1598 mutex_lock(&bfregi->lock); in uar_mmap()
1602 if (bfregi->count[bfreg_dyn_idx]) { in uar_mmap()
1604 mutex_unlock(&bfregi->lock); in uar_mmap()
1608 bfregi->count[bfreg_dyn_idx]++; in uar_mmap()
1609 mutex_unlock(&bfregi->lock); in uar_mmap()
1617 uar_index = bfregi->sys_pages[idx]; in uar_mmap()
1633 bfregi->sys_pages[idx] = uar_index; in uar_mmap()
1643 mlx5_ib_free_bfreg(dev, bfregi, bfreg_dyn_idx); in uar_mmap()