CC: [email protected]
CC: [email protected]
TO: Leon Romanovsky <[email protected]>
CC: Jason Gunthorpe <[email protected]>
CC: Maor Gottlieb <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   e9f1cbc0c4114880090c7a578117d3b9cf184ad4
commit: 8fd3cd2ae5a09ca1caed4b3990e084cb95bf55af RDMA/mlx4: Prepare QP 
allocation to remove from the driver
date:   9 months ago
:::::: branch date: 11 hours ago
:::::: commit date: 9 months ago
config: ia64-randconfig-m031-20210707 (attached as .config)
compiler: ia64-linux-gcc (GCC) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

New smatch warnings:
drivers/infiniband/hw/mlx4/qp.c:1176 create_qp_common() error: uninitialized 
symbol 'qpn'.

Old smatch warnings:
drivers/infiniband/hw/mlx4/qp.c:1103 create_qp_common() warn: missing error 
code 'err'
drivers/infiniband/hw/mlx4/qp.c:2531 __mlx4_ib_modify_qp() warn: Function too 
hairy.  No more merges.
drivers/infiniband/hw/mlx4/qp.c:3747 _mlx4_ib_post_send() error: uninitialized 
symbol 'lso_hdr_sz'.
drivers/infiniband/hw/mlx4/qp.c:4254 mlx4_ib_modify_wq() warn: unsigned 
'cur_state' is never less than zero.

vim +/qpn +1176 drivers/infiniband/hw/mlx4/qp.c

