xrcd              241 drivers/infiniband/core/uverbs.h int ib_uverbs_dealloc_xrcd(struct ib_uobject *uobject, struct ib_xrcd *xrcd,
xrcd              473 drivers/infiniband/core/uverbs_cmd.c 	struct ib_xrcd *xrcd;
xrcd              479 drivers/infiniband/core/uverbs_cmd.c 			    struct ib_xrcd *xrcd)
xrcd              489 drivers/infiniband/core/uverbs_cmd.c 	entry->xrcd  = xrcd;
xrcd              540 drivers/infiniband/core/uverbs_cmd.c 	return entry->xrcd;
xrcd              562 drivers/infiniband/core/uverbs_cmd.c 	struct ib_xrcd                 *xrcd = NULL;
xrcd              584 drivers/infiniband/core/uverbs_cmd.c 		xrcd = find_xrcd(ibudev, inode);
xrcd              585 drivers/infiniband/core/uverbs_cmd.c 		if (!xrcd && !(cmd.oflags & O_CREAT)) {
xrcd              591 drivers/infiniband/core/uverbs_cmd.c 		if (xrcd && cmd.oflags & O_EXCL) {
xrcd              604 drivers/infiniband/core/uverbs_cmd.c 	if (!xrcd) {
xrcd              605 drivers/infiniband/core/uverbs_cmd.c 		xrcd = ib_dev->ops.alloc_xrcd(ib_dev, &attrs->driver_udata);
xrcd              606 drivers/infiniband/core/uverbs_cmd.c 		if (IS_ERR(xrcd)) {
xrcd              607 drivers/infiniband/core/uverbs_cmd.c 			ret = PTR_ERR(xrcd);
xrcd              611 drivers/infiniband/core/uverbs_cmd.c 		xrcd->inode   = inode;
xrcd              612 drivers/infiniband/core/uverbs_cmd.c 		xrcd->device  = ib_dev;
xrcd              613 drivers/infiniband/core/uverbs_cmd.c 		atomic_set(&xrcd->usecnt, 0);
xrcd              614 drivers/infiniband/core/uverbs_cmd.c 		mutex_init(&xrcd->tgt_qp_mutex);
xrcd              615 drivers/infiniband/core/uverbs_cmd.c 		INIT_LIST_HEAD(&xrcd->tgt_qp_list);
xrcd              620 drivers/infiniband/core/uverbs_cmd.c 	obj->uobject.object = xrcd;
xrcd              627 drivers/infiniband/core/uverbs_cmd.c 			ret = xrcd_table_insert(ibudev, inode, xrcd);
xrcd              631 drivers/infiniband/core/uverbs_cmd.c 		atomic_inc(&xrcd->usecnt);
xrcd              649 drivers/infiniband/core/uverbs_cmd.c 		atomic_dec(&xrcd->usecnt);
xrcd              653 drivers/infiniband/core/uverbs_cmd.c 	ib_dealloc_xrcd(xrcd, uverbs_get_cleared_udata(attrs));
xrcd              679 drivers/infiniband/core/uverbs_cmd.c int ib_uverbs_dealloc_xrcd(struct ib_uobject *uobject, struct ib_xrcd *xrcd,
xrcd              687 drivers/infiniband/core/uverbs_cmd.c 	inode = xrcd->inode;
xrcd              688 drivers/infiniband/core/uverbs_cmd.c 	if (inode && !atomic_dec_and_test(&xrcd->usecnt))
xrcd              691 drivers/infiniband/core/uverbs_cmd.c 	ret = ib_dealloc_xrcd(xrcd, &attrs->driver_udata);
xrcd              694 drivers/infiniband/core/uverbs_cmd.c 		atomic_inc(&xrcd->usecnt);
xrcd             1275 drivers/infiniband/core/uverbs_cmd.c 	struct ib_xrcd			*xrcd = NULL;
xrcd             1327 drivers/infiniband/core/uverbs_cmd.c 		xrcd = (struct ib_xrcd *)xrcd_uobj->object;
xrcd             1328 drivers/infiniband/core/uverbs_cmd.c 		if (!xrcd) {
xrcd             1332 drivers/infiniband/core/uverbs_cmd.c 		device = xrcd->device;
xrcd             1380 drivers/infiniband/core/uverbs_cmd.c 	attr.xrcd	   = xrcd;
xrcd             1464 drivers/infiniband/core/uverbs_cmd.c 	if (xrcd) {
xrcd             1555 drivers/infiniband/core/uverbs_cmd.c 	struct ib_xrcd		       *xrcd;
xrcd             1577 drivers/infiniband/core/uverbs_cmd.c 	xrcd = (struct ib_xrcd *)xrcd_uobj->object;
xrcd             1578 drivers/infiniband/core/uverbs_cmd.c 	if (!xrcd) {
xrcd             1592 drivers/infiniband/core/uverbs_cmd.c 	qp = ib_open_qp(xrcd, &attr);
xrcd             3381 drivers/infiniband/core/uverbs_cmd.c 		attr.ext.xrc.xrcd = (struct ib_xrcd *)xrcd_uobj->object;
xrcd             3382 drivers/infiniband/core/uverbs_cmd.c 		if (!attr.ext.xrc.xrcd) {
xrcd             3439 drivers/infiniband/core/uverbs_cmd.c 		srq->ext.xrc.xrcd = attr.ext.xrc.xrcd;
xrcd             3440 drivers/infiniband/core/uverbs_cmd.c 		atomic_inc(&attr.ext.xrc.xrcd->usecnt);
xrcd              174 drivers/infiniband/core/uverbs_std_types.c 	struct ib_xrcd *xrcd = uobject->object;
xrcd              184 drivers/infiniband/core/uverbs_std_types.c 	ret = ib_uverbs_dealloc_xrcd(uobject, xrcd, why, attrs);
xrcd              991 drivers/infiniband/core/verbs.c 		srq->ext.xrc.xrcd = srq_init_attr->ext.xrc.xrcd;
xrcd              992 drivers/infiniband/core/verbs.c 		atomic_inc(&srq->ext.xrc.xrcd->usecnt);
xrcd             1000 drivers/infiniband/core/verbs.c 			atomic_dec(&srq->ext.xrc.xrcd->usecnt);
xrcd             1038 drivers/infiniband/core/verbs.c 		atomic_dec(&srq->ext.xrc.xrcd->usecnt);
xrcd             1061 drivers/infiniband/core/verbs.c static void __ib_insert_xrcd_qp(struct ib_xrcd *xrcd, struct ib_qp *qp)
xrcd             1063 drivers/infiniband/core/verbs.c 	mutex_lock(&xrcd->tgt_qp_mutex);
xrcd             1064 drivers/infiniband/core/verbs.c 	list_add(&qp->xrcd_list, &xrcd->tgt_qp_list);
xrcd             1065 drivers/infiniband/core/verbs.c 	mutex_unlock(&xrcd->tgt_qp_mutex);
xrcd             1102 drivers/infiniband/core/verbs.c struct ib_qp *ib_open_qp(struct ib_xrcd *xrcd,
xrcd             1111 drivers/infiniband/core/verbs.c 	mutex_lock(&xrcd->tgt_qp_mutex);
xrcd             1112 drivers/infiniband/core/verbs.c 	list_for_each_entry(real_qp, &xrcd->tgt_qp_list, xrcd_list) {
xrcd             1119 drivers/infiniband/core/verbs.c 	mutex_unlock(&xrcd->tgt_qp_mutex);
xrcd             1135 drivers/infiniband/core/verbs.c 	qp->xrcd = qp_init_attr->xrcd;
xrcd             1136 drivers/infiniband/core/verbs.c 	atomic_inc(&qp_init_attr->xrcd->usecnt);
xrcd             1144 drivers/infiniband/core/verbs.c 	__ib_insert_xrcd_qp(qp_init_attr->xrcd, real_qp);
xrcd             1152 drivers/infiniband/core/verbs.c 	struct ib_device *device = pd ? pd->device : qp_init_attr->xrcd->device;
xrcd             1209 drivers/infiniband/core/verbs.c 	qp->xrcd    = NULL;
xrcd             1830 drivers/infiniband/core/verbs.c 	struct ib_xrcd *xrcd;
xrcd             1835 drivers/infiniband/core/verbs.c 	xrcd = real_qp->xrcd;
xrcd             1837 drivers/infiniband/core/verbs.c 	mutex_lock(&xrcd->tgt_qp_mutex);
xrcd             1843 drivers/infiniband/core/verbs.c 	mutex_unlock(&xrcd->tgt_qp_mutex);
xrcd             1848 drivers/infiniband/core/verbs.c 			atomic_dec(&xrcd->usecnt);
xrcd             1850 drivers/infiniband/core/verbs.c 			__ib_insert_xrcd_qp(xrcd, real_qp);
xrcd             2221 drivers/infiniband/core/verbs.c 	struct ib_xrcd *xrcd;
xrcd             2226 drivers/infiniband/core/verbs.c 	xrcd = device->ops.alloc_xrcd(device, NULL);
xrcd             2227 drivers/infiniband/core/verbs.c 	if (!IS_ERR(xrcd)) {
xrcd             2228 drivers/infiniband/core/verbs.c 		xrcd->device = device;
xrcd             2229 drivers/infiniband/core/verbs.c 		xrcd->inode = NULL;
xrcd             2230 drivers/infiniband/core/verbs.c 		atomic_set(&xrcd->usecnt, 0);
xrcd             2231 drivers/infiniband/core/verbs.c 		mutex_init(&xrcd->tgt_qp_mutex);
xrcd             2232 drivers/infiniband/core/verbs.c 		INIT_LIST_HEAD(&xrcd->tgt_qp_list);
xrcd             2235 drivers/infiniband/core/verbs.c 	return xrcd;
xrcd             2239 drivers/infiniband/core/verbs.c int ib_dealloc_xrcd(struct ib_xrcd *xrcd, struct ib_udata *udata)
xrcd             2244 drivers/infiniband/core/verbs.c 	if (atomic_read(&xrcd->usecnt))
xrcd             2247 drivers/infiniband/core/verbs.c 	while (!list_empty(&xrcd->tgt_qp_list)) {
xrcd             2248 drivers/infiniband/core/verbs.c 		qp = list_entry(xrcd->tgt_qp_list.next, struct ib_qp, xrcd_list);
xrcd             2253 drivers/infiniband/core/verbs.c 	mutex_destroy(&xrcd->tgt_qp_mutex);
xrcd             2255 drivers/infiniband/core/verbs.c 	return xrcd->device->ops.dealloc_xrcd(xrcd, udata);
xrcd              982 drivers/infiniband/hw/hns/hns_roce_device.h 			   struct hns_roce_srq *srq, u32 pdn, u16 xrcd, u32 cqn,
xrcd             6028 drivers/infiniband/hw/hns/hns_roce_hw_v2.c 				   struct hns_roce_srq *srq, u32 pdn, u16 xrcd,
xrcd             6057 drivers/infiniband/hw/hns/hns_roce_hw_v2.c 		       SRQC_BYTE_12_SRQ_XRCD_S, xrcd);
xrcd               81 drivers/infiniband/hw/hns/hns_roce_srq.c 			      u16 xrcd, struct hns_roce_mtt *hr_mtt,
xrcd              133 drivers/infiniband/hw/hns/hns_roce_srq.c 	hr_dev->hw->write_srqc(hr_dev, srq, pdn, xrcd, cqn, mailbox->buf,
xrcd             1219 drivers/infiniband/hw/mlx4/main.c 	struct mlx4_ib_xrcd *xrcd;
xrcd             1226 drivers/infiniband/hw/mlx4/main.c 	xrcd = kmalloc(sizeof *xrcd, GFP_KERNEL);
xrcd             1227 drivers/infiniband/hw/mlx4/main.c 	if (!xrcd)
xrcd             1230 drivers/infiniband/hw/mlx4/main.c 	err = mlx4_xrcd_alloc(to_mdev(ibdev)->dev, &xrcd->xrcdn);
xrcd             1234 drivers/infiniband/hw/mlx4/main.c 	xrcd->pd = ib_alloc_pd(ibdev, 0);
xrcd             1235 drivers/infiniband/hw/mlx4/main.c 	if (IS_ERR(xrcd->pd)) {
xrcd             1236 drivers/infiniband/hw/mlx4/main.c 		err = PTR_ERR(xrcd->pd);
xrcd             1241 drivers/infiniband/hw/mlx4/main.c 	xrcd->cq = ib_create_cq(ibdev, NULL, NULL, xrcd, &cq_attr);
xrcd             1242 drivers/infiniband/hw/mlx4/main.c 	if (IS_ERR(xrcd->cq)) {
xrcd             1243 drivers/infiniband/hw/mlx4/main.c 		err = PTR_ERR(xrcd->cq);
xrcd             1247 drivers/infiniband/hw/mlx4/main.c 	return &xrcd->ibxrcd;
xrcd             1250 drivers/infiniband/hw/mlx4/main.c 	ib_dealloc_pd(xrcd->pd);
xrcd             1252 drivers/infiniband/hw/mlx4/main.c 	mlx4_xrcd_free(to_mdev(ibdev)->dev, xrcd->xrcdn);
xrcd             1254 drivers/infiniband/hw/mlx4/main.c 	kfree(xrcd);
xrcd             1258 drivers/infiniband/hw/mlx4/main.c static int mlx4_ib_dealloc_xrcd(struct ib_xrcd *xrcd, struct ib_udata *udata)
xrcd             1260 drivers/infiniband/hw/mlx4/main.c 	ib_destroy_cq(to_mxrcd(xrcd)->cq);
xrcd             1261 drivers/infiniband/hw/mlx4/main.c 	ib_dealloc_pd(to_mxrcd(xrcd)->pd);
xrcd             1262 drivers/infiniband/hw/mlx4/main.c 	mlx4_xrcd_free(to_mdev(xrcd->device)->dev, to_mxrcd(xrcd)->xrcdn);
xrcd             1263 drivers/infiniband/hw/mlx4/main.c 	kfree(xrcd);
xrcd             1360 drivers/infiniband/hw/mlx4/qp.c 		return to_mpd(to_mxrcd(qp->ibqp.xrcd)->pd);
xrcd             1370 drivers/infiniband/hw/mlx4/qp.c 		*send_cq = to_mcq(to_mxrcd(qp->ibqp.xrcd)->cq);
xrcd             1578 drivers/infiniband/hw/mlx4/qp.c 		pd = to_mxrcd(init_attr->xrcd)->pd;
xrcd             1579 drivers/infiniband/hw/mlx4/qp.c 		xrcdn = to_mxrcd(init_attr->xrcd)->xrcdn;
xrcd             1580 drivers/infiniband/hw/mlx4/qp.c 		init_attr->send_cq = to_mxrcd(init_attr->xrcd)->cq;
xrcd             1648 drivers/infiniband/hw/mlx4/qp.c 	struct ib_device *device = pd ? pd->device : init_attr->xrcd->device;
xrcd             2247 drivers/infiniband/hw/mlx4/qp.c 		context->xrcd = cpu_to_be32((u32) qp->xrcdn);
xrcd              177 drivers/infiniband/hw/mlx4/srq.c 		to_mxrcd(init_attr->ext.xrc.xrcd)->xrcdn :
xrcd              317 drivers/infiniband/hw/mlx5/cmd.c 		*xrcdn = MLX5_GET(alloc_xrcd_out, out, xrcd);
xrcd              327 drivers/infiniband/hw/mlx5/cmd.c 	MLX5_SET(dealloc_xrcd_in, in, xrcd, xrcdn);
xrcd              177 drivers/infiniband/hw/mlx5/cq.c 	if (qp->ibqp.srq || qp->ibqp.xrcd) {
xrcd              180 drivers/infiniband/hw/mlx5/cq.c 		if (qp->ibqp.xrcd) {
xrcd             4993 drivers/infiniband/hw/mlx5/main.c 	attr.ext.xrc.xrcd = devr->x0;
xrcd             5004 drivers/infiniband/hw/mlx5/main.c 	devr->s0->ext.xrc.xrcd	= devr->x0;
xrcd             5010 drivers/infiniband/hw/mlx5/main.c 	atomic_inc(&devr->s0->ext.xrc.xrcd->usecnt);
xrcd             1188 drivers/infiniband/hw/mlx5/mlx5_ib.h int mlx5_ib_dealloc_xrcd(struct ib_xrcd *xrcd, struct ib_udata *udata);
xrcd             2226 drivers/infiniband/hw/mlx5/qp.c 		MLX5_SET(qpc, qpc, xrcd, to_mxrcd(init_attr->xrcd)->xrcdn);
xrcd             2230 drivers/infiniband/hw/mlx5/qp.c 		MLX5_SET(qpc, qpc, xrcd, to_mxrcd(devr->x1)->xrcdn);
xrcd             2235 drivers/infiniband/hw/mlx5/qp.c 			MLX5_SET(qpc, qpc, xrcd, to_mxrcd(devr->x0)->xrcdn);
xrcd             2238 drivers/infiniband/hw/mlx5/qp.c 			MLX5_SET(qpc, qpc, xrcd, to_mxrcd(devr->x1)->xrcdn);
xrcd             2660 drivers/infiniband/hw/mlx5/qp.c 		dev = to_mdev(to_mxrcd(init_attr->xrcd)->ibxrcd.device);
xrcd             2692 drivers/infiniband/hw/mlx5/qp.c 			xrcdn = to_mxrcd(init_attr->xrcd)->xrcdn;
xrcd             5842 drivers/infiniband/hw/mlx5/qp.c 	struct mlx5_ib_xrcd *xrcd;
xrcd             5848 drivers/infiniband/hw/mlx5/qp.c 	xrcd = kmalloc(sizeof(*xrcd), GFP_KERNEL);
xrcd             5849 drivers/infiniband/hw/mlx5/qp.c 	if (!xrcd)
xrcd             5852 drivers/infiniband/hw/mlx5/qp.c 	err = mlx5_cmd_xrcd_alloc(dev->mdev, &xrcd->xrcdn, 0);
xrcd             5854 drivers/infiniband/hw/mlx5/qp.c 		kfree(xrcd);
xrcd             5858 drivers/infiniband/hw/mlx5/qp.c 	return &xrcd->ibxrcd;
xrcd             5861 drivers/infiniband/hw/mlx5/qp.c int mlx5_ib_dealloc_xrcd(struct ib_xrcd *xrcd, struct ib_udata *udata)
xrcd             5863 drivers/infiniband/hw/mlx5/qp.c 	struct mlx5_ib_dev *dev = to_mdev(xrcd->device);
xrcd             5864 drivers/infiniband/hw/mlx5/qp.c 	u32 xrcdn = to_mxrcd(xrcd)->xrcdn;
xrcd             5871 drivers/infiniband/hw/mlx5/qp.c 	kfree(xrcd);
xrcd              278 drivers/infiniband/hw/mlx5/srq.c 		in.xrcd = to_mxrcd(init_attr->ext.xrc.xrcd)->xrcdn;
xrcd              280 drivers/infiniband/hw/mlx5/srq.c 		in.xrcd = to_mxrcd(dev->devr.x0)->xrcdn;
xrcd               23 drivers/infiniband/hw/mlx5/srq.h 	u32 xrcd;
xrcd               51 drivers/infiniband/hw/mlx5/srq_cmd.c 	MLX5_SET(srqc,	 srqc, xrcd,	      in->xrcd);
xrcd              992 drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c 	init_attr->xrcd = NULL;
xrcd              367 drivers/net/ethernet/mellanox/mlx4/mlx4.h 	__be16			xrcd;
xrcd             5223 drivers/net/ethernet/mellanox/mlx4/resource_tracker.c 	struct res_xrcdn *xrcd;
xrcd             5234 drivers/net/ethernet/mellanox/mlx4/resource_tracker.c 	list_for_each_entry_safe(xrcd, tmp, xrcdn_list, com.list) {
xrcd             5235 drivers/net/ethernet/mellanox/mlx4/resource_tracker.c 		if (xrcd->com.owner == slave) {
xrcd             5236 drivers/net/ethernet/mellanox/mlx4/resource_tracker.c 			xrcdn = xrcd->com.res_id;
xrcd             5237 drivers/net/ethernet/mellanox/mlx4/resource_tracker.c 			rb_erase(&xrcd->com.node, &tracker->res_tree[RES_XRCD]);
xrcd             5238 drivers/net/ethernet/mellanox/mlx4/resource_tracker.c 			list_del(&xrcd->com.list);
xrcd             5239 drivers/net/ethernet/mellanox/mlx4/resource_tracker.c 			kfree(xrcd);
xrcd              162 drivers/net/ethernet/mellanox/mlx4/srq.c int mlx4_srq_alloc(struct mlx4_dev *dev, u32 pdn, u32 cqn, u16 xrcd,
xrcd              191 drivers/net/ethernet/mellanox/mlx4/srq.c 	srq_context->xrcd		= cpu_to_be16(xrcd);
xrcd              579 drivers/net/ethernet/mellanox/mlx5/core/qp.c 		*xrcdn = MLX5_GET(alloc_xrcd_out, out, xrcd);
xrcd              590 drivers/net/ethernet/mellanox/mlx5/core/qp.c 	MLX5_SET(dealloc_xrcd_in, in, xrcd, xrcdn);
xrcd              848 include/linux/mlx4/device.h 	int xrcd;
xrcd              214 include/linux/mlx4/qp.h 	__be32			xrcd;
xrcd             2688 include/linux/mlx5/mlx5_ifc.h 	u8         xrcd[0x18];
xrcd             2839 include/linux/mlx5/mlx5_ifc.h 	u8         xrcd[0x18];
xrcd             2998 include/linux/mlx5/mlx5_ifc.h 	u8         xrcd[0x18];
xrcd             7087 include/linux/mlx5/mlx5_ifc.h 	u8         xrcd[0x18];
xrcd             7919 include/linux/mlx5/mlx5_ifc.h 	u8         xrcd[0x18];
xrcd              536 include/linux/mlx5/qp.h 	__be32			xrcd;
xrcd             1034 include/rdma/ib_verbs.h 				struct ib_xrcd *xrcd;
xrcd             1130 include/rdma/ib_verbs.h 	struct ib_xrcd	       *xrcd;     /* XRC TGT QPs only */
xrcd             1577 include/rdma/ib_verbs.h 				struct ib_xrcd *xrcd;
xrcd             1721 include/rdma/ib_verbs.h 	struct ib_xrcd	       *xrcd; /* XRC TGT QPs only */
xrcd             2430 include/rdma/ib_verbs.h 	int (*dealloc_xrcd)(struct ib_xrcd *xrcd, struct ib_udata *udata);
xrcd             3672 include/rdma/ib_verbs.h struct ib_qp *ib_open_qp(struct ib_xrcd *xrcd,
xrcd             4246 include/rdma/ib_verbs.h int ib_dealloc_xrcd(struct ib_xrcd *xrcd, struct ib_udata *udata);