__be64 *pas;
        void *qpc;
        int err;
+       u16 uid;
 
        err = ib_copy_from_udata(&ucmd, udata, sizeof(ucmd));
        if (err) {
                goto err_umem;
        }
 
-       MLX5_SET(create_qp_in, *in, uid, to_mpd(pd)->uid);
+       uid = (attr->qp_type != IB_QPT_XRC_TGT) ? to_mpd(pd)->uid : 0;
+       MLX5_SET(create_qp_in, *in, uid, uid);
        pas = (__be64 *)MLX5_ADDR_OF(create_qp_in, *in, pas);
        if (ubuffer->umem)
                mlx5_ib_populate_pas(dev, ubuffer->umem, page_shift, pas, 0);
        struct mlx5_ib_dev *dev = to_mdev(ibdev);
        struct mlx5_ib_xrcd *xrcd;
        int err;
-       u16 uid;
 
        if (!MLX5_CAP_GEN(dev->mdev, xrc))
                return ERR_PTR(-ENOSYS);
        if (!xrcd)
                return ERR_PTR(-ENOMEM);
 
-       uid = context ? to_mucontext(context)->devx_uid : 0;
-       err = mlx5_cmd_xrcd_alloc(dev->mdev, &xrcd->xrcdn, uid);
+       err = mlx5_cmd_xrcd_alloc(dev->mdev, &xrcd->xrcdn, 0);
        if (err) {
                kfree(xrcd);
                return ERR_PTR(-ENOMEM);
        }
 
-       xrcd->uid = uid;
        return &xrcd->ibxrcd;
 }
 
 {
        struct mlx5_ib_dev *dev = to_mdev(xrcd->device);
        u32 xrcdn = to_mxrcd(xrcd)->xrcdn;
-       u16 uid =  to_mxrcd(xrcd)->uid;
        int err;
 
-       err = mlx5_cmd_xrcd_dealloc(dev->mdev, xrcdn, uid);
+       err = mlx5_cmd_xrcd_dealloc(dev->mdev, xrcdn, 0);
        if (err)
                mlx5_ib_warn(dev, "failed to dealloc xrcdn 0x%x\n", xrcdn);
 
 
 
        in->log_page_size = page_shift - MLX5_ADAPTER_PAGE_SHIFT;
        in->page_offset = offset;
-       in->uid = to_mpd(pd)->uid;
+       in->uid = (in->type != IB_SRQT_XRC) ?  to_mpd(pd)->uid : 0;
        if (MLX5_CAP_GEN(dev->mdev, cqe_version) == MLX5_CQE_VERSION_V1 &&
            in->type != IB_SRQT_BASIC)
                in->user_index = uidx;