Lines Matching refs:bfregi
1577 struct mlx5_bfreg_info *bfregi) in calc_total_bfregs() argument
1599 bfregi->num_static_sys_pages = req->total_num_bfregs / bfregs_per_sys_page; in calc_total_bfregs()
1600 bfregi->num_dyn_bfregs = ALIGN(calc_dynamic_bfregs(uars_per_sys_page), bfregs_per_sys_page); in calc_total_bfregs()
1601 bfregi->total_num_bfregs = req->total_num_bfregs + bfregi->num_dyn_bfregs; in calc_total_bfregs()
1602 bfregi->num_sys_pages = bfregi->total_num_bfregs / bfregs_per_sys_page; in calc_total_bfregs()
1607 req->total_num_bfregs, bfregi->total_num_bfregs, in calc_total_bfregs()
1608 bfregi->num_sys_pages); in calc_total_bfregs()
1615 struct mlx5_bfreg_info *bfregi; in allocate_uars() local
1619 bfregi = &context->bfregi; in allocate_uars()
1620 for (i = 0; i < bfregi->num_static_sys_pages; i++) { in allocate_uars()
1621 err = mlx5_cmd_alloc_uar(dev->mdev, &bfregi->sys_pages[i]); in allocate_uars()
1625 mlx5_ib_dbg(dev, "allocated uar %d\n", bfregi->sys_pages[i]); in allocate_uars()
1628 for (i = bfregi->num_static_sys_pages; i < bfregi->num_sys_pages; i++) in allocate_uars()
1629 bfregi->sys_pages[i] = MLX5_IB_INVALID_UAR_INDEX; in allocate_uars()
1635 if (mlx5_cmd_free_uar(dev->mdev, bfregi->sys_pages[i])) in allocate_uars()
1644 struct mlx5_bfreg_info *bfregi; in deallocate_uars() local
1647 bfregi = &context->bfregi; in deallocate_uars()
1648 for (i = 0; i < bfregi->num_sys_pages; i++) in deallocate_uars()
1649 if (i < bfregi->num_static_sys_pages || in deallocate_uars()
1650 bfregi->sys_pages[i] != MLX5_IB_INVALID_UAR_INDEX) in deallocate_uars()
1651 mlx5_cmd_free_uar(dev->mdev, bfregi->sys_pages[i]); in deallocate_uars()
1738 struct mlx5_bfreg_info *bfregi = &context->bfregi; in set_ucontext_resp() local
1783 resp->tot_bfregs = bfregi->lib_uar_dyn ? 0 : in set_ucontext_resp()
1784 bfregi->total_num_bfregs - bfregi->num_dyn_bfregs; in set_ucontext_resp()
1814 resp->num_dyn_bfregs = bfregi->num_dyn_bfregs; in set_ucontext_resp()
1826 struct mlx5_bfreg_info *bfregi; in mlx5_ib_alloc_ucontext() local
1861 bfregi = &context->bfregi; in mlx5_ib_alloc_ucontext()
1864 bfregi->lib_uar_dyn = lib_uar_dyn; in mlx5_ib_alloc_ucontext()
1869 err = calc_total_bfregs(dev, lib_uar_4k, &req, bfregi); in mlx5_ib_alloc_ucontext()
1873 mutex_init(&bfregi->lock); in mlx5_ib_alloc_ucontext()
1874 bfregi->lib_uar_4k = lib_uar_4k; in mlx5_ib_alloc_ucontext()
1875 bfregi->count = kcalloc(bfregi->total_num_bfregs, sizeof(*bfregi->count), in mlx5_ib_alloc_ucontext()
1877 if (!bfregi->count) { in mlx5_ib_alloc_ucontext()
1882 bfregi->sys_pages = kcalloc(bfregi->num_sys_pages, in mlx5_ib_alloc_ucontext()
1883 sizeof(*bfregi->sys_pages), in mlx5_ib_alloc_ucontext()
1885 if (!bfregi->sys_pages) { in mlx5_ib_alloc_ucontext()
1923 bfregi->ver = ver; in mlx5_ib_alloc_ucontext()
1924 bfregi->num_low_latency_bfregs = req.num_low_latency_bfregs; in mlx5_ib_alloc_ucontext()
1948 kfree(bfregi->sys_pages); in mlx5_ib_alloc_ucontext()
1951 kfree(bfregi->count); in mlx5_ib_alloc_ucontext()
1984 struct mlx5_bfreg_info *bfregi; in mlx5_ib_dealloc_ucontext() local
1986 bfregi = &context->bfregi; in mlx5_ib_dealloc_ucontext()
1993 kfree(bfregi->sys_pages); in mlx5_ib_dealloc_ucontext()
1994 kfree(bfregi->count); in mlx5_ib_dealloc_ucontext()
2116 struct mlx5_bfreg_info *bfregi = &context->bfregi; in uar_mmap() local
2124 int max_valid_idx = dyn_uar ? bfregi->num_sys_pages : in uar_mmap()
2125 bfregi->num_static_sys_pages; in uar_mmap()
2127 if (bfregi->lib_uar_dyn) in uar_mmap()
2134 idx = get_extended_index(vma->vm_pgoff) + bfregi->num_static_sys_pages; in uar_mmap()
2161 uars_per_page = get_uars_per_sys_page(dev, bfregi->lib_uar_4k); in uar_mmap()
2163 if (bfreg_dyn_idx >= bfregi->total_num_bfregs) { in uar_mmap()
2165 bfreg_dyn_idx, bfregi->total_num_bfregs); in uar_mmap()
2169 mutex_lock(&bfregi->lock); in uar_mmap()
2173 if (bfregi->count[bfreg_dyn_idx]) { in uar_mmap()
2175 mutex_unlock(&bfregi->lock); in uar_mmap()
2179 bfregi->count[bfreg_dyn_idx]++; in uar_mmap()
2180 mutex_unlock(&bfregi->lock); in uar_mmap()
2188 uar_index = bfregi->sys_pages[idx]; in uar_mmap()
2204 bfregi->sys_pages[idx] = uar_index; in uar_mmap()
2214 mlx5_ib_free_bfreg(dev, bfregi, bfreg_dyn_idx); in uar_mmap()