RDMA: Cleanup undesired pd->uobject usage
Drivers should be using udata to determine if a method is invoked from user space or kernel space. A pd does not necessarily say a different objects is kernel or user. Transforming the tests to use udata eliminates a large number of uobject references from the drivers. Signed-off-by: Shamir Rabinovitch <shamir.rabinovitch@oracle.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:

committed by
Jason Gunthorpe

parent
af8d70375d
commit
e00b64f7c5
@@ -323,7 +323,7 @@ static int send_wqe_overhead(enum mlx4_ib_qp_type type, u32 flags)
|
||||
}
|
||||
|
||||
static int set_rq_size(struct mlx4_ib_dev *dev, struct ib_qp_cap *cap,
|
||||
int is_user, int has_rq, struct mlx4_ib_qp *qp,
|
||||
bool is_user, int has_rq, struct mlx4_ib_qp *qp,
|
||||
u32 inl_recv_sz)
|
||||
{
|
||||
/* Sanity check RQ size before proceeding */
|
||||
@@ -942,7 +942,7 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd,
|
||||
qp->sq_signal_bits = cpu_to_be32(MLX4_WQE_CTRL_CQ_UPDATE);
|
||||
|
||||
|
||||
if (pd->uobject) {
|
||||
if (udata) {
|
||||
union {
|
||||
struct mlx4_ib_create_qp qp;
|
||||
struct mlx4_ib_create_wq wq;
|
||||
@@ -991,7 +991,7 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd,
|
||||
qp->flags |= MLX4_IB_QP_SCATTER_FCS;
|
||||
}
|
||||
|
||||
err = set_rq_size(dev, &init_attr->cap, !!pd->uobject,
|
||||
err = set_rq_size(dev, &init_attr->cap, udata,
|
||||
qp_has_rq(init_attr), qp, qp->inl_recv_sz);
|
||||
if (err)
|
||||
goto err;
|
||||
@@ -1043,7 +1043,7 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd,
|
||||
}
|
||||
qp->mqp.usage = MLX4_RES_USAGE_USER_VERBS;
|
||||
} else {
|
||||
err = set_rq_size(dev, &init_attr->cap, !!pd->uobject,
|
||||
err = set_rq_size(dev, &init_attr->cap, udata,
|
||||
qp_has_rq(init_attr), qp, 0);
|
||||
if (err)
|
||||
goto err;
|
||||
@@ -1189,7 +1189,7 @@ err_proxy:
|
||||
if (qp->mlx4_ib_qp_type == MLX4_IB_QPT_PROXY_GSI)
|
||||
free_proxy_bufs(pd->device, qp);
|
||||
err_wrid:
|
||||
if (pd->uobject) {
|
||||
if (udata) {
|
||||
if (qp_has_rq(init_attr))
|
||||
mlx4_ib_db_unmap_user(to_mucontext(pd->uobject->context), &qp->db);
|
||||
} else {
|
||||
@@ -1201,13 +1201,13 @@ err_mtt:
|
||||
mlx4_mtt_cleanup(dev->dev, &qp->mtt);
|
||||
|
||||
err_buf:
|
||||
if (pd->uobject)
|
||||
if (qp->umem)
|
||||
ib_umem_release(qp->umem);
|
||||
else
|
||||
mlx4_buf_free(dev->dev, qp->buf_size, &qp->buf);
|
||||
|
||||
err_db:
|
||||
if (!pd->uobject && qp_has_rq(init_attr))
|
||||
if (!udata && qp_has_rq(init_attr))
|
||||
mlx4_db_free(dev->dev, &qp->db);
|
||||
|
||||
err:
|
||||
@@ -1332,7 +1332,7 @@ static void destroy_qp_rss(struct mlx4_ib_dev *dev, struct mlx4_ib_qp *qp)
|
||||
}
|
||||
|
||||
static void destroy_qp_common(struct mlx4_ib_dev *dev, struct mlx4_ib_qp *qp,
|
||||
enum mlx4_ib_source_type src, int is_user)
|
||||
enum mlx4_ib_source_type src, bool is_user)
|
||||
{
|
||||
struct mlx4_ib_cq *send_cq, *recv_cq;
|
||||
unsigned long flags;
|
||||
@@ -1612,7 +1612,7 @@ static int _mlx4_ib_destroy_qp(struct ib_qp *qp)
|
||||
struct mlx4_ib_pd *pd;
|
||||
|
||||
pd = get_pd(mqp);
|
||||
destroy_qp_common(dev, mqp, MLX4_IB_QP_SRC, !!pd->ibpd.uobject);
|
||||
destroy_qp_common(dev, mqp, MLX4_IB_QP_SRC, qp->uobject);
|
||||
}
|
||||
|
||||
if (is_sqp(dev, mqp))
|
||||
@@ -4044,7 +4044,7 @@ struct ib_wq *mlx4_ib_create_wq(struct ib_pd *pd,
|
||||
struct mlx4_ib_create_wq ucmd;
|
||||
int err, required_cmd_sz;
|
||||
|
||||
if (!(udata && pd->uobject))
|
||||
if (!udata)
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
required_cmd_sz = offsetof(typeof(ucmd), comp_mask) +
|
||||
|
@@ -105,7 +105,7 @@ struct ib_srq *mlx4_ib_create_srq(struct ib_pd *pd,
|
||||
|
||||
buf_size = srq->msrq.max * desc_size;
|
||||
|
||||
if (pd->uobject) {
|
||||
if (udata) {
|
||||
struct mlx4_ib_create_srq ucmd;
|
||||
|
||||
if (ib_copy_from_udata(&ucmd, udata, sizeof ucmd)) {
|
||||
@@ -191,7 +191,7 @@ struct ib_srq *mlx4_ib_create_srq(struct ib_pd *pd,
|
||||
srq->msrq.event = mlx4_ib_srq_event;
|
||||
srq->ibsrq.ext.xrc.srq_num = srq->msrq.srqn;
|
||||
|
||||
if (pd->uobject)
|
||||
if (udata)
|
||||
if (ib_copy_to_udata(udata, &srq->msrq.srqn, sizeof (__u32))) {
|
||||
err = -EFAULT;
|
||||
goto err_wrid;
|
||||
@@ -202,7 +202,7 @@ struct ib_srq *mlx4_ib_create_srq(struct ib_pd *pd,
|
||||
return &srq->ibsrq;
|
||||
|
||||
err_wrid:
|
||||
if (pd->uobject)
|
||||
if (udata)
|
||||
mlx4_ib_db_unmap_user(to_mucontext(pd->uobject->context), &srq->db);
|
||||
else
|
||||
kvfree(srq->wrid);
|
||||
@@ -211,13 +211,13 @@ err_mtt:
|
||||
mlx4_mtt_cleanup(dev->dev, &srq->mtt);
|
||||
|
||||
err_buf:
|
||||
if (pd->uobject)
|
||||
if (srq->umem)
|
||||
ib_umem_release(srq->umem);
|
||||
else
|
||||
mlx4_buf_free(dev->dev, buf_size, &srq->buf);
|
||||
|
||||
err_db:
|
||||
if (!pd->uobject)
|
||||
if (!udata)
|
||||
mlx4_db_free(dev->dev, &srq->db);
|
||||
|
||||
err_srq:
|
||||
|
Reference in New Issue
Block a user