Lines Matching refs:bfregi
1593 struct mlx5_bfreg_info *bfregi)
1615 bfregi->num_static_sys_pages = req->total_num_bfregs / bfregs_per_sys_page;
1616 bfregi->num_dyn_bfregs = ALIGN(calc_dynamic_bfregs(uars_per_sys_page), bfregs_per_sys_page);
1617 bfregi->total_num_bfregs = req->total_num_bfregs + bfregi->num_dyn_bfregs;
1618 bfregi->num_sys_pages = bfregi->total_num_bfregs / bfregs_per_sys_page;
1623 req->total_num_bfregs, bfregi->total_num_bfregs,
1624 bfregi->num_sys_pages);
1631 struct mlx5_bfreg_info *bfregi;
1635 bfregi = &context->bfregi;
1636 for (i = 0; i < bfregi->num_static_sys_pages; i++) {
1637 err = mlx5_cmd_alloc_uar(dev->mdev, &bfregi->sys_pages[i]);
1641 mlx5_ib_dbg(dev, "allocated uar %d\n", bfregi->sys_pages[i]);
1644 for (i = bfregi->num_static_sys_pages; i < bfregi->num_sys_pages; i++)
1645 bfregi->sys_pages[i] = MLX5_IB_INVALID_UAR_INDEX;
1651 if (mlx5_cmd_free_uar(dev->mdev, bfregi->sys_pages[i]))
1660 struct mlx5_bfreg_info *bfregi;
1663 bfregi = &context->bfregi;
1664 for (i = 0; i < bfregi->num_sys_pages; i++)
1665 if (i < bfregi->num_static_sys_pages ||
1666 bfregi->sys_pages[i] != MLX5_IB_INVALID_UAR_INDEX)
1667 mlx5_cmd_free_uar(dev->mdev, bfregi->sys_pages[i]);
1754 struct mlx5_bfreg_info *bfregi = &context->bfregi;
1799 resp->tot_bfregs = bfregi->lib_uar_dyn ? 0 :
1800 bfregi->total_num_bfregs - bfregi->num_dyn_bfregs;
1830 resp->num_dyn_bfregs = bfregi->num_dyn_bfregs;
1842 struct mlx5_bfreg_info *bfregi;
1877 bfregi = &context->bfregi;
1880 bfregi->lib_uar_dyn = lib_uar_dyn;
1885 err = calc_total_bfregs(dev, lib_uar_4k, &req, bfregi);
1889 mutex_init(&bfregi->lock);
1890 bfregi->lib_uar_4k = lib_uar_4k;
1891 bfregi->count = kcalloc(bfregi->total_num_bfregs, sizeof(*bfregi->count),
1893 if (!bfregi->count) {
1898 bfregi->sys_pages = kcalloc(bfregi->num_sys_pages,
1899 sizeof(*bfregi->sys_pages),
1901 if (!bfregi->sys_pages) {
1939 bfregi->ver = ver;
1940 bfregi->num_low_latency_bfregs = req.num_low_latency_bfregs;
1964 kfree(bfregi->sys_pages);
1967 kfree(bfregi->count);
2000 struct mlx5_bfreg_info *bfregi;
2002 bfregi = &context->bfregi;
2009 kfree(bfregi->sys_pages);
2010 kfree(bfregi->count);
2132 struct mlx5_bfreg_info *bfregi = &context->bfregi;
2140 int max_valid_idx = dyn_uar ? bfregi->num_sys_pages :
2141 bfregi->num_static_sys_pages;
2143 if (bfregi->lib_uar_dyn)
2150 idx = get_extended_index(vma->vm_pgoff) + bfregi->num_static_sys_pages;
2177 uars_per_page = get_uars_per_sys_page(dev, bfregi->lib_uar_4k);
2179 if (bfreg_dyn_idx >= bfregi->total_num_bfregs) {
2181 bfreg_dyn_idx, bfregi->total_num_bfregs);
2185 mutex_lock(&bfregi->lock);
2189 if (bfregi->count[bfreg_dyn_idx]) {
2191 mutex_unlock(&bfregi->lock);
2195 bfregi->count[bfreg_dyn_idx]++;
2196 mutex_unlock(&bfregi->lock);
2204 uar_index = bfregi->sys_pages[idx];
2220 bfregi->sys_pages[idx] = uar_index;
2230 mlx5_ib_free_bfreg(dev, bfregi, bfreg_dyn_idx);