On Wed, Oct 31, 2018 at 02:42:42PM +0200, Shamir Rabinovitch wrote: > Now we have the ability to tell from ib_pd if ib_pd was > created by user/kernel verbs. Stop using the ib_pd->uobject > pointer for this. This patch prepare the ib_pb uobject pointer > removal that will happen in another patch. > > Signed-off-by: Shamir Rabinovitch <shamir.rabinovitch@xxxxxxxxxx> > drivers/infiniband/hw/bnxt_re/ib_verbs.c | 4 ++-- > drivers/infiniband/hw/hns/hns_roce_hw_v1.c | 2 +- > drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 3 ++- > drivers/infiniband/hw/hns/hns_roce_qp.c | 17 +++++++++-------- > drivers/infiniband/hw/i40iw/i40iw_verbs.c | 2 +- > drivers/infiniband/hw/mlx4/qp.c | 11 ++++++----- > drivers/infiniband/hw/mlx4/srq.c | 10 +++++----- > drivers/infiniband/hw/mlx5/qp.c | 4 ++-- > drivers/infiniband/hw/mlx5/srq.c | 8 ++++---- > drivers/infiniband/hw/mthca/mthca_provider.c | 10 +++++----- > drivers/infiniband/hw/mthca/mthca_qp.c | 7 ++++--- > drivers/infiniband/hw/mthca/mthca_srq.c | 8 ++++---- > drivers/infiniband/hw/nes/nes_verbs.c | 7 ++++--- > drivers/infiniband/hw/ocrdma/ocrdma_verbs.c | 2 +- > drivers/infiniband/hw/qedr/verbs.c | 4 ++-- > drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c | 2 +- > drivers/infiniband/hw/vmw_pvrdma/pvrdma_srq.c | 2 +- > drivers/infiniband/sw/rxe/rxe_qp.c | 3 ++- > 18 files changed, 56 insertions(+), 50 deletions(-) > > diff --git a/drivers/infiniband/hw/bnxt_re/ib_verbs.c b/drivers/infiniband/hw/bnxt_re/ib_verbs.c > index 54fdd4c..d2d2630 100644 > +++ b/drivers/infiniband/hw/bnxt_re/ib_verbs.c > @@ -698,7 +698,7 @@ struct ib_ah *bnxt_re_create_ah(struct ib_pd *ib_pd, > ah->qplib_ah.flow_label = grh->flow_label; > ah->qplib_ah.hop_limit = grh->hop_limit; > ah->qplib_ah.sl = rdma_ah_get_sl(ah_attr); > - if (ib_pd->uobject && > + if (rdma_is_user_pd(ib_pd) && > !rdma_is_multicast_addr((struct in6_addr *) > grh->dgid.raw) && > !rdma_link_local_addr((struct in6_addr *) I have no idea why this if is here, but looks like it should be 'if (udata)' ? > @@ -729,7 +729,7 @@ struct ib_ah *bnxt_re_create_ah(struct ib_pd *ib_pd, > } > > /* Write AVID to shared page. */ > - if (ib_pd->uobject) { > + if (rdma_is_user_pd(ib_pd)) { > struct ib_ucontext *ib_uctx = ib_pd->uobject->context; > struct bnxt_re_ucontext *uctx; > unsigned long flag; This should be 'if (udata) {.. ib_utx = get_uctx_from_udata(..);..' > diff --git a/drivers/infiniband/hw/hns/hns_roce_hw_v1.c b/drivers/infiniband/hw/hns/hns_roce_hw_v1.c > index 00170aa..a6c581a 100644 > +++ b/drivers/infiniband/hw/hns/hns_roce_hw_v1.c > @@ -3926,7 +3926,7 @@ int hns_roce_v1_destroy_qp(struct ib_qp *ibqp) > struct hns_roce_qp_work *qp_work; > struct hns_roce_v1_priv *priv; > struct hns_roce_cq *send_cq, *recv_cq; > - bool is_user = ibqp->pd->uobject; > + bool is_user = rdma_is_user_pd(ibqp->pd); > int is_timeout = 0; > int ret; ibqp->uboject > diff --git a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c > index a4c62ae..8c659c1 100644 > +++ b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c > @@ -4096,7 +4096,8 @@ static int hns_roce_v2_destroy_qp(struct ib_qp *ibqp) > struct hns_roce_qp *hr_qp = to_hr_qp(ibqp); > int ret; > > - ret = hns_roce_v2_destroy_qp_common(hr_dev, hr_qp, !!ibqp->pd->uobject); > + ret = hns_roce_v2_destroy_qp_common(hr_dev, hr_qp, rdma_is_user_pd(ibqp->pd)); ibqp->uboject > diff --git a/drivers/infiniband/hw/hns/hns_roce_qp.c b/drivers/infiniband/hw/hns/hns_roce_qp.c > index 5ebf481..2b0c20f 100644 > +++ b/drivers/infiniband/hw/hns/hns_roce_qp.c > @@ -562,7 +562,8 @@ static int hns_roce_create_qp_common(struct hns_roce_dev *hr_dev, > else > hr_qp->sq_signal_bits = cpu_to_le32(IB_SIGNAL_REQ_WR); > > - ret = hns_roce_set_rq_size(hr_dev, &init_attr->cap, !!ib_pd->uobject, > + ret = hns_roce_set_rq_size(hr_dev, &init_attr->cap, > + rdma_is_user_pd(ib_pd), > !!init_attr->srq, hr_qp); probably if udata > if (ret) { > dev_err(dev, "hns_roce_set_rq_size failed\n"); > @@ -599,7 +600,7 @@ static int hns_roce_create_qp_common(struct hns_roce_dev *hr_dev, > init_attr->cap.max_recv_sge]; > } > > - if (ib_pd->uobject) { > + if (rdma_is_user_pd(ib_pd)) { > if (ib_copy_from_udata(&ucmd, udata, sizeof(ucmd))) { > dev_err(dev, "ib_copy_from_udata error for create qp\n"); > ret = -EFAULT; certainly if udata > @@ -784,7 +785,7 @@ static int hns_roce_create_qp_common(struct hns_roce_dev *hr_dev, > else > hr_qp->doorbell_qpn = cpu_to_le64(hr_qp->qpn); > > - if (ib_pd->uobject && (udata->outlen >= sizeof(resp)) && > + if (rdma_is_user_pd(ib_pd) && (udata->outlen >= sizeof(resp)) && > (hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_RECORD_DB)) { certainly if udata > /* indicate kernel supports rq record db */ > @@ -811,7 +812,7 @@ static int hns_roce_create_qp_common(struct hns_roce_dev *hr_dev, > hns_roce_release_range_qp(hr_dev, qpn, 1); > > err_wrid: > - if (ib_pd->uobject) { > + if (rdma_is_user_pd(ib_pd)) { > if ((hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_RECORD_DB) && > (udata->outlen >= sizeof(resp)) && > hns_roce_qp_has_rq(init_attr)) if udata > @@ -824,7 +825,7 @@ static int hns_roce_create_qp_common(struct hns_roce_dev *hr_dev, > } > > err_sq_dbmap: > - if (ib_pd->uobject) > + if (rdma_is_user_pd(ib_pd)) > if ((hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_SQ_RECORD_DB) && > (udata->inlen >= sizeof(ucmd)) && > (udata->outlen >= sizeof(resp)) && if udata > @@ -837,13 +838,13 @@ static int hns_roce_create_qp_common(struct hns_roce_dev *hr_dev, > hns_roce_mtt_cleanup(hr_dev, &hr_qp->mtt); > > err_buf: > - if (ib_pd->uobject) > + if (rdma_is_user_pd(ib_pd)) > ib_umem_release(hr_qp->umem); > else > hns_roce_buf_free(hr_dev, hr_qp->buff_size, &hr_qp->hr_buf); maybe if umem? > err_db: > - if (!ib_pd->uobject && hns_roce_qp_has_rq(init_attr) && > + if (!rdma_is_user_pd(ib_pd) && hns_roce_qp_has_rq(init_attr) && > (hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_RECORD_DB)) > hns_roce_free_db(hr_dev, &hr_qp->rdb); if udata? > @@ -889,7 +890,7 @@ struct ib_qp *hns_roce_create_qp(struct ib_pd *pd, > } > case IB_QPT_GSI: { > /* Userspace is not allowed to create special QPs: */ > - if (pd->uobject) { > + if (rdma_is_user_pd(pd)) { > dev_err(dev, "not support usr space GSI\n"); > return ERR_PTR(-EINVAL); > } This one looks sensible > diff --git a/drivers/infiniband/hw/i40iw/i40iw_verbs.c b/drivers/infiniband/hw/i40iw/i40iw_verbs.c > index 9d3178d..d60d883 100644 > +++ b/drivers/infiniband/hw/i40iw/i40iw_verbs.c > @@ -2090,7 +2090,7 @@ static int i40iw_dereg_mr(struct ib_mr *ib_mr) > ib_umem_release(iwmr->region); > > if (iwmr->type != IW_MEMREG_TYPE_MEM) { > - if (ibpd->uobject) { > + if (rdma_is_user_pd(ibpd)) { > struct i40iw_ucontext *ucontext; > > ucontext = to_ucontext(ibpd->uobject->context); maybe if (iwmr->umem) ? > diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c > index c783539..af07eb0 100644 > +++ b/drivers/infiniband/hw/mlx4/qp.c > @@ -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 (rdma_is_user_pd(pd)) { > union { > struct mlx4_ib_create_qp qp; > struct mlx4_ib_create_wq wq; if udata (the next lines access udata) > @@ -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, rdma_is_user_pd(pd), > qp_has_rq(init_attr), qp, qp->inl_recv_sz); > if (er > goto err; if udata > @@ -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, rdma_is_user_pd(pd), > qp_has_rq(init_attr), qp, 0); > if (err) > goto err; if udata > @@ -1207,7 +1207,7 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd, > mlx4_buf_free(dev->dev, qp->buf_size, &qp->buf); > > err_db: > - if (!pd->uobject && qp_has_rq(init_attr)) > + if (rdma_is_user_pd(pd) && qp_has_rq(init_attr)) > mlx4_db_free(dev->dev, &qp->db); if udata > err: > @@ -1612,7 +1612,8 @@ 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, > + rdma_is_user_pd(&pd->ibpd)); > } if qp->uobject > if (is_sqp(dev, mqp)) > diff --git a/drivers/infiniband/hw/mlx4/srq.c b/drivers/infiniband/hw/mlx4/srq.c > index 3731b31..b821a08 100644 > +++ b/drivers/infiniband/hw/mlx4/srq.c > @@ -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 (rdma_is_user_pd(pd)) { > struct mlx4_ib_create_srq ucmd; > > if (ib_copy_from_udata(&ucmd, udata, sizeof ucmd)) { if udata > @@ -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 (rdma_is_user_pd(pd)) > if (ib_copy_to_udata(udata, &srq->msrq.srqn, sizeof (__u32))) { > err = -EFAULT; > goto err_wrid; if udata > @@ -202,7 +202,7 @@ struct ib_srq *mlx4_ib_create_srq(struct ib_pd *pd, > return &srq->ibsrq; > > err_wrid: > - if (pd->uobject) > + if (rdma_is_user_pd(pd)) > mlx4_ib_db_unmap_user(to_mucontext(pd->uobject->context), &srq->db); > else > kvfree(srq->wrid); if srq->uobject > @@ -211,13 +211,13 @@ struct ib_srq *mlx4_ib_create_srq(struct ib_pd *pd, > mlx4_mtt_cleanup(dev->dev, &srq->mtt); > > err_buf: > - if (pd->uobject) > + if (rdma_is_user_pd(pd)) > ib_umem_release(srq->umem); > else > mlx4_buf_free(dev->dev, buf_size, &srq->buf); if srq->uobject? srq->umem? > err_db: > - if (!pd->uobject) > + if (!rdma_is_user_pd(pd)) > mlx4_db_free(dev->dev, &srq->db); if srq->uobject > err_srq: > diff --git a/drivers/infiniband/hw/mlx5/qp.c b/drivers/infiniband/hw/mlx5/qp.c > index 87e1675..c3ad24d 100644 > +++ b/drivers/infiniband/hw/mlx5/qp.c > @@ -1955,7 +1955,7 @@ static int create_qp_common(struct mlx5_ib_dev *dev, struct ib_pd *pd, > } > > if (pd) { > - if (pd->uobject) { > + if (rdma_is_user_pd(pd)) { > __u32 max_wqes = > 1 << MLX5_CAP_GEN(mdev, log_max_qp_sz); > mlx5_ib_dbg(dev, "requested sq_wqe_count (%d)\n", ucmd.sq_wqe_count); if udata ? > @@ -2465,7 +2465,7 @@ struct ib_qp *mlx5_ib_create_qp(struct ib_pd *pd, > dev = to_mdev(pd->device); > > if (init_attr->qp_type == IB_QPT_RAW_PACKET) { > - if (!pd->uobject) { > + if (!rdma_is_user_pd(pd)) { > mlx5_ib_dbg(dev, "Raw Packet QP is not supported for kernel consumers\n"); > return ERR_PTR(-EINVAL); > } else if (!to_mucontext(pd->uobject->context)->cqe_version) { if udata > diff --git a/drivers/infiniband/hw/mlx5/srq.c b/drivers/infiniband/hw/mlx5/srq.c > index d012e7d..c5eb189 100644 > +++ b/drivers/infiniband/hw/mlx5/srq.c > @@ -287,14 +287,14 @@ struct ib_srq *mlx5_ib_create_srq(struct ib_pd *pd, > } > in.type = init_attr->srq_type; > > - if (pd->uobject) > + if (rdma_is_user_pd(pd)) > err = create_srq_user(pd, srq, &in, udata, buf_size); > else > err = create_srq_kernel(dev, srq, &in, buf_size); if udata > if (err) { > mlx5_ib_warn(dev, "create srq %s failed, err %d\n", > - pd->uobject ? "user" : "kernel", err); > + rdma_is_user_pd(pd) ? "user" : "kernel", err); > goto err_srq; > } if udata > @@ -339,7 +339,7 @@ struct ib_srq *mlx5_ib_create_srq(struct ib_pd *pd, > srq->msrq.event = mlx5_ib_srq_event; > srq->ibsrq.ext.xrc.srq_num = srq->msrq.srqn; > > - if (pd->uobject) > + if (rdma_is_user_pd(pd)) > if (ib_copy_to_udata(udata, &srq->msrq.srqn, sizeof(__u32))) { > mlx5_ib_dbg(dev, "copy to user failed\n"); > err = -EFAULT; if udata > @@ -354,7 +354,7 @@ struct ib_srq *mlx5_ib_create_srq(struct ib_pd *pd, > mlx5_core_destroy_srq(dev->mdev, &srq->msrq); > > err_usr_kern_srq: > - if (pd->uobject) > + if (rdma_is_user_pd(pd)) > destroy_srq_user(pd, srq); > else > destroy_srq_kernel(dev, srq); if srq->uobject > diff --git a/drivers/infiniband/hw/mthca/mthca_provider.c b/drivers/infiniband/hw/mthca/mthca_provider.c > index 691c6f0..683eaa6 100644 > +++ b/drivers/infiniband/hw/mthca/mthca_provider.c > @@ -455,7 +455,7 @@ static struct ib_srq *mthca_create_srq(struct ib_pd *pd, > if (!srq) > return ERR_PTR(-ENOMEM); > > - if (pd->uobject) { > + if (rdma_is_user_pd(pd)) { > context = to_mucontext(pd->uobject->context); if udata > if (ib_copy_from_udata(&ucmd, udata, sizeof ucmd)) { > @@ -477,7 +477,7 @@ static struct ib_srq *mthca_create_srq(struct ib_pd *pd, > err = mthca_alloc_srq(to_mdev(pd->device), to_mpd(pd), > &init_attr->attr, srq); > > - if (err && pd->uobject) > + if (err && rdma_is_user_pd(pd)) > mthca_unmap_user_db(to_mdev(pd->device), &context->uar, > context->db_tab, ucmd.db_index); if udata > @@ -537,7 +537,7 @@ static struct ib_qp *mthca_create_qp(struct ib_pd *pd, > if (!qp) > return ERR_PTR(-ENOMEM); > > - if (pd->uobject) { > + if (rdma_is_user_pd(pd)) { > context = to_mucontext(pd->uobject->context); > > if (ib_copy_from_udata(&ucmd, udata, sizeof > ucmd)) { if udata > @@ -576,7 +576,7 @@ static struct ib_qp *mthca_create_qp(struct ib_pd *pd, > init_attr->qp_type, init_attr->sq_sig_type, > &init_attr->cap, qp); > > - if (err && pd->uobject) { > + if (err && rdma_is_user_pd(pd)) { > context = to_mucontext(pd->uobject->context); > > mthca_unmap_user_db(to_mdev(pd->device), if udata > @@ -596,7 +596,7 @@ static struct ib_qp *mthca_create_qp(struct ib_pd *pd, > case IB_QPT_GSI: > { > /* Don't allow userspace to create special QPs */ > - if (pd->uobject) > + if (rdma_is_user_pd(pd)) > return ERR_PTR(-EINVAL); > > qp = kmalloc(sizeof (struct mthca_sqp), GFP_KERNEL); Fine > diff --git a/drivers/infiniband/hw/mthca/mthca_qp.c b/drivers/infiniband/hw/mthca/mthca_qp.c > index 9d178ee..ffa4526 100644 > +++ b/drivers/infiniband/hw/mthca/mthca_qp.c > @@ -951,7 +951,8 @@ static int mthca_max_data_size(struct mthca_dev *dev, struct mthca_qp *qp, int d > static inline int mthca_max_inline_data(struct mthca_pd *pd, int max_data_size) > { > /* We don't support inline data for kernel QPs (yet). */ > - return pd->ibpd.uobject ? max_data_size - MTHCA_INLINE_HEADER_SIZE : 0; > + return rdma_is_user_pd(&pd->ibpd) ? > + max_data_size - MTHCA_INLINE_HEADER_SIZE : 0; > } Sigh, fine, that is annoying to fix > static void mthca_adjust_qp_caps(struct mthca_dev *dev, > @@ -1048,7 +1049,7 @@ static int mthca_alloc_wqe_buf(struct mthca_dev *dev, > * allocate anything. All we need is to calculate the WQE > * sizes and the send_wqe_offset, so we're done now. > */ > - if (pd->ibpd.uobject) > + if (rdma_is_user_pd(&pd->ibpd)) > return 0; should be udata, but fine :\ > size = PAGE_ALIGN(qp->send_wqe_offset + > @@ -1191,7 +1192,7 @@ static int mthca_alloc_qp_common(struct mthca_dev *dev, > * will be allocated and buffers will be initialized in > * userspace. > */ > - if (pd->ibpd.uobject) > + if (rdma_is_user_pd(&pd->ibpd)) > return 0; Same > ret = mthca_alloc_memfree(dev, qp); > diff --git a/drivers/infiniband/hw/mthca/mthca_srq.c b/drivers/infiniband/hw/mthca/mthca_srq.c > index 9a3fc6f..4e206d4 100644 > +++ b/drivers/infiniband/hw/mthca/mthca_srq.c > @@ -152,7 +152,7 @@ static int mthca_alloc_srq_buf(struct mthca_dev *dev, struct mthca_pd *pd, > int err; > int i; > > - if (pd->ibpd.uobject) > + if (rdma_is_user_pd(&pd->ibpd)) > return 0; Same > srq->wrid = kmalloc_array(srq->max, sizeof(u64), GFP_KERNEL); > @@ -235,7 +235,7 @@ int mthca_alloc_srq(struct mthca_dev *dev, struct mthca_pd *pd, > if (err) > goto err_out; > > - if (!pd->ibpd.uobject) { > + if (!rdma_is_user_pd(&pd->ibpd)) { > srq->db_index = mthca_alloc_db(dev, MTHCA_DB_TYPE_SRQ, > srq->srqn, &srq->db); > if (srq->db_index < 0) { Same > @@ -297,14 +297,14 @@ int mthca_alloc_srq(struct mthca_dev *dev, struct mthca_pd *pd, > mthca_warn(dev, "HW2SW_SRQ failed (%d)\n", err); > > err_out_free_buf: > - if (!pd->ibpd.uobject) > + if (!rdma_is_user_pd(&pd->ibpd)) > mthca_free_srq_buf(dev, srq); > > err_out_mailbox: > mthca_free_mailbox(dev, mailbox); > > err_out_db: > - if (!pd->ibpd.uobject && mthca_is_memfree(dev)) > + if (!rdma_is_user_pd(&pd->ibpd) && mthca_is_memfree(dev)) > mthca_free_db(dev, MTHCA_DB_TYPE_SRQ, srq->db_index); > > err_out_icm: Same > diff --git a/drivers/infiniband/hw/nes/nes_verbs.c b/drivers/infiniband/hw/nes/nes_verbs.c > index 92d1cad..fc0100c 100644 > +++ b/drivers/infiniband/hw/nes/nes_verbs.c > @@ -733,7 +733,7 @@ static int nes_dealloc_pd(struct ib_pd *ibpd) > struct nes_device *nesdev = nesvnic->nesdev; > struct nes_adapter *nesadapter = nesdev->nesadapter; > > - if ((ibpd->uobject) && (ibpd->uobject->context)) { > + if (rdma_is_user_pd(ibpd) && (ibpd->uobject->context)) { > nesucontext = to_nesucontext(ibpd->uobject->context); > nes_debug(NES_DBG_PD, "Clearing bit %u from allocated doorbells\n", > nespd->mmap_db_index); Fine > @@ -1066,7 +1066,8 @@ static struct ib_qp *nes_create_qp(struct ib_pd *ibpd, > } > if (req.user_qp_buffer) > nesqp->nesuqp_addr = req.user_qp_buffer; > - if ((ibpd->uobject) && (ibpd->uobject->context)) { > + if (rdma_is_user_pd(ibpd) && > + (ibpd->uobject->context)) { > nesqp->user_mode = 1; > nes_ucontext = to_nesucontext(ibpd->uobject->context); > if (virt_wqs) { just if udata > @@ -1257,7 +1258,7 @@ static struct ib_qp *nes_create_qp(struct ib_pd *ibpd, > > nes_put_cqp_request(nesdev, cqp_request); > > - if (ibpd->uobject) { > + if (rdma_is_user_pd(ibpd)) { > uresp.mmap_sq_db_index = nesqp->mmap_sq_db_index; > uresp.mmap_rq_db_index = 0; > uresp.actual_sq_size = sq_size; if udata > diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c > index 06d2a7f..d70ebd1 100644 > +++ b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c > @@ -1217,7 +1217,7 @@ static int ocrdma_check_qp_params(struct ib_pd *ibpd, struct ocrdma_dev *dev, > return -EINVAL; > } > /* unprivileged user space cannot create special QP */ > - if (ibpd->uobject && attrs->qp_type == IB_QPT_GSI) { > + if (rdma_is_user_pd(ibpd) && attrs->qp_type == IB_QPT_GSI) { > pr_err > ("%s(%d) Userspace can't create special QPs of type=0x%x\n", > __func__, dev->id, attrs->qp_type); if udata > diff --git a/drivers/infiniband/hw/qedr/verbs.c b/drivers/infiniband/hw/qedr/verbs.c > index 82ee4b4..cf4785a 100644 > +++ b/drivers/infiniband/hw/qedr/verbs.c > @@ -1189,7 +1189,7 @@ static int qedr_check_qp_attrs(struct ib_pd *ibpd, struct qedr_dev *dev, > } > > /* Unprivileged user space cannot create special QP */ > - if (ibpd->uobject && attrs->qp_type == IB_QPT_GSI) { > + if (rdma_is_user_pd(ibpd) && attrs->qp_type == IB_QPT_GSI) { > DP_ERR(dev, > "create qp: userspace can't create special QPs of type=0x%x\n", > attrs->qp_type); if udata > @@ -1552,7 +1552,7 @@ int qedr_destroy_srq(struct ib_srq *ibsrq) > in_params.srq_id = srq->srq_id; > dev->ops->rdma_destroy_srq(dev->rdma_ctx, &in_params); > > - if (ibsrq->pd->uobject) > + if (rdma_is_user_pd(ibsrq->pd)) > qedr_free_srq_user_params(srq); > else > qedr_free_srq_kernel_params(srq); if ibsrq->uobject > diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c > index cf22f57..1a013e2d 100644 > +++ b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c > @@ -249,7 +249,7 @@ struct ib_qp *pvrdma_create_qp(struct ib_pd *pd, > init_completion(&qp->free); > > qp->state = IB_QPS_RESET; > - qp->is_kernel = !(pd->uobject && udata); > + qp->is_kernel = !(rdma_is_user_pd(pd) && udata); > > if (!qp->is_kernel) { > dev_dbg(&dev->pdev->dev, just udata > diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_srq.c b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_srq.c > index dc0ce87..0b290f6 100644 > +++ b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_srq.c > @@ -111,7 +111,7 @@ struct ib_srq *pvrdma_create_srq(struct ib_pd *pd, > unsigned long flags; > int ret; > > - if (!(pd->uobject && udata)) { > + if (!(rdma_is_user_pd(pd) && udata)) { > /* No support for kernel clients. */ > dev_warn(&dev->pdev->dev, > "no shared receive queue support for kernel client\n"); if udata > diff --git a/drivers/infiniband/sw/rxe/rxe_qp.c b/drivers/infiniband/sw/rxe/rxe_qp.c > index b971090..0bceded 100644 > +++ b/drivers/infiniband/sw/rxe/rxe_qp.c > @@ -342,7 +342,8 @@ int rxe_qp_from_init(struct rxe_dev *rxe, struct rxe_qp *qp, struct rxe_pd *pd, > struct rxe_cq *rcq = to_rcq(init->recv_cq); > struct rxe_cq *scq = to_rcq(init->send_cq); > struct rxe_srq *srq = init->srq ? to_rsrq(init->srq) : NULL; > - struct ib_ucontext *context = ibpd->uobject ? ibpd->uobject->context : NULL; > + struct ib_ucontext *context = rdma_is_user_pd(ibpd) ? > + ibpd->uobject->context : NULL; > > rxe_add_ref(pd); > rxe_add_ref(rcq); Should be udata, need to pass udata. Jason