All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: drivers/infiniband/hw/mlx4/qp.c:3795 _mlx4_ib_post_send() error: uninitialized symbol 'lso_hdr_sz'.
Date: Thu, 08 Jul 2021 10:08:55 +0800	[thread overview]
Message-ID: <202107081044.8wxrswP3-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 26970 bytes --]

CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Kees Cook <keescook@chromium.org>
CC: Chao Yu <yuchao0@huawei.com>, Chao Yu <chao@kernel.org>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   e9f1cbc0c4114880090c7a578117d3b9cf184ad4
commit: 3f649ab728cda8038259d8f14492fe400fbab911 treewide: Remove uninitialized_var() usage
date:   12 months ago
:::::: branch date: 6 hours ago
:::::: commit date: 12 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 <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

New smatch warnings:
drivers/infiniband/hw/mlx4/qp.c:3795 _mlx4_ib_post_send() error: uninitialized symbol 'lso_hdr_sz'.

Old smatch warnings:
drivers/infiniband/hw/mlx4/qp.c:1153 create_qp_common() warn: missing error code 'err'
drivers/infiniband/hw/mlx4/qp.c:2590 __mlx4_ib_modify_qp() warn: Function too hairy.  No more merges.
drivers/infiniband/hw/mlx4/qp.c:4301 mlx4_ib_modify_wq() warn: unsigned 'cur_state' is never less than zero.

vim +/lso_hdr_sz +3795 drivers/infiniband/hw/mlx4/qp.c

