Lines Matching refs:bfregi

1497 			     struct mlx5_bfreg_info *bfregi)  in calc_total_bfregs()  argument
1519 bfregi->num_static_sys_pages = req->total_num_bfregs / bfregs_per_sys_page; in calc_total_bfregs()
1520 bfregi->num_dyn_bfregs = ALIGN(calc_dynamic_bfregs(uars_per_sys_page), bfregs_per_sys_page); in calc_total_bfregs()
1521 bfregi->total_num_bfregs = req->total_num_bfregs + bfregi->num_dyn_bfregs; in calc_total_bfregs()
1522 bfregi->num_sys_pages = bfregi->total_num_bfregs / bfregs_per_sys_page; in calc_total_bfregs()
1527 req->total_num_bfregs, bfregi->total_num_bfregs, in calc_total_bfregs()
1528 bfregi->num_sys_pages); in calc_total_bfregs()
1535 struct mlx5_bfreg_info *bfregi; in allocate_uars() local
1539 bfregi = &context->bfregi; in allocate_uars()
1540 for (i = 0; i < bfregi->num_static_sys_pages; i++) { in allocate_uars()
1541 err = mlx5_cmd_alloc_uar(dev->mdev, &bfregi->sys_pages[i]); in allocate_uars()
1545 mlx5_ib_dbg(dev, "allocated uar %d\n", bfregi->sys_pages[i]); in allocate_uars()
1548 for (i = bfregi->num_static_sys_pages; i < bfregi->num_sys_pages; i++) in allocate_uars()
1549 bfregi->sys_pages[i] = MLX5_IB_INVALID_UAR_INDEX; in allocate_uars()
1555 if (mlx5_cmd_free_uar(dev->mdev, bfregi->sys_pages[i])) in allocate_uars()
1564 struct mlx5_bfreg_info *bfregi; in deallocate_uars() local
1567 bfregi = &context->bfregi; in deallocate_uars()
1568 for (i = 0; i < bfregi->num_sys_pages; i++) in deallocate_uars()
1569 if (i < bfregi->num_static_sys_pages || in deallocate_uars()
1570 bfregi->sys_pages[i] != MLX5_IB_INVALID_UAR_INDEX) in deallocate_uars()
1571 mlx5_cmd_free_uar(dev->mdev, bfregi->sys_pages[i]); in deallocate_uars()
1629 struct mlx5_bfreg_info *bfregi; in mlx5_ib_alloc_ucontext() local
1698 bfregi = &context->bfregi; in mlx5_ib_alloc_ucontext()
1701 err = calc_total_bfregs(dev, lib_uar_4k, &req, bfregi); in mlx5_ib_alloc_ucontext()
1705 mutex_init(&bfregi->lock); in mlx5_ib_alloc_ucontext()
1706 bfregi->lib_uar_4k = lib_uar_4k; in mlx5_ib_alloc_ucontext()
1707 bfregi->count = kcalloc(bfregi->total_num_bfregs, sizeof(*bfregi->count), in mlx5_ib_alloc_ucontext()
1709 if (!bfregi->count) { in mlx5_ib_alloc_ucontext()
1714 bfregi->sys_pages = kcalloc(bfregi->num_sys_pages, in mlx5_ib_alloc_ucontext()
1715 sizeof(*bfregi->sys_pages), in mlx5_ib_alloc_ucontext()
1717 if (!bfregi->sys_pages) { in mlx5_ib_alloc_ucontext()
1806 resp.num_dyn_bfregs = bfregi->num_dyn_bfregs; in mlx5_ib_alloc_ucontext()
1823 bfregi->ver = ver; in mlx5_ib_alloc_ucontext()
1824 bfregi->num_low_latency_bfregs = req.num_low_latency_bfregs; in mlx5_ib_alloc_ucontext()
1841 kfree(bfregi->sys_pages); in mlx5_ib_alloc_ucontext()
1844 kfree(bfregi->count); in mlx5_ib_alloc_ucontext()
1856 struct mlx5_bfreg_info *bfregi; in mlx5_ib_dealloc_ucontext() local
1861 bfregi = &context->bfregi; in mlx5_ib_dealloc_ucontext()
1865 kfree(bfregi->sys_pages); in mlx5_ib_dealloc_ucontext()
1866 kfree(bfregi->count); in mlx5_ib_dealloc_ucontext()
2041 struct mlx5_bfreg_info *bfregi = &context->bfregi; in uar_mmap() local
2049 int max_valid_idx = dyn_uar ? bfregi->num_sys_pages : in uar_mmap()
2050 bfregi->num_static_sys_pages; in uar_mmap()
2056 idx = get_extended_index(vma->vm_pgoff) + bfregi->num_static_sys_pages; in uar_mmap()
2091 uars_per_page = get_uars_per_sys_page(dev, bfregi->lib_uar_4k); in uar_mmap()
2093 if (bfreg_dyn_idx >= bfregi->total_num_bfregs) { in uar_mmap()
2095 bfreg_dyn_idx, bfregi->total_num_bfregs); in uar_mmap()
2099 mutex_lock(&bfregi->lock); in uar_mmap()
2103 if (bfregi->count[bfreg_dyn_idx]) { in uar_mmap()
2105 mutex_unlock(&bfregi->lock); in uar_mmap()
2109 bfregi->count[bfreg_dyn_idx]++; in uar_mmap()
2110 mutex_unlock(&bfregi->lock); in uar_mmap()
2118 uar_index = bfregi->sys_pages[idx]; in uar_mmap()
2140 bfregi->sys_pages[idx] = uar_index; in uar_mmap()
2150 mlx5_ib_free_bfreg(dev, bfregi, bfreg_dyn_idx); in uar_mmap()