Lines Matching refs:bfregi

1613 			     struct mlx5_bfreg_info *bfregi)  in calc_total_bfregs()  argument
1635 bfregi->num_static_sys_pages = req->total_num_bfregs / bfregs_per_sys_page; in calc_total_bfregs()
1636 bfregi->num_dyn_bfregs = ALIGN(calc_dynamic_bfregs(uars_per_sys_page), bfregs_per_sys_page); in calc_total_bfregs()
1637 bfregi->total_num_bfregs = req->total_num_bfregs + bfregi->num_dyn_bfregs; in calc_total_bfregs()
1638 bfregi->num_sys_pages = bfregi->total_num_bfregs / bfregs_per_sys_page; in calc_total_bfregs()
1643 req->total_num_bfregs, bfregi->total_num_bfregs, in calc_total_bfregs()
1644 bfregi->num_sys_pages); in calc_total_bfregs()
1651 struct mlx5_bfreg_info *bfregi; in allocate_uars() local
1655 bfregi = &context->bfregi; in allocate_uars()
1656 for (i = 0; i < bfregi->num_static_sys_pages; i++) { in allocate_uars()
1657 err = mlx5_cmd_alloc_uar(dev->mdev, &bfregi->sys_pages[i]); in allocate_uars()
1661 mlx5_ib_dbg(dev, "allocated uar %d\n", bfregi->sys_pages[i]); in allocate_uars()
1664 for (i = bfregi->num_static_sys_pages; i < bfregi->num_sys_pages; i++) in allocate_uars()
1665 bfregi->sys_pages[i] = MLX5_IB_INVALID_UAR_INDEX; in allocate_uars()
1671 if (mlx5_cmd_free_uar(dev->mdev, bfregi->sys_pages[i])) in allocate_uars()
1680 struct mlx5_bfreg_info *bfregi; in deallocate_uars() local
1683 bfregi = &context->bfregi; in deallocate_uars()
1684 for (i = 0; i < bfregi->num_sys_pages; i++) in deallocate_uars()
1685 if (i < bfregi->num_static_sys_pages || in deallocate_uars()
1686 bfregi->sys_pages[i] != MLX5_IB_INVALID_UAR_INDEX) in deallocate_uars()
1687 mlx5_cmd_free_uar(dev->mdev, bfregi->sys_pages[i]); in deallocate_uars()
1777 struct mlx5_bfreg_info *bfregi; in mlx5_ib_alloc_ucontext() local
1842 bfregi = &context->bfregi; in mlx5_ib_alloc_ucontext()
1845 err = calc_total_bfregs(dev, lib_uar_4k, &req, bfregi); in mlx5_ib_alloc_ucontext()
1849 mutex_init(&bfregi->lock); in mlx5_ib_alloc_ucontext()
1850 bfregi->lib_uar_4k = lib_uar_4k; in mlx5_ib_alloc_ucontext()
1851 bfregi->count = kcalloc(bfregi->total_num_bfregs, sizeof(*bfregi->count), in mlx5_ib_alloc_ucontext()
1853 if (!bfregi->count) { in mlx5_ib_alloc_ucontext()
1858 bfregi->sys_pages = kcalloc(bfregi->num_sys_pages, in mlx5_ib_alloc_ucontext()
1859 sizeof(*bfregi->sys_pages), in mlx5_ib_alloc_ucontext()
1861 if (!bfregi->sys_pages) { in mlx5_ib_alloc_ucontext()
1940 resp.num_dyn_bfregs = bfregi->num_dyn_bfregs; in mlx5_ib_alloc_ucontext()
1957 bfregi->ver = ver; in mlx5_ib_alloc_ucontext()
1958 bfregi->num_low_latency_bfregs = req.num_low_latency_bfregs; in mlx5_ib_alloc_ucontext()
1983 kfree(bfregi->sys_pages); in mlx5_ib_alloc_ucontext()
1986 kfree(bfregi->count); in mlx5_ib_alloc_ucontext()
1996 struct mlx5_bfreg_info *bfregi; in mlx5_ib_dealloc_ucontext() local
1998 bfregi = &context->bfregi; in mlx5_ib_dealloc_ucontext()
2005 kfree(bfregi->sys_pages); in mlx5_ib_dealloc_ucontext()
2006 kfree(bfregi->count); in mlx5_ib_dealloc_ucontext()
2087 struct mlx5_bfreg_info *bfregi = &context->bfregi; in uar_mmap() local
2095 int max_valid_idx = dyn_uar ? bfregi->num_sys_pages : in uar_mmap()
2096 bfregi->num_static_sys_pages; in uar_mmap()
2102 idx = get_extended_index(vma->vm_pgoff) + bfregi->num_static_sys_pages; in uar_mmap()
2137 uars_per_page = get_uars_per_sys_page(dev, bfregi->lib_uar_4k); in uar_mmap()
2139 if (bfreg_dyn_idx >= bfregi->total_num_bfregs) { in uar_mmap()
2141 bfreg_dyn_idx, bfregi->total_num_bfregs); in uar_mmap()
2145 mutex_lock(&bfregi->lock); in uar_mmap()
2149 if (bfregi->count[bfreg_dyn_idx]) { in uar_mmap()
2151 mutex_unlock(&bfregi->lock); in uar_mmap()
2155 bfregi->count[bfreg_dyn_idx]++; in uar_mmap()
2156 mutex_unlock(&bfregi->lock); in uar_mmap()
2164 uar_index = bfregi->sys_pages[idx]; in uar_mmap()
2180 bfregi->sys_pages[idx] = uar_index; in uar_mmap()
2190 mlx5_ib_free_bfreg(dev, bfregi, bfreg_dyn_idx); in uar_mmap()