1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3532  
d34ac5cd3a73aa Bart Van Assche     2018-07-18  3533  static int _mlx4_ib_post_send(struct ib_qp *ibqp, const struct ib_send_wr *wr,
d34ac5cd3a73aa Bart Van Assche     2018-07-18  3534  			      const struct ib_send_wr **bad_wr, bool drain)
225c7b1feef1b4 Roland Dreier       2007-05-08  3535  {
225c7b1feef1b4 Roland Dreier       2007-05-08  3536  	struct mlx4_ib_qp *qp = to_mqp(ibqp);
225c7b1feef1b4 Roland Dreier       2007-05-08  3537  	void *wqe;
225c7b1feef1b4 Roland Dreier       2007-05-08  3538  	struct mlx4_wqe_ctrl_seg *ctrl;
6e694ea33e7a7f Jack Morgenstein    2007-09-19  3539  	struct mlx4_wqe_data_seg *dseg;
225c7b1feef1b4 Roland Dreier       2007-05-08  3540  	unsigned long flags;
225c7b1feef1b4 Roland Dreier       2007-05-08  3541  	int nreq;
225c7b1feef1b4 Roland Dreier       2007-05-08  3542  	int err = 0;
ea54b10c777300 Jack Morgenstein    2008-01-28  3543  	unsigned ind;
3f649ab728cda8 Kees Cook           2020-06-03  3544  	int size;
3f649ab728cda8 Kees Cook           2020-06-03  3545  	unsigned seglen;
0fd7e1d8559f45 Roland Dreier       2009-01-16  3546  	__be32 dummy;
0fd7e1d8559f45 Roland Dreier       2009-01-16  3547  	__be32 *lso_wqe;
3f649ab728cda8 Kees Cook           2020-06-03  3548  	__be32 lso_hdr_sz;
417608c20a4c83 Eli Cohen           2009-11-12  3549  	__be32 blh;
225c7b1feef1b4 Roland Dreier       2007-05-08  3550  	int i;
35f05dabf95ac3 Yishai Hadas        2015-02-08  3551  	struct mlx4_ib_dev *mdev = to_mdev(ibqp->device);
225c7b1feef1b4 Roland Dreier       2007-05-08  3552  
e1b866c677d693 Moni Shoua          2016-01-14  3553  	if (qp->mlx4_ib_qp_type == MLX4_IB_QPT_GSI) {
e1b866c677d693 Moni Shoua          2016-01-14  3554  		struct mlx4_ib_sqp *sqp = to_msqp(qp);
e1b866c677d693 Moni Shoua          2016-01-14  3555  
e1b866c677d693 Moni Shoua          2016-01-14  3556  		if (sqp->roce_v2_gsi) {
e1b866c677d693 Moni Shoua          2016-01-14  3557  			struct mlx4_ib_ah *ah = to_mah(ud_wr(wr)->ah);
a748d60df32ec5 Talat Batheesh      2017-02-14  3558  			enum ib_gid_type gid_type;
e1b866c677d693 Moni Shoua          2016-01-14  3559  			union ib_gid gid;
e1b866c677d693 Moni Shoua          2016-01-14  3560  
a748d60df32ec5 Talat Batheesh      2017-02-14  3561  			if (!fill_gid_by_hw_index(mdev, sqp->qp.port,
a748d60df32ec5 Talat Batheesh      2017-02-14  3562  					   ah->av.ib.gid_index,
a748d60df32ec5 Talat Batheesh      2017-02-14  3563  					   &gid, &gid_type))
a748d60df32ec5 Talat Batheesh      2017-02-14  3564  				qp = (gid_type == IB_GID_TYPE_ROCE_UDP_ENCAP) ?
e1b866c677d693 Moni Shoua          2016-01-14  3565  						to_mqp(sqp->roce_v2_gsi) : qp;
a748d60df32ec5 Talat Batheesh      2017-02-14  3566  			else
e1b866c677d693 Moni Shoua          2016-01-14  3567  				pr_err("Failed to get gid at index %d. RoCEv2 will not work properly\n",
e1b866c677d693 Moni Shoua          2016-01-14  3568  				       ah->av.ib.gid_index);
e1b866c677d693 Moni Shoua          2016-01-14  3569  		}
e1b866c677d693 Moni Shoua          2016-01-14  3570  	}
e1b866c677d693 Moni Shoua          2016-01-14  3571  
96db0e0335c798 Roland Dreier       2007-10-30  3572  	spin_lock_irqsave(&qp->sq.lock, flags);
1975acd9f3fdc0 Yishai Hadas        2018-06-19  3573  	if (mdev->dev->persist->state & MLX4_DEVICE_STATE_INTERNAL_ERROR &&
1975acd9f3fdc0 Yishai Hadas        2018-06-19  3574  	    !drain) {
35f05dabf95ac3 Yishai Hadas        2015-02-08  3575  		err = -EIO;
35f05dabf95ac3 Yishai Hadas        2015-02-08  3576  		*bad_wr = wr;
35f05dabf95ac3 Yishai Hadas        2015-02-08  3577  		nreq = 0;
35f05dabf95ac3 Yishai Hadas        2015-02-08  3578  		goto out;
35f05dabf95ac3 Yishai Hadas        2015-02-08  3579  	}
225c7b1feef1b4 Roland Dreier       2007-05-08  3580  
ea54b10c777300 Jack Morgenstein    2008-01-28  3581  	ind = qp->sq_next_wqe;
225c7b1feef1b4 Roland Dreier       2007-05-08  3582  
225c7b1feef1b4 Roland Dreier       2007-05-08  3583  	for (nreq = 0; wr; ++nreq, wr = wr->next) {
0fd7e1d8559f45 Roland Dreier       2009-01-16  3584  		lso_wqe = &dummy;
417608c20a4c83 Eli Cohen           2009-11-12  3585  		blh = 0;
0fd7e1d8559f45 Roland Dreier       2009-01-16  3586  
225c7b1feef1b4 Roland Dreier       2007-05-08  3587  		if (mlx4_wq_overflow(&qp->sq, nreq, qp->ibqp.send_cq)) {
225c7b1feef1b4 Roland Dreier       2007-05-08  3588  			err = -ENOMEM;
225c7b1feef1b4 Roland Dreier       2007-05-08  3589  			*bad_wr = wr;
225c7b1feef1b4 Roland Dreier       2007-05-08  3590  			goto out;
225c7b1feef1b4 Roland Dreier       2007-05-08  3591  		}
225c7b1feef1b4 Roland Dreier       2007-05-08  3592  
225c7b1feef1b4 Roland Dreier       2007-05-08  3593  		if (unlikely(wr->num_sge > qp->sq.max_gs)) {
225c7b1feef1b4 Roland Dreier       2007-05-08  3594  			err = -EINVAL;
225c7b1feef1b4 Roland Dreier       2007-05-08  3595  			*bad_wr = wr;
225c7b1feef1b4 Roland Dreier       2007-05-08  3596  			goto out;
225c7b1feef1b4 Roland Dreier       2007-05-08  3597  		}
225c7b1feef1b4 Roland Dreier       2007-05-08  3598  
0e6e74162164d9 Roland Dreier       2007-06-18  3599  		ctrl = wqe = get_send_wqe(qp, ind & (qp->sq.wqe_cnt - 1));
ea54b10c777300 Jack Morgenstein    2008-01-28  3600  		qp->sq.wrid[(qp->sq.head + nreq) & (qp->sq.wqe_cnt - 1)] = wr->wr_id;
225c7b1feef1b4 Roland Dreier       2007-05-08  3601  
225c7b1feef1b4 Roland Dreier       2007-05-08  3602  		ctrl->srcrb_flags =
225c7b1feef1b4 Roland Dreier       2007-05-08  3603  			(wr->send_flags & IB_SEND_SIGNALED ?
225c7b1feef1b4 Roland Dreier       2007-05-08  3604  			 cpu_to_be32(MLX4_WQE_CTRL_CQ_UPDATE) : 0) |
225c7b1feef1b4 Roland Dreier       2007-05-08  3605  			(wr->send_flags & IB_SEND_SOLICITED ?
225c7b1feef1b4 Roland Dreier       2007-05-08  3606  			 cpu_to_be32(MLX4_WQE_CTRL_SOLICITED) : 0) |
8ff095ec4bce7b Eli Cohen           2008-04-16  3607  			((wr->send_flags & IB_SEND_IP_CSUM) ?
8ff095ec4bce7b Eli Cohen           2008-04-16  3608  			 cpu_to_be32(MLX4_WQE_CTRL_IP_CSUM |
8ff095ec4bce7b Eli Cohen           2008-04-16  3609  				     MLX4_WQE_CTRL_TCP_UDP_CSUM) : 0) |
225c7b1feef1b4 Roland Dreier       2007-05-08  3610  			qp->sq_signal_bits;
225c7b1feef1b4 Roland Dreier       2007-05-08  3611  
95d04f0735b4fc Roland Dreier       2008-07-23  3612  		ctrl->imm = send_ieth(wr);
225c7b1feef1b4 Roland Dreier       2007-05-08  3613  
225c7b1feef1b4 Roland Dreier       2007-05-08  3614  		wqe += sizeof *ctrl;
225c7b1feef1b4 Roland Dreier       2007-05-08  3615  		size = sizeof *ctrl / 16;
225c7b1feef1b4 Roland Dreier       2007-05-08  3616  
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3617  		switch (qp->mlx4_ib_qp_type) {
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3618  		case MLX4_IB_QPT_RC:
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3619  		case MLX4_IB_QPT_UC:
225c7b1feef1b4 Roland Dreier       2007-05-08  3620  			switch (wr->opcode) {
225c7b1feef1b4 Roland Dreier       2007-05-08  3621  			case IB_WR_ATOMIC_CMP_AND_SWP:
225c7b1feef1b4 Roland Dreier       2007-05-08  3622  			case IB_WR_ATOMIC_FETCH_AND_ADD:
6fa8f719844b84 Vladimir Sokolovsky 2010-04-14  3623  			case IB_WR_MASKED_ATOMIC_FETCH_AND_ADD:
e622f2f4ad2142 Christoph Hellwig   2015-10-08  3624  				set_raddr_seg(wqe, atomic_wr(wr)->remote_addr,
e622f2f4ad2142 Christoph Hellwig   2015-10-08  3625  					      atomic_wr(wr)->rkey);
225c7b1feef1b4 Roland Dreier       2007-05-08  3626  				wqe  += sizeof (struct mlx4_wqe_raddr_seg);
225c7b1feef1b4 Roland Dreier       2007-05-08  3627  
e622f2f4ad2142 Christoph Hellwig   2015-10-08  3628  				set_atomic_seg(wqe, atomic_wr(wr));
225c7b1feef1b4 Roland Dreier       2007-05-08  3629  				wqe  += sizeof (struct mlx4_wqe_atomic_seg);
0fbfa6a9062c71 Roland Dreier       2007-07-18  3630  
225c7b1feef1b4 Roland Dreier       2007-05-08  3631  				size += (sizeof (struct mlx4_wqe_raddr_seg) +
225c7b1feef1b4 Roland Dreier       2007-05-08  3632  					 sizeof (struct mlx4_wqe_atomic_seg)) / 16;
6fa8f719844b84 Vladimir Sokolovsky 2010-04-14  3633  
6fa8f719844b84 Vladimir Sokolovsky 2010-04-14  3634  				break;
6fa8f719844b84 Vladimir Sokolovsky 2010-04-14  3635  
6fa8f719844b84 Vladimir Sokolovsky 2010-04-14  3636  			case IB_WR_MASKED_ATOMIC_CMP_AND_SWP:
e622f2f4ad2142 Christoph Hellwig   2015-10-08  3637  				set_raddr_seg(wqe, atomic_wr(wr)->remote_addr,
e622f2f4ad2142 Christoph Hellwig   2015-10-08  3638  					      atomic_wr(wr)->rkey);
6fa8f719844b84 Vladimir Sokolovsky 2010-04-14  3639  				wqe  += sizeof (struct mlx4_wqe_raddr_seg);
6fa8f719844b84 Vladimir Sokolovsky 2010-04-14  3640  
e622f2f4ad2142 Christoph Hellwig   2015-10-08  3641  				set_masked_atomic_seg(wqe, atomic_wr(wr));
6fa8f719844b84 Vladimir Sokolovsky 2010-04-14  3642  				wqe  += sizeof (struct mlx4_wqe_masked_atomic_seg);
6fa8f719844b84 Vladimir Sokolovsky 2010-04-14  3643  
6fa8f719844b84 Vladimir Sokolovsky 2010-04-14  3644  				size += (sizeof (struct mlx4_wqe_raddr_seg) +
6fa8f719844b84 Vladimir Sokolovsky 2010-04-14  3645  					 sizeof (struct mlx4_wqe_masked_atomic_seg)) / 16;
225c7b1feef1b4 Roland Dreier       2007-05-08  3646  
225c7b1feef1b4 Roland Dreier       2007-05-08  3647  				break;
225c7b1feef1b4 Roland Dreier       2007-05-08  3648  
225c7b1feef1b4 Roland Dreier       2007-05-08  3649  			case IB_WR_RDMA_READ:
225c7b1feef1b4 Roland Dreier       2007-05-08  3650  			case IB_WR_RDMA_WRITE:
225c7b1feef1b4 Roland Dreier       2007-05-08  3651  			case IB_WR_RDMA_WRITE_WITH_IMM:
e622f2f4ad2142 Christoph Hellwig   2015-10-08  3652  				set_raddr_seg(wqe, rdma_wr(wr)->remote_addr,
e622f2f4ad2142 Christoph Hellwig   2015-10-08  3653  					      rdma_wr(wr)->rkey);
225c7b1feef1b4 Roland Dreier       2007-05-08  3654  				wqe  += sizeof (struct mlx4_wqe_raddr_seg);
225c7b1feef1b4 Roland Dreier       2007-05-08  3655  				size += sizeof (struct mlx4_wqe_raddr_seg) / 16;
225c7b1feef1b4 Roland Dreier       2007-05-08  3656  				break;
95d04f0735b4fc Roland Dreier       2008-07-23  3657  
95d04f0735b4fc Roland Dreier       2008-07-23  3658  			case IB_WR_LOCAL_INV:
2ac6bf4ddc87c3 Jack Morgenstein    2009-06-05  3659  				ctrl->srcrb_flags |=
2ac6bf4ddc87c3 Jack Morgenstein    2009-06-05  3660  					cpu_to_be32(MLX4_WQE_CTRL_STRONG_ORDER);
95d04f0735b4fc Roland Dreier       2008-07-23  3661  				set_local_inv_seg(wqe, wr->ex.invalidate_rkey);
95d04f0735b4fc Roland Dreier       2008-07-23  3662  				wqe  += sizeof (struct mlx4_wqe_local_inval_seg);
95d04f0735b4fc Roland Dreier       2008-07-23  3663  				size += sizeof (struct mlx4_wqe_local_inval_seg) / 16;
95d04f0735b4fc Roland Dreier       2008-07-23  3664  				break;
95d04f0735b4fc Roland Dreier       2008-07-23  3665  
1b2cd0fc673c0b Sagi Grimberg       2015-10-13  3666  			case IB_WR_REG_MR:
1b2cd0fc673c0b Sagi Grimberg       2015-10-13  3667  				ctrl->srcrb_flags |=
1b2cd0fc673c0b Sagi Grimberg       2015-10-13  3668  					cpu_to_be32(MLX4_WQE_CTRL_STRONG_ORDER);
1b2cd0fc673c0b Sagi Grimberg       2015-10-13  3669  				set_reg_seg(wqe, reg_wr(wr));
1b2cd0fc673c0b Sagi Grimberg       2015-10-13  3670  				wqe  += sizeof(struct mlx4_wqe_fmr_seg);
1b2cd0fc673c0b Sagi Grimberg       2015-10-13  3671  				size += sizeof(struct mlx4_wqe_fmr_seg) / 16;
1b2cd0fc673c0b Sagi Grimberg       2015-10-13  3672  				break;
1b2cd0fc673c0b Sagi Grimberg       2015-10-13  3673  
225c7b1feef1b4 Roland Dreier       2007-05-08  3674  			default:
225c7b1feef1b4 Roland Dreier       2007-05-08  3675  				/* No extra segments required for sends */
225c7b1feef1b4 Roland Dreier       2007-05-08  3676  				break;
225c7b1feef1b4 Roland Dreier       2007-05-08  3677  			}
225c7b1feef1b4 Roland Dreier       2007-05-08  3678  			break;
225c7b1feef1b4 Roland Dreier       2007-05-08  3679  
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3680  		case MLX4_IB_QPT_TUN_SMI_OWNER:
e622f2f4ad2142 Christoph Hellwig   2015-10-08  3681  			err =  build_sriov_qp0_header(to_msqp(qp), ud_wr(wr),
e622f2f4ad2142 Christoph Hellwig   2015-10-08  3682  					ctrl, &seglen);
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3683  			if (unlikely(err)) {
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3684  				*bad_wr = wr;
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3685  				goto out;
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3686  			}
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3687  			wqe  += seglen;
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3688  			size += seglen / 16;
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3689  			break;
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3690  		case MLX4_IB_QPT_TUN_SMI:
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3691  		case MLX4_IB_QPT_TUN_GSI:
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3692  			/* this is a UD qp used in MAD responses to slaves. */
e622f2f4ad2142 Christoph Hellwig   2015-10-08  3693  			set_datagram_seg(wqe, ud_wr(wr));
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3694  			/* set the forced-loopback bit in the data seg av */
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3695  			*(__be32 *) wqe |= cpu_to_be32(0x80000000);
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3696  			wqe  += sizeof (struct mlx4_wqe_datagram_seg);
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3697  			size += sizeof (struct mlx4_wqe_datagram_seg) / 16;
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3698  			break;
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3699  		case MLX4_IB_QPT_UD:
e622f2f4ad2142 Christoph Hellwig   2015-10-08  3700  			set_datagram_seg(wqe, ud_wr(wr));
225c7b1feef1b4 Roland Dreier       2007-05-08  3701  			wqe  += sizeof (struct mlx4_wqe_datagram_seg);
225c7b1feef1b4 Roland Dreier       2007-05-08  3702  			size += sizeof (struct mlx4_wqe_datagram_seg) / 16;
b832be1e4007f4 Eli Cohen           2008-04-16  3703  
b832be1e4007f4 Eli Cohen           2008-04-16  3704  			if (wr->opcode == IB_WR_LSO) {
e622f2f4ad2142 Christoph Hellwig   2015-10-08  3705  				err = build_lso_seg(wqe, ud_wr(wr), qp, &seglen,
e622f2f4ad2142 Christoph Hellwig   2015-10-08  3706  						&lso_hdr_sz, &blh);
b832be1e4007f4 Eli Cohen           2008-04-16  3707  				if (unlikely(err)) {
b832be1e4007f4 Eli Cohen           2008-04-16  3708  					*bad_wr = wr;
b832be1e4007f4 Eli Cohen           2008-04-16  3709  					goto out;
b832be1e4007f4 Eli Cohen           2008-04-16  3710  				}
0fd7e1d8559f45 Roland Dreier       2009-01-16  3711  				lso_wqe = (__be32 *) wqe;
b832be1e4007f4 Eli Cohen           2008-04-16  3712  				wqe  += seglen;
b832be1e4007f4 Eli Cohen           2008-04-16  3713  				size += seglen / 16;
b832be1e4007f4 Eli Cohen           2008-04-16  3714  			}
225c7b1feef1b4 Roland Dreier       2007-05-08  3715  			break;
225c7b1feef1b4 Roland Dreier       2007-05-08  3716  
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3717  		case MLX4_IB_QPT_PROXY_SMI_OWNER:
e622f2f4ad2142 Christoph Hellwig   2015-10-08  3718  			err = build_sriov_qp0_header(to_msqp(qp), ud_wr(wr),
e622f2f4ad2142 Christoph Hellwig   2015-10-08  3719  					ctrl, &seglen);
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3720  			if (unlikely(err)) {
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3721  				*bad_wr = wr;
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3722  				goto out;
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3723  			}
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3724  			wqe  += seglen;
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3725  			size += seglen / 16;
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3726  			/* to start tunnel header on a cache-line boundary */
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3727  			add_zero_len_inline(wqe);
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3728  			wqe += 16;
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3729  			size++;
e622f2f4ad2142 Christoph Hellwig   2015-10-08  3730  			build_tunnel_header(ud_wr(wr), wqe, &seglen);
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3731  			wqe  += seglen;
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3732  			size += seglen / 16;
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3733  			break;
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3734  		case MLX4_IB_QPT_PROXY_SMI:
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3735  		case MLX4_IB_QPT_PROXY_GSI:
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3736  			/* If we are tunneling special qps, this is a UD qp.
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3737  			 * In this case we first add a UD segment targeting
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3738  			 * the tunnel qp, and then add a header with address
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3739  			 * information */
e622f2f4ad2142 Christoph Hellwig   2015-10-08  3740  			set_tunnel_datagram_seg(to_mdev(ibqp->device), wqe,
e622f2f4ad2142 Christoph Hellwig   2015-10-08  3741  						ud_wr(wr),
97982f5a91e91d Jack Morgenstein    2014-05-29  3742  						qp->mlx4_ib_qp_type);
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3743  			wqe  += sizeof (struct mlx4_wqe_datagram_seg);
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3744  			size += sizeof (struct mlx4_wqe_datagram_seg) / 16;
e622f2f4ad2142 Christoph Hellwig   2015-10-08  3745  			build_tunnel_header(ud_wr(wr), wqe, &seglen);
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3746  			wqe  += seglen;
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3747  			size += seglen / 16;
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3748  			break;
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3749  
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3750  		case MLX4_IB_QPT_SMI:
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3751  		case MLX4_IB_QPT_GSI:
e622f2f4ad2142 Christoph Hellwig   2015-10-08  3752  			err = build_mlx_header(to_msqp(qp), ud_wr(wr), ctrl,
e622f2f4ad2142 Christoph Hellwig   2015-10-08  3753  					&seglen);
f438000f7a31fa Roland Dreier       2008-04-16  3754  			if (unlikely(err)) {
225c7b1feef1b4 Roland Dreier       2007-05-08  3755  				*bad_wr = wr;
225c7b1feef1b4 Roland Dreier       2007-05-08  3756  				goto out;
225c7b1feef1b4 Roland Dreier       2007-05-08  3757  			}
f438000f7a31fa Roland Dreier       2008-04-16  3758  			wqe  += seglen;
f438000f7a31fa Roland Dreier       2008-04-16  3759  			size += seglen / 16;
225c7b1feef1b4 Roland Dreier       2007-05-08  3760  			break;
225c7b1feef1b4 Roland Dreier       2007-05-08  3761  
225c7b1feef1b4 Roland Dreier       2007-05-08  3762  		default:
225c7b1feef1b4 Roland Dreier       2007-05-08  3763  			break;
225c7b1feef1b4 Roland Dreier       2007-05-08  3764  		}
225c7b1feef1b4 Roland Dreier       2007-05-08  3765  
6e694ea33e7a7f Jack Morgenstein    2007-09-19  3766  		/*
6e694ea33e7a7f Jack Morgenstein    2007-09-19  3767  		 * Write data segments in reverse order, so as to
6e694ea33e7a7f Jack Morgenstein    2007-09-19  3768  		 * overwrite cacheline stamp last within each
6e694ea33e7a7f Jack Morgenstein    2007-09-19  3769  		 * cacheline.  This avoids issues with WQE
6e694ea33e7a7f Jack Morgenstein    2007-09-19  3770  		 * prefetching.
6e694ea33e7a7f Jack Morgenstein    2007-09-19  3771  		 */
225c7b1feef1b4 Roland Dreier       2007-05-08  3772  
6e694ea33e7a7f Jack Morgenstein    2007-09-19  3773  		dseg = wqe;
6e694ea33e7a7f Jack Morgenstein    2007-09-19  3774  		dseg += wr->num_sge - 1;
6e694ea33e7a7f Jack Morgenstein    2007-09-19  3775  		size += wr->num_sge * (sizeof (struct mlx4_wqe_data_seg) / 16);
225c7b1feef1b4 Roland Dreier       2007-05-08  3776  
225c7b1feef1b4 Roland Dreier       2007-05-08  3777  		/* Add one more inline data segment for ICRC for MLX sends */
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3778  		if (unlikely(qp->mlx4_ib_qp_type == MLX4_IB_QPT_SMI ||
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3779  			     qp->mlx4_ib_qp_type == MLX4_IB_QPT_GSI ||
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3780  			     qp->mlx4_ib_qp_type &
1ffeb2eb8be993 Jack Morgenstein    2012-08-03  3781  			     (MLX4_IB_QPT_PROXY_SMI_OWNER | MLX4_IB_QPT_TUN_SMI_OWNER))) {
6e694ea33e7a7f Jack Morgenstein    2007-09-19  3782  			set_mlx_icrc_seg(dseg + 1);
225c7b1feef1b4 Roland Dreier       2007-05-08  3783  			size += sizeof (struct mlx4_wqe_data_seg) / 16;
225c7b1feef1b4 Roland Dreier       2007-05-08  3784  		}
225c7b1feef1b4 Roland Dreier       2007-05-08  3785  
6e694ea33e7a7f Jack Morgenstein    2007-09-19  3786  		for (i = wr->num_sge - 1; i >= 0; --i, --dseg)
6e694ea33e7a7f Jack Morgenstein    2007-09-19  3787  			set_data_seg(dseg, wr->sg_list + i);
6e694ea33e7a7f Jack Morgenstein    2007-09-19  3788  
0fd7e1d8559f45 Roland Dreier       2009-01-16  3789  		/*
0fd7e1d8559f45 Roland Dreier       2009-01-16  3790  		 * Possibly overwrite stamping in cacheline with LSO
0fd7e1d8559f45 Roland Dreier       2009-01-16  3791  		 * segment only after making sure all data segments
0fd7e1d8559f45 Roland Dreier       2009-01-16  3792  		 * are written.
0fd7e1d8559f45 Roland Dreier       2009-01-16  3793  		 */
0fd7e1d8559f45 Roland Dreier       2009-01-16  3794  		wmb();
0fd7e1d8559f45 Roland Dreier       2009-01-16 @3795  		*lso_wqe = lso_hdr_sz;
0fd7e1d8559f45 Roland Dreier       2009-01-16  3796  
224e92e02a769b Brenden Blanco      2016-07-19  3797  		ctrl->qpn_vlan.fence_size = (wr->send_flags & IB_SEND_FENCE ?
225c7b1feef1b4 Roland Dreier       2007-05-08  3798  					     MLX4_WQE_CTRL_FENCE : 0) | size;
225c7b1feef1b4 Roland Dreier       2007-05-08  3799  
225c7b1feef1b4 Roland Dreier       2007-05-08  3800  		/*
225c7b1feef1b4 Roland Dreier       2007-05-08  3801  		 * Make sure descriptor is fully written before
225c7b1feef1b4 Roland Dreier       2007-05-08  3802  		 * setting ownership bit (because HW can start
225c7b1feef1b4 Roland Dreier       2007-05-08  3803  		 * executing as soon as we do).
225c7b1feef1b4 Roland Dreier       2007-05-08  3804  		 */
225c7b1feef1b4 Roland Dreier       2007-05-08  3805  		wmb();
225c7b1feef1b4 Roland Dreier       2007-05-08  3806  
59b0ed121297b5 Roland Dreier       2007-05-19  3807  		if (wr->opcode < 0 || wr->opcode >= ARRAY_SIZE(mlx4_ib_opcode)) {
4ba6b8eaa9d67d Eli Cohen           2012-02-09  3808  			*bad_wr = wr;
225c7b1feef1b4 Roland Dreier       2007-05-08  3809  			err = -EINVAL;
225c7b1feef1b4 Roland Dreier       2007-05-08  3810  			goto out;
225c7b1feef1b4 Roland Dreier       2007-05-08  3811  		}
225c7b1feef1b4 Roland Dreier       2007-05-08  3812  
225c7b1feef1b4 Roland Dreier       2007-05-08  3813  		ctrl->owner_opcode = mlx4_ib_opcode[wr->opcode] |
417608c20a4c83 Eli Cohen           2009-11-12  3814  			(ind & qp->sq.wqe_cnt ? cpu_to_be32(1 << 31) : 0) | blh;
0e6e74162164d9 Roland Dreier       2007-06-18  3815  
0e6e74162164d9 Roland Dreier       2007-06-18  3816  		/*
0e6e74162164d9 Roland Dreier       2007-06-18  3817  		 * We can improve latency by not stamping the last
0e6e74162164d9 Roland Dreier       2007-06-18  3818  		 * send queue WQE until after ringing the doorbell, so
0e6e74162164d9 Roland Dreier       2007-06-18  3819  		 * only stamp here if there are still more WQEs to post.
0e6e74162164d9 Roland Dreier       2007-06-18  3820  		 */
f95ccffc715bf0 Jack Morgenstein    2018-07-26  3821  		if (wr->next)
f95ccffc715bf0 Jack Morgenstein    2018-07-26  3822  			stamp_send_wqe(qp, ind + qp->sq_spare_wqes);
f95ccffc715bf0 Jack Morgenstein    2018-07-26  3823  		ind++;
225c7b1feef1b4 Roland Dreier       2007-05-08  3824  	}
225c7b1feef1b4 Roland Dreier       2007-05-08  3825  
225c7b1feef1b4 Roland Dreier       2007-05-08  3826  out:
225c7b1feef1b4 Roland Dreier       2007-05-08  3827  	if (likely(nreq)) {
225c7b1feef1b4 Roland Dreier       2007-05-08  3828  		qp->sq.head += nreq;
225c7b1feef1b4 Roland Dreier       2007-05-08  3829  
225c7b1feef1b4 Roland Dreier       2007-05-08  3830  		/*
225c7b1feef1b4 Roland Dreier       2007-05-08  3831  		 * Make sure that descriptors are written before
225c7b1feef1b4 Roland Dreier       2007-05-08  3832  		 * doorbell record.
225c7b1feef1b4 Roland Dreier       2007-05-08  3833  		 */
225c7b1feef1b4 Roland Dreier       2007-05-08  3834  		wmb();
225c7b1feef1b4 Roland Dreier       2007-05-08  3835  
97d82a48d7a7ec Sinan Kaya          2018-03-19  3836  		writel_relaxed(qp->doorbell_qpn,
225c7b1feef1b4 Roland Dreier       2007-05-08  3837  			to_mdev(ibqp->device)->uar_map + MLX4_SEND_DOORBELL);
225c7b1feef1b4 Roland Dreier       2007-05-08  3838  
f95ccffc715bf0 Jack Morgenstein    2018-07-26  3839  		stamp_send_wqe(qp, ind + qp->sq_spare_wqes - 1);
ea54b10c777300 Jack Morgenstein    2008-01-28  3840  
ea54b10c777300 Jack Morgenstein    2008-01-28  3841  		qp->sq_next_wqe = ind;
225c7b1feef1b4 Roland Dreier       2007-05-08  3842  	}
225c7b1feef1b4 Roland Dreier       2007-05-08  3843  
96db0e0335c798 Roland Dreier       2007-10-30  3844  	spin_unlock_irqrestore(&qp->sq.lock, flags);
225c7b1feef1b4 Roland Dreier       2007-05-08  3845  
225c7b1feef1b4 Roland Dreier       2007-05-08  3846  	return err;
225c7b1feef1b4 Roland Dreier       2007-05-08  3847  }
225c7b1feef1b4 Roland Dreier       2007-05-08  3848  

:::::: The code at line 3795 was first introduced by commit
:::::: 0fd7e1d8559f45a6838cee93ea49adc0c5bda8f0 IB/mlx4: Fix memory ordering problem when posting LSO sends

:::::: TO: Roland Dreier <rolandd@cisco.com>
:::::: CC: Roland Dreier <rolandd@cisco.com>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 37426 bytes --]

             reply	other threads:[~2021-07-08  2:08 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-08  2:08 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2020-09-13  0:29 drivers/infiniband/hw/mlx4/qp.c:3795 _mlx4_ib_post_send() error: uninitialized symbol 'lso_hdr_sz' kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202107081044.8wxrswP3-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.