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]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