089b645d19b2de Leon Romanovsky    2019-07-04   951  
089b645d19b2de Leon Romanovsky    2019-07-04   952  static int 
create_qp_common(struct ib_pd *pd, struct ib_qp_init_attr *init_attr,
8900b894e769dd Leon Romanovsky    2017-05-23   953                          
struct ib_udata *udata, int sqpn,
8fd3cd2ae5a09c Leon Romanovsky    2020-09-26   954                          
struct mlx4_ib_qp *qp)
225c7b1feef1b4 Roland Dreier      2007-05-08   955  {
089b645d19b2de Leon Romanovsky    2019-07-04   956      struct mlx4_ib_dev *dev 
= to_mdev(pd->device);
a3cdcbfa8fb1fc Yevgeny Petrilin   2008-10-10   957      int qpn;
225c7b1feef1b4 Roland Dreier      2007-05-08   958      int err;
89944450547334 Shamir Rabinovitch 2019-02-07   959      struct mlx4_ib_ucontext 
*context = rdma_udata_to_drv_context(
89944450547334 Shamir Rabinovitch 2019-02-07   960              udata, struct 
mlx4_ib_ucontext, ibucontext);
1ffeb2eb8be993 Jack Morgenstein   2012-08-03   961      enum mlx4_ib_qp_type 
qp_type = (enum mlx4_ib_qp_type) init_attr->qp_type;
35f05dabf95ac3 Yishai Hadas       2015-02-08   962      struct mlx4_ib_cq *mcq;
35f05dabf95ac3 Yishai Hadas       2015-02-08   963      unsigned long flags;
1ffeb2eb8be993 Jack Morgenstein   2012-08-03   964  
1ffeb2eb8be993 Jack Morgenstein   2012-08-03   965      /* When tunneling 
special qps, we use a plain UD qp */
1ffeb2eb8be993 Jack Morgenstein   2012-08-03   966      if (sqpn) {
1ffeb2eb8be993 Jack Morgenstein   2012-08-03   967              if 
(mlx4_is_mfunc(dev->dev) &&
1ffeb2eb8be993 Jack Morgenstein   2012-08-03   968                  
(!mlx4_is_master(dev->dev) ||
1ffeb2eb8be993 Jack Morgenstein   2012-08-03   969                   
!(init_attr->create_flags & MLX4_IB_SRIOV_SQP))) {
1ffeb2eb8be993 Jack Morgenstein   2012-08-03   970                      if 
(init_attr->qp_type == IB_QPT_GSI)
1ffeb2eb8be993 Jack Morgenstein   2012-08-03   971                              
qp_type = MLX4_IB_QPT_PROXY_GSI;
99ec41d0a48cb6 Jack Morgenstein   2014-05-29   972                      else {
99ec41d0a48cb6 Jack Morgenstein   2014-05-29   973                              
if (mlx4_is_master(dev->dev) ||
99ec41d0a48cb6 Jack Morgenstein   2014-05-29   974                              
    qp0_enabled_vf(dev->dev, sqpn))
1ffeb2eb8be993 Jack Morgenstein   2012-08-03   975                              
        qp_type = MLX4_IB_QPT_PROXY_SMI_OWNER;
1ffeb2eb8be993 Jack Morgenstein   2012-08-03   976                              
else
1ffeb2eb8be993 Jack Morgenstein   2012-08-03   977                              
        qp_type = MLX4_IB_QPT_PROXY_SMI;
1ffeb2eb8be993 Jack Morgenstein   2012-08-03   978                      }
99ec41d0a48cb6 Jack Morgenstein   2014-05-29   979              }
1ffeb2eb8be993 Jack Morgenstein   2012-08-03   980              qpn = sqpn;
1ffeb2eb8be993 Jack Morgenstein   2012-08-03   981              /* add extra sg 
entry for tunneling */
1ffeb2eb8be993 Jack Morgenstein   2012-08-03   982              
init_attr->cap.max_recv_sge++;
1ffeb2eb8be993 Jack Morgenstein   2012-08-03   983      } else if 
(init_attr->create_flags & MLX4_IB_SRIOV_TUNNEL_QP) {
1ffeb2eb8be993 Jack Morgenstein   2012-08-03   984              struct 
mlx4_ib_qp_tunnel_init_attr *tnl_init =
1ffeb2eb8be993 Jack Morgenstein   2012-08-03   985                      
container_of(init_attr,
1ffeb2eb8be993 Jack Morgenstein   2012-08-03   986                              
     struct mlx4_ib_qp_tunnel_init_attr, init_attr);
1ffeb2eb8be993 Jack Morgenstein   2012-08-03   987              if 
((tnl_init->proxy_qp_type != IB_QPT_SMI &&
1ffeb2eb8be993 Jack Morgenstein   2012-08-03   988                   
tnl_init->proxy_qp_type != IB_QPT_GSI)   ||
1ffeb2eb8be993 Jack Morgenstein   2012-08-03   989                  
!mlx4_is_master(dev->dev))
1ffeb2eb8be993 Jack Morgenstein   2012-08-03   990                      return 
-EINVAL;
1ffeb2eb8be993 Jack Morgenstein   2012-08-03   991              if 
(tnl_init->proxy_qp_type == IB_QPT_GSI)
1ffeb2eb8be993 Jack Morgenstein   2012-08-03   992                      qp_type 
= MLX4_IB_QPT_TUN_GSI;
99ec41d0a48cb6 Jack Morgenstein   2014-05-29   993              else if 
(tnl_init->slave == mlx4_master_func_num(dev->dev) ||
99ec41d0a48cb6 Jack Morgenstein   2014-05-29   994                       
mlx4_vf_smi_enabled(dev->dev, tnl_init->slave,
99ec41d0a48cb6 Jack Morgenstein   2014-05-29   995                              
             tnl_init->port))
1ffeb2eb8be993 Jack Morgenstein   2012-08-03   996                      qp_type 
= MLX4_IB_QPT_TUN_SMI_OWNER;
1ffeb2eb8be993 Jack Morgenstein   2012-08-03   997              else
1ffeb2eb8be993 Jack Morgenstein   2012-08-03   998                      qp_type 
= MLX4_IB_QPT_TUN_SMI;
47605df953985c Jack Morgenstein   2012-08-03   999              /* we are 
definitely in the PPF here, since we are creating
47605df953985c Jack Morgenstein   2012-08-03  1000               * tunnel QPs. 
base_tunnel_sqpn is therefore valid. */
47605df953985c Jack Morgenstein   2012-08-03  1001              qpn = 
dev->dev->phys_caps.base_tunnel_sqpn + 8 * tnl_init->slave
47605df953985c Jack Morgenstein   2012-08-03  1002                      + 
tnl_init->proxy_qp_type * 2 + tnl_init->port - 1;
1ffeb2eb8be993 Jack Morgenstein   2012-08-03  1003              sqpn = qpn;
1ffeb2eb8be993 Jack Morgenstein   2012-08-03  1004      }
1ffeb2eb8be993 Jack Morgenstein   2012-08-03  1005  
8fd3cd2ae5a09c Leon Romanovsky    2020-09-26  1006      if (init_attr->qp_type 
== IB_QPT_SMI ||
8fd3cd2ae5a09c Leon Romanovsky    2020-09-26  1007          init_attr->qp_type 
== IB_QPT_GSI || qp_type == MLX4_IB_QPT_SMI ||
8fd3cd2ae5a09c Leon Romanovsky    2020-09-26  1008          qp_type == 
MLX4_IB_QPT_GSI ||
1ffeb2eb8be993 Jack Morgenstein   2012-08-03  1009          (qp_type & 
(MLX4_IB_QPT_PROXY_SMI | MLX4_IB_QPT_PROXY_SMI_OWNER |
1ffeb2eb8be993 Jack Morgenstein   2012-08-03  1010                      
MLX4_IB_QPT_PROXY_GSI | MLX4_IB_QPT_TUN_SMI_OWNER))) {
915ec7ed911493 Leon Romanovsky    2020-09-26  1011              qp->sqp = 
kzalloc(sizeof(struct mlx4_ib_sqp), GFP_KERNEL);
8fd3cd2ae5a09c Leon Romanovsky    2020-09-26  1012              if (!qp->sqp)
1ffeb2eb8be993 Jack Morgenstein   2012-08-03  1013                      return 
-ENOMEM;
089b645d19b2de Leon Romanovsky    2019-07-04  1014      }
1ffeb2eb8be993 Jack Morgenstein   2012-08-03  1015  
1ffeb2eb8be993 Jack Morgenstein   2012-08-03  1016      qp->mlx4_ib_qp_type = 
qp_type;
225c7b1feef1b4 Roland Dreier      2007-05-08  1017  
225c7b1feef1b4 Roland Dreier      2007-05-08  1018      
spin_lock_init(&qp->sq.lock);
225c7b1feef1b4 Roland Dreier      2007-05-08  1019      
spin_lock_init(&qp->rq.lock);
fa417f7b520ee6 Eli Cohen          2010-10-24  1020      
INIT_LIST_HEAD(&qp->gid_list);
0ff1fb654bec0c Hadar Hen Zion     2012-07-05  1021      
INIT_LIST_HEAD(&qp->steering_rules);
225c7b1feef1b4 Roland Dreier      2007-05-08  1022  
225c7b1feef1b4 Roland Dreier      2007-05-08  1023      qp->state = 
IB_QPS_RESET;
ea54b10c777300 Jack Morgenstein   2008-01-28  1024      if 
(init_attr->sq_sig_type == IB_SIGNAL_ALL_WR)
ea54b10c777300 Jack Morgenstein   2008-01-28  1025              
qp->sq_signal_bits = cpu_to_be32(MLX4_WQE_CTRL_CQ_UPDATE);
225c7b1feef1b4 Roland Dreier      2007-05-08  1026  
e00b64f7c54c4c Shamir Rabinovitch 2018-12-17  1027      if (udata) {
089b645d19b2de Leon Romanovsky    2019-07-04  1028              struct 
mlx4_ib_create_qp ucmd;
400b1ebcfe3127 Guy Levi           2017-07-04  1029              size_t copy_len;
ed8637d3615b38 Guy Levi           2017-11-02  1030              int shift;
ed8637d3615b38 Guy Levi           2017-11-02  1031              int n;
400b1ebcfe3127 Guy Levi           2017-07-04  1032  
089b645d19b2de Leon Romanovsky    2019-07-04  1033              copy_len = 
sizeof(struct mlx4_ib_create_qp);
225c7b1feef1b4 Roland Dreier      2007-05-08  1034  
400b1ebcfe3127 Guy Levi           2017-07-04  1035              if 
(ib_copy_from_udata(&ucmd, udata, copy_len)) {
225c7b1feef1b4 Roland Dreier      2007-05-08  1036                      err = 
-EFAULT;
225c7b1feef1b4 Roland Dreier      2007-05-08  1037                      goto 
err;
225c7b1feef1b4 Roland Dreier      2007-05-08  1038              }
225c7b1feef1b4 Roland Dreier      2007-05-08  1039  
089b645d19b2de Leon Romanovsky    2019-07-04  1040              qp->inl_recv_sz 
= ucmd.inl_recv_sz;
400b1ebcfe3127 Guy Levi           2017-07-04  1041  
6d06c9aa3816c2 Guy Levi           2018-03-15  1042              if 
(init_attr->create_flags & IB_QP_CREATE_SCATTER_FCS) {
6d06c9aa3816c2 Guy Levi           2018-03-15  1043                      if 
(!(dev->dev->caps.flags &
6d06c9aa3816c2 Guy Levi           2018-03-15  1044                            
MLX4_DEV_CAP_FLAG_FCS_KEEP)) {
6d06c9aa3816c2 Guy Levi           2018-03-15  1045                              
pr_debug("scatter FCS is unsupported\n");
6d06c9aa3816c2 Guy Levi           2018-03-15  1046                              
err = -EOPNOTSUPP;
6d06c9aa3816c2 Guy Levi           2018-03-15  1047                              
goto err;
6d06c9aa3816c2 Guy Levi           2018-03-15  1048                      }
6d06c9aa3816c2 Guy Levi           2018-03-15  1049  
6d06c9aa3816c2 Guy Levi           2018-03-15  1050                      
qp->flags |= MLX4_IB_QP_SCATTER_FCS;
6d06c9aa3816c2 Guy Levi           2018-03-15  1051              }
6d06c9aa3816c2 Guy Levi           2018-03-15  1052  
e00b64f7c54c4c Shamir Rabinovitch 2018-12-17  1053              err = 
set_rq_size(dev, &init_attr->cap, udata,
400b1ebcfe3127 Guy Levi           2017-07-04  1054                              
  qp_has_rq(init_attr), qp, qp->inl_recv_sz);
ea30b966f7dd6b Maor Gottlieb      2017-06-21  1055              if (err)
ea30b966f7dd6b Maor Gottlieb      2017-06-21  1056                      goto 
err;
ea30b966f7dd6b Maor Gottlieb      2017-06-21  1057  
089b645d19b2de Leon Romanovsky    2019-07-04  1058              
qp->sq_no_prefetch = ucmd.sq_no_prefetch;
0e6e74162164d9 Roland Dreier      2007-06-18  1059  
089b645d19b2de Leon Romanovsky    2019-07-04  1060              err = 
set_user_sq_size(dev, qp, &ucmd);
2446304dd68748 Eli Cohen          2007-05-17  1061              if (err)
2446304dd68748 Eli Cohen          2007-05-17  1062                      goto 
err;
2446304dd68748 Eli Cohen          2007-05-17  1063  
c320e527e15483 Moni Shoua         2020-01-15  1064              qp->umem =
c320e527e15483 Moni Shoua         2020-01-15  1065                      
ib_umem_get(pd->device, ucmd.buf_addr, qp->buf_size, 0);
225c7b1feef1b4 Roland Dreier      2007-05-08  1066              if 
(IS_ERR(qp->umem)) {
225c7b1feef1b4 Roland Dreier      2007-05-08  1067                      err = 
PTR_ERR(qp->umem);
225c7b1feef1b4 Roland Dreier      2007-05-08  1068                      goto 
err;
225c7b1feef1b4 Roland Dreier      2007-05-08  1069              }
225c7b1feef1b4 Roland Dreier      2007-05-08  1070  
ed8637d3615b38 Guy Levi           2017-11-02  1071              shift = 
mlx4_ib_umem_calc_optimal_mtt_size(qp->umem, 0, &n);
ed8637d3615b38 Guy Levi           2017-11-02  1072              err = 
mlx4_mtt_init(dev->dev, n, shift, &qp->mtt);
ed8637d3615b38 Guy Levi           2017-11-02  1073  
225c7b1feef1b4 Roland Dreier      2007-05-08  1074              if (err)
225c7b1feef1b4 Roland Dreier      2007-05-08  1075                      goto 
err_buf;
225c7b1feef1b4 Roland Dreier      2007-05-08  1076  
225c7b1feef1b4 Roland Dreier      2007-05-08  1077              err = 
mlx4_ib_umem_write_mtt(dev, &qp->mtt, qp->umem);
225c7b1feef1b4 Roland Dreier      2007-05-08  1078              if (err)
225c7b1feef1b4 Roland Dreier      2007-05-08  1079                      goto 
err_mtt;
225c7b1feef1b4 Roland Dreier      2007-05-08  1080  
0a1405da9952a7 Sean Hefty         2011-06-02  1081              if 
(qp_has_rq(init_attr)) {
089b645d19b2de Leon Romanovsky    2019-07-04  1082                      err = 
mlx4_ib_db_map_user(udata, ucmd.db_addr, &qp->db);
225c7b1feef1b4 Roland Dreier      2007-05-08  1083                      if (err)
225c7b1feef1b4 Roland Dreier      2007-05-08  1084                              
goto err_mtt;
02d89b87081f51 Roland Dreier      2007-05-23  1085              }
f3301870161ca2 Moshe Shemesh      2017-06-21  1086              qp->mqp.usage = 
MLX4_RES_USAGE_USER_VERBS;
225c7b1feef1b4 Roland Dreier      2007-05-08  1087      } else {
e00b64f7c54c4c Shamir Rabinovitch 2018-12-17  1088              err = 
set_rq_size(dev, &init_attr->cap, udata,
ea30b966f7dd6b Maor Gottlieb      2017-06-21  1089                              
  qp_has_rq(init_attr), qp, 0);
ea30b966f7dd6b Maor Gottlieb      2017-06-21  1090              if (err)
ea30b966f7dd6b Maor Gottlieb      2017-06-21  1091                      goto 
err;
ea30b966f7dd6b Maor Gottlieb      2017-06-21  1092  
0e6e74162164d9 Roland Dreier      2007-06-18  1093              
qp->sq_no_prefetch = 0;
0e6e74162164d9 Roland Dreier      2007-06-18  1094  
b832be1e4007f4 Eli Cohen          2008-04-16  1095              if 
(init_attr->create_flags & IB_QP_CREATE_IPOIB_UD_LSO)
b832be1e4007f4 Eli Cohen          2008-04-16  1096                      
qp->flags |= MLX4_IB_QP_LSO;
b832be1e4007f4 Eli Cohen          2008-04-16  1097  
c1c98501121eef Matan Barak        2013-11-07  1098              if 
(init_attr->create_flags & IB_QP_CREATE_NETIF_QP) {
c1c98501121eef Matan Barak        2013-11-07  1099                      if 
(dev->steering_support ==
c1c98501121eef Matan Barak        2013-11-07  1100                          
MLX4_STEERING_MODE_DEVICE_MANAGED)
c1c98501121eef Matan Barak        2013-11-07  1101                              
qp->flags |= MLX4_IB_QP_NETIF;
c1c98501121eef Matan Barak        2013-11-07  1102                      else
c1c98501121eef Matan Barak        2013-11-07  1103                              
goto err;
c1c98501121eef Matan Barak        2013-11-07  1104              }
c1c98501121eef Matan Barak        2013-11-07  1105  
f95ccffc715bf0 Jack Morgenstein   2018-07-26  1106              err = 
set_kernel_sq_size(dev, &init_attr->cap, qp_type, qp);
2446304dd68748 Eli Cohen          2007-05-17  1107              if (err)
2446304dd68748 Eli Cohen          2007-05-17  1108                      goto 
err;
2446304dd68748 Eli Cohen          2007-05-17  1109  
0a1405da9952a7 Sean Hefty         2011-06-02  1110              if 
(qp_has_rq(init_attr)) {
8900b894e769dd Leon Romanovsky    2017-05-23  1111                      err = 
mlx4_db_alloc(dev->dev, &qp->db, 0);
225c7b1feef1b4 Roland Dreier      2007-05-08  1112                      if (err)
225c7b1feef1b4 Roland Dreier      2007-05-08  1113                              
goto err;
225c7b1feef1b4 Roland Dreier      2007-05-08  1114  
225c7b1feef1b4 Roland Dreier      2007-05-08  1115                      
*qp->db.db = 0;
02d89b87081f51 Roland Dreier      2007-05-23  1116              }
225c7b1feef1b4 Roland Dreier      2007-05-08  1117  
f95ccffc715bf0 Jack Morgenstein   2018-07-26  1118              if 
(mlx4_buf_alloc(dev->dev, qp->buf_size,  PAGE_SIZE * 2,
8900b894e769dd Leon Romanovsky    2017-05-23  1119                              
   &qp->buf)) {
225c7b1feef1b4 Roland Dreier      2007-05-08  1120                      err = 
-ENOMEM;
225c7b1feef1b4 Roland Dreier      2007-05-08  1121                      goto 
err_db;
225c7b1feef1b4 Roland Dreier      2007-05-08  1122              }
225c7b1feef1b4 Roland Dreier      2007-05-08  1123  
225c7b1feef1b4 Roland Dreier      2007-05-08  1124              err = 
mlx4_mtt_init(dev->dev, qp->buf.npages, qp->buf.page_shift,
225c7b1feef1b4 Roland Dreier      2007-05-08  1125                              
    &qp->mtt);
225c7b1feef1b4 Roland Dreier      2007-05-08  1126              if (err)
225c7b1feef1b4 Roland Dreier      2007-05-08  1127                      goto 
err_buf;
225c7b1feef1b4 Roland Dreier      2007-05-08  1128  
8900b894e769dd Leon Romanovsky    2017-05-23  1129              err = 
mlx4_buf_write_mtt(dev->dev, &qp->mtt, &qp->buf);
225c7b1feef1b4 Roland Dreier      2007-05-08  1130              if (err)
225c7b1feef1b4 Roland Dreier      2007-05-08  1131                      goto 
err_mtt;
225c7b1feef1b4 Roland Dreier      2007-05-08  1132  
e9105cdefbf64c Li Dongyang        2017-08-16  1133              qp->sq.wrid = 
kvmalloc_array(qp->sq.wqe_cnt,
e9105cdefbf64c Li Dongyang        2017-08-16  1134                              
             sizeof(u64), GFP_KERNEL);
e9105cdefbf64c Li Dongyang        2017-08-16  1135              qp->rq.wrid = 
kvmalloc_array(qp->rq.wqe_cnt,
e9105cdefbf64c Li Dongyang        2017-08-16  1136                              
             sizeof(u64), GFP_KERNEL);
225c7b1feef1b4 Roland Dreier      2007-05-08  1137              if 
(!qp->sq.wrid || !qp->rq.wrid) {
225c7b1feef1b4 Roland Dreier      2007-05-08  1138                      err = 
-ENOMEM;
225c7b1feef1b4 Roland Dreier      2007-05-08  1139                      goto 
err_wrid;
225c7b1feef1b4 Roland Dreier      2007-05-08  1140              }
f3301870161ca2 Moshe Shemesh      2017-06-21  1141              qp->mqp.usage = 
MLX4_RES_USAGE_DRIVER;
225c7b1feef1b4 Roland Dreier      2007-05-08  1142      }
225c7b1feef1b4 Roland Dreier      2007-05-08  1143  
a3cdcbfa8fb1fc Yevgeny Petrilin   2008-10-10  1144      if (sqpn) {
1ffeb2eb8be993 Jack Morgenstein   2012-08-03  1145              if 
(qp->mlx4_ib_qp_type & (MLX4_IB_QPT_PROXY_SMI_OWNER |
1ffeb2eb8be993 Jack Morgenstein   2012-08-03  1146                  
MLX4_IB_QPT_PROXY_SMI | MLX4_IB_QPT_PROXY_GSI)) {
1ffeb2eb8be993 Jack Morgenstein   2012-08-03  1147                      if 
(alloc_proxy_bufs(pd->device, qp)) {
1ffeb2eb8be993 Jack Morgenstein   2012-08-03  1148                              
err = -ENOMEM;
1ffeb2eb8be993 Jack Morgenstein   2012-08-03  1149                              
goto err_wrid;
1ffeb2eb8be993 Jack Morgenstein   2012-08-03  1150                      }
1ffeb2eb8be993 Jack Morgenstein   2012-08-03  1151              }
a3cdcbfa8fb1fc Yevgeny Petrilin   2008-10-10  1152      } else {
ddae0349fdb78b Eugenia Emantayev  2014-12-11  1153              /* Raw packet 
QPNs may not have bits 6,7 set in their qp_num;
ddae0349fdb78b Eugenia Emantayev  2014-12-11  1154               * otherwise, 
the WQE BlueFlame setup flow wrongly causes
ddae0349fdb78b Eugenia Emantayev  2014-12-11  1155               * VLAN 
insertion. */
3987a2d3193cf2 Or Gerlitz         2012-01-17  1156              if 
(init_attr->qp_type == IB_QPT_RAW_PACKET)
ddae0349fdb78b Eugenia Emantayev  2014-12-11  1157                      err = 
mlx4_qp_reserve_range(dev->dev, 1, 1, &qpn,
d57febe1a47801 Matan Barak        2014-12-11  1158                              
                    (init_attr->cap.max_send_wr ?
d57febe1a47801 Matan Barak        2014-12-11  1159                              
                     MLX4_RESERVE_ETH_BF_QP : 0) |
d57febe1a47801 Matan Barak        2014-12-11  1160                              
                    (init_attr->cap.max_recv_wr ?
f3301870161ca2 Moshe Shemesh      2017-06-21  1161                              
                     MLX4_RESERVE_A0_QP : 0),
f3301870161ca2 Moshe Shemesh      2017-06-21  1162                              
                    qp->mqp.usage);
3987a2d3193cf2 Or Gerlitz         2012-01-17  1163              else
c1c98501121eef Matan Barak        2013-11-07  1164                      if 
(qp->flags & MLX4_IB_QP_NETIF)
c1c98501121eef Matan Barak        2013-11-07  1165                              
err = mlx4_ib_steer_qp_alloc(dev, 1, &qpn);
c1c98501121eef Matan Barak        2013-11-07  1166                      else
c1c98501121eef Matan Barak        2013-11-07  1167                              
err = mlx4_qp_reserve_range(dev->dev, 1, 1,
f3301870161ca2 Moshe Shemesh      2017-06-21  1168                              
                            &qpn, 0, qp->mqp.usage);
225c7b1feef1b4 Roland Dreier      2007-05-08  1169              if (err)
1ffeb2eb8be993 Jack Morgenstein   2012-08-03  1170                      goto 
err_proxy;
a3cdcbfa8fb1fc Yevgeny Petrilin   2008-10-10  1171      }
a3cdcbfa8fb1fc Yevgeny Petrilin   2008-10-10  1172  
fbfb6625ea2d1b Eran Ben Elisha    2015-10-15  1173      if 
(init_attr->create_flags & IB_QP_CREATE_BLOCK_MULTICAST_LOOPBACK)
fbfb6625ea2d1b Eran Ben Elisha    2015-10-15  1174              qp->flags |= 
MLX4_IB_QP_BLOCK_MULTICAST_LOOPBACK;
fbfb6625ea2d1b Eran Ben Elisha    2015-10-15  1175  
8900b894e769dd Leon Romanovsky    2017-05-23 @1176      err = 
mlx4_qp_alloc(dev->dev, qpn, &qp->mqp);
a3cdcbfa8fb1fc Yevgeny Petrilin   2008-10-10  1177      if (err)
a3cdcbfa8fb1fc Yevgeny Petrilin   2008-10-10  1178              goto err_qpn;
225c7b1feef1b4 Roland Dreier      2007-05-08  1179  
0a1405da9952a7 Sean Hefty         2011-06-02  1180      if (init_attr->qp_type 
== IB_QPT_XRC_TGT)
0a1405da9952a7 Sean Hefty         2011-06-02  1181              qp->mqp.qpn |= 
(1 << 23);
0a1405da9952a7 Sean Hefty         2011-06-02  1182  
225c7b1feef1b4 Roland Dreier      2007-05-08  1183      /*
225c7b1feef1b4 Roland Dreier      2007-05-08  1184       * Hardware wants QPN 
written in big-endian order (after
225c7b1feef1b4 Roland Dreier      2007-05-08  1185       * shifting) for send 
doorbell.  Precompute this value to save
225c7b1feef1b4 Roland Dreier      2007-05-08  1186       * a little bit when 
posting sends.
225c7b1feef1b4 Roland Dreier      2007-05-08  1187       */
225c7b1feef1b4 Roland Dreier      2007-05-08  1188      qp->doorbell_qpn = 
swab32(qp->mqp.qpn << 8);
225c7b1feef1b4 Roland Dreier      2007-05-08  1189  
089b645d19b2de Leon Romanovsky    2019-07-04  1190      qp->mqp.event = 
mlx4_ib_qp_event;
400b1ebcfe3127 Guy Levi           2017-07-04  1191  
35f05dabf95ac3 Yishai Hadas       2015-02-08  1192      
spin_lock_irqsave(&dev->reset_flow_resource_lock, flags);
35f05dabf95ac3 Yishai Hadas       2015-02-08  1193      
mlx4_ib_lock_cqs(to_mcq(init_attr->send_cq),
35f05dabf95ac3 Yishai Hadas       2015-02-08  1194                       
to_mcq(init_attr->recv_cq));
35f05dabf95ac3 Yishai Hadas       2015-02-08  1195      /* Maintain device to 
QPs access, needed for further handling
35f05dabf95ac3 Yishai Hadas       2015-02-08  1196       * via reset flow
35f05dabf95ac3 Yishai Hadas       2015-02-08  1197       */
35f05dabf95ac3 Yishai Hadas       2015-02-08  1198      
list_add_tail(&qp->qps_list, &dev->qp_list);
35f05dabf95ac3 Yishai Hadas       2015-02-08  1199      /* Maintain CQ to QPs 
access, needed for further handling
35f05dabf95ac3 Yishai Hadas       2015-02-08  1200       * via reset flow
35f05dabf95ac3 Yishai Hadas       2015-02-08  1201       */
35f05dabf95ac3 Yishai Hadas       2015-02-08  1202      mcq = 
to_mcq(init_attr->send_cq);
35f05dabf95ac3 Yishai Hadas       2015-02-08  1203      
list_add_tail(&qp->cq_send_list, &mcq->send_qp_list);
35f05dabf95ac3 Yishai Hadas       2015-02-08  1204      mcq = 
to_mcq(init_attr->recv_cq);
35f05dabf95ac3 Yishai Hadas       2015-02-08  1205      
list_add_tail(&qp->cq_recv_list, &mcq->recv_qp_list);
35f05dabf95ac3 Yishai Hadas       2015-02-08  1206      
mlx4_ib_unlock_cqs(to_mcq(init_attr->send_cq),
35f05dabf95ac3 Yishai Hadas       2015-02-08  1207                         
to_mcq(init_attr->recv_cq));
35f05dabf95ac3 Yishai Hadas       2015-02-08  1208      
spin_unlock_irqrestore(&dev->reset_flow_resource_lock, flags);
225c7b1feef1b4 Roland Dreier      2007-05-08  1209      return 0;
225c7b1feef1b4 Roland Dreier      2007-05-08  1210  
a3cdcbfa8fb1fc Yevgeny Petrilin   2008-10-10  1211  err_qpn:
c1c98501121eef Matan Barak        2013-11-07  1212      if (!sqpn) {
c1c98501121eef Matan Barak        2013-11-07  1213              if (qp->flags & 
MLX4_IB_QP_NETIF)
c1c98501121eef Matan Barak        2013-11-07  1214                      
mlx4_ib_steer_qp_free(dev, qpn, 1);
c1c98501121eef Matan Barak        2013-11-07  1215              else
a3cdcbfa8fb1fc Yevgeny Petrilin   2008-10-10  1216                      
mlx4_qp_release_range(dev->dev, qpn, 1);
c1c98501121eef Matan Barak        2013-11-07  1217      }
1ffeb2eb8be993 Jack Morgenstein   2012-08-03  1218  err_proxy:
1ffeb2eb8be993 Jack Morgenstein   2012-08-03  1219      if (qp->mlx4_ib_qp_type 
== MLX4_IB_QPT_PROXY_GSI)
1ffeb2eb8be993 Jack Morgenstein   2012-08-03  1220              
free_proxy_bufs(pd->device, qp);
225c7b1feef1b4 Roland Dreier      2007-05-08  1221  err_wrid:
e00b64f7c54c4c Shamir Rabinovitch 2018-12-17  1222      if (udata) {
0a1405da9952a7 Sean Hefty         2011-06-02  1223              if 
(qp_has_rq(init_attr))
89944450547334 Shamir Rabinovitch 2019-02-07  1224                      
mlx4_ib_db_unmap_user(context, &qp->db);
23f1b38481596a Roland Dreier      2007-07-20  1225      } else {
0ef2f05c7e02ff Wengang Wang       2015-10-08  1226              
kvfree(qp->sq.wrid);
0ef2f05c7e02ff Wengang Wang       2015-10-08  1227              
kvfree(qp->rq.wrid);
225c7b1feef1b4 Roland Dreier      2007-05-08  1228      }
225c7b1feef1b4 Roland Dreier      2007-05-08  1229  
225c7b1feef1b4 Roland Dreier      2007-05-08  1230  err_mtt:
225c7b1feef1b4 Roland Dreier      2007-05-08  1231      
mlx4_mtt_cleanup(dev->dev, &qp->mtt);
225c7b1feef1b4 Roland Dreier      2007-05-08  1232  
225c7b1feef1b4 Roland Dreier      2007-05-08  1233  err_buf:
836a0fbb3e76f7 Leon Romanovsky    2019-06-16  1234      if (!qp->umem)
225c7b1feef1b4 Roland Dreier      2007-05-08  1235              
mlx4_buf_free(dev->dev, qp->buf_size, &qp->buf);
836a0fbb3e76f7 Leon Romanovsky    2019-06-16  1236      
ib_umem_release(qp->umem);
225c7b1feef1b4 Roland Dreier      2007-05-08  1237  
225c7b1feef1b4 Roland Dreier      2007-05-08  1238  err_db:
e00b64f7c54c4c Shamir Rabinovitch 2018-12-17  1239      if (!udata && 
qp_has_rq(init_attr))
6296883ca4cd52 Yevgeny Petrilin   2008-04-23  1240              
mlx4_db_free(dev->dev, &qp->db);
225c7b1feef1b4 Roland Dreier      2007-05-08  1241  
225c7b1feef1b4 Roland Dreier      2007-05-08  1242  err:
915ec7ed911493 Leon Romanovsky    2020-09-26  1243      kfree(qp->sqp);
225c7b1feef1b4 Roland Dreier      2007-05-08  1244      return err;
225c7b1feef1b4 Roland Dreier      2007-05-08  1245  }
225c7b1feef1b4 Roland Dreier      2007-05-08  1246  

:::::: The code at line 1176 was first introduced by commit
:::::: 8900b894e769dd88b53e519e3502e0e3c349fe95 {net, IB}/mlx4: Remove gfp 
flags argument

:::::: TO: Leon Romanovsky <[email protected]>
:::::: CC: Doug Ledford <[email protected]>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to