Lines Matching refs:bfregi
1613 struct mlx5_bfreg_info *bfregi)
1635 bfregi->num_static_sys_pages = req->total_num_bfregs / bfregs_per_sys_page;
1636 bfregi->num_dyn_bfregs = ALIGN(calc_dynamic_bfregs(uars_per_sys_page), bfregs_per_sys_page);
1637 bfregi->total_num_bfregs = req->total_num_bfregs + bfregi->num_dyn_bfregs;
1638 bfregi->num_sys_pages = bfregi->total_num_bfregs / bfregs_per_sys_page;
1643 req->total_num_bfregs, bfregi->total_num_bfregs,
1644 bfregi->num_sys_pages);
1651 struct mlx5_bfreg_info *bfregi;
1655 bfregi = &context->bfregi;
1656 for (i = 0; i < bfregi->num_static_sys_pages; i++) {
1657 err = mlx5_cmd_uar_alloc(dev->mdev, &bfregi->sys_pages[i],
1662 mlx5_ib_dbg(dev, "allocated uar %d\n", bfregi->sys_pages[i]);
1665 for (i = bfregi->num_static_sys_pages; i < bfregi->num_sys_pages; i++)
1666 bfregi->sys_pages[i] = MLX5_IB_INVALID_UAR_INDEX;
1672 if (mlx5_cmd_uar_dealloc(dev->mdev, bfregi->sys_pages[i],
1682 struct mlx5_bfreg_info *bfregi;
1685 bfregi = &context->bfregi;
1686 for (i = 0; i < bfregi->num_sys_pages; i++)
1687 if (i < bfregi->num_static_sys_pages ||
1688 bfregi->sys_pages[i] != MLX5_IB_INVALID_UAR_INDEX)
1689 mlx5_cmd_uar_dealloc(dev->mdev, bfregi->sys_pages[i],
1777 struct mlx5_bfreg_info *bfregi = &context->bfregi;
1801 resp->tot_bfregs = bfregi->lib_uar_dyn ? 0 :
1802 bfregi->total_num_bfregs - bfregi->num_dyn_bfregs;
1838 resp->num_dyn_bfregs = bfregi->num_dyn_bfregs;
1857 struct mlx5_bfreg_info *bfregi;
1899 bfregi = &context->bfregi;
1902 bfregi->lib_uar_dyn = lib_uar_dyn;
1907 err = calc_total_bfregs(dev, lib_uar_4k, &req, bfregi);
1911 mutex_init(&bfregi->lock);
1912 bfregi->lib_uar_4k = lib_uar_4k;
1913 bfregi->count = kcalloc(bfregi->total_num_bfregs, sizeof(*bfregi->count),
1915 if (!bfregi->count) {
1920 bfregi->sys_pages = kcalloc(bfregi->num_sys_pages,
1921 sizeof(*bfregi->sys_pages),
1923 if (!bfregi->sys_pages) {
1954 bfregi->ver = ver;
1955 bfregi->num_low_latency_bfregs = req.num_low_latency_bfregs;
1976 kfree(bfregi->sys_pages);
1979 kfree(bfregi->count);
2016 struct mlx5_bfreg_info *bfregi;
2018 bfregi = &context->bfregi;
2022 kfree(bfregi->sys_pages);
2023 kfree(bfregi->count);
2147 struct mlx5_bfreg_info *bfregi = &context->bfregi;
2155 int max_valid_idx = dyn_uar ? bfregi->num_sys_pages :
2156 bfregi->num_static_sys_pages;
2158 if (bfregi->lib_uar_dyn)
2165 idx = get_extended_index(vma->vm_pgoff) + bfregi->num_static_sys_pages;
2192 uars_per_page = get_uars_per_sys_page(dev, bfregi->lib_uar_4k);
2194 if (bfreg_dyn_idx >= bfregi->total_num_bfregs) {
2196 bfreg_dyn_idx, bfregi->total_num_bfregs);
2200 mutex_lock(&bfregi->lock);
2204 if (bfregi->count[bfreg_dyn_idx]) {
2206 mutex_unlock(&bfregi->lock);
2210 bfregi->count[bfreg_dyn_idx]++;
2211 mutex_unlock(&bfregi->lock);
2220 uar_index = bfregi->sys_pages[idx];
2236 bfregi->sys_pages[idx] = uar_index;
2246 mlx5_ib_free_bfreg(dev, bfregi, bfreg_dyn_idx);