Hi Yixian, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on linus/master] [also build test WARNING on v4.16-rc3 next-20180226] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Yixian-Liu/Support-rq-and-cq-record-doorbell/20180226-184438 reproduce: # apt-get install sparse make ARCH=x86_64 allmodconfig make C=1 CF=-D__CHECK_ENDIAN__ sparse warnings: (new ones prefixed by >>) drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1223:9: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1223:9: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1225:9: sparse: invalid assignment: &= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1225:9: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1225:9: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1225:9: sparse: invalid assignment: |= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1225:9: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1225:9: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1227:9: sparse: invalid assignment: &= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1227:9: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1227:9: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1227:9: sparse: invalid assignment: |= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1227:9: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1227:9: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1229:9: sparse: invalid assignment: &= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1229:9: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1229:9: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1229:9: sparse: invalid assignment: |= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1229:9: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1229:9: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1232:22: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned long val @@ got restunsigned long val @@ drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1232:22: expected unsigned long val drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1232:22: got restricted __le64 <noident> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1233:22: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned long val @@ got restunsigned long val @@ drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1233:22: expected unsigned long val drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1233:22: got restricted __le64 <noident> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1238:22: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int val @@ got restrunsigned int val @@ drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1238:22: expected unsigned int val drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1238:22: got restricted __le32 <noident> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1239:22: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int val @@ got restrunsigned int val @@ drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1239:22: expected unsigned int val drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1239:22: got restricted __le32 <noident> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1309:9: sparse: invalid assignment: &= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1309:9: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1309:9: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1309:9: sparse: invalid assignment: |= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1309:9: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1309:9: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1330:9: sparse: invalid assignment: &= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1330:9: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1330:9: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1330:9: sparse: invalid assignment: |= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1330:9: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1330:9: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1361:39: sparse: cast from restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1375:39: sparse: cast from restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1379:36: sparse: cast from restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1396:38: sparse: cast from restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1422:36: sparse: cast from restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1433:38: sparse: cast from restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1480:33: sparse: cast from restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1604:38: sparse: cast from restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1609:38: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 cqe_cur_blk_addr @@ got unsignrestricted __le32 cqe_cur_blk_addr @@ drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1609:38: expected restricted __le32 cqe_cur_blk_addr drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1609:38: got unsigned int <noident> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1611:33: sparse: cast from restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1613:9: sparse: cast from restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1622:38: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 cqe_nxt_blk_addr @@ got unsignrestricted __le32 cqe_nxt_blk_addr @@ drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1622:38: expected restricted __le32 cqe_nxt_blk_addr drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1622:38: got unsigned int <noident> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1623:9: sparse: cast from restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1636:28: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 cqe_ba @@ got unsignrestricted __le32 cqe_ba @@ drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1636:28: expected restricted __le32 cqe_ba drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1636:28: got unsigned int <noident> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1667:9: sparse: invalid assignment: &= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1667:9: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1667:9: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1667:9: sparse: invalid assignment: |= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1667:9: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1667:9: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1669:9: sparse: invalid assignment: &= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1669:9: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1669:9: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1669:9: sparse: invalid assignment: |= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1669:9: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1669:9: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1671:9: sparse: invalid assignment: &= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1671:9: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1671:9: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1671:9: sparse: invalid assignment: |= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1671:9: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1671:9: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1674:9: sparse: invalid assignment: &= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1674:9: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1674:9: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1674:9: sparse: invalid assignment: |= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1674:9: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1674:9: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1676:9: sparse: invalid assignment: &= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1676:9: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1676:9: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1676:9: sparse: invalid assignment: |= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1676:9: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1676:9: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1679:28: sparse: incorrect type in argument 1 (different base types) @@ expected restricted __be32 @@ got 2 @@ drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1679:28: expected restricted __be32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1679:28: got unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2273:36: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 qkey_xrcd @@ got unsigned intrestricted __le32 qkey_xrcd @@ drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2273:36: expected restricted __le32 qkey_xrcd drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2273:36: got unsigned int const qkey >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2292:36: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 rq_db_record_addr @@ got __le32 rq_db_record_addr @@ drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2292:36: expected restricted __le32 rq_db_record_addr drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2292:36: got unsigned long long drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2604:36: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 qkey_xrcd @@ got unsigned intrestricted __le32 qkey_xrcd @@ drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2604:36: expected restricted __le32 qkey_xrcd drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2604:36: got unsigned int const qkey drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2678:29: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 wqe_sge_ba @@ got unsignrestricted __le32 wqe_sge_ba @@ drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2678:29: expected restricted __le32 wqe_sge_ba drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2678:29: got unsigned int <noident> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2741:34: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 rq_cur_blk_addr @@ got unsignrestricted __le32 rq_cur_blk_addr @@ drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2741:34: expected restricted __le32 rq_cur_blk_addr drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2741:34: got unsigned int <noident> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2754:34: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 rq_nxt_blk_addr @@ got unsignrestricted __le32 rq_nxt_blk_addr @@ drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2754:34: expected restricted __le32 rq_nxt_blk_addr drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2754:34: got unsigned int <noident> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2778:26: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 trrl_ba @@ got unsignrestricted __le32 trrl_ba @@ drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2778:26: expected restricted __le32 trrl_ba drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2778:26: got unsigned int <noident> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2786:26: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 irrl_ba @@ got unsignrestricted __le32 irrl_ba @@ drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2786:26: expected restricted __le32 irrl_ba drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2786:26: got unsigned int <noident> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2797:9: sparse: cast from restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2965:34: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 sq_cur_blk_addr @@ got unsignrestricted __le32 sq_cur_blk_addr @@ drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2965:34: expected restricted __le32 sq_cur_blk_addr drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2965:34: got unsigned int <noident> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2976:38: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 sq_cur_sge_blk_addr @@ got sq_cur_sge_blk_addr @@ drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2976:38: expected restricted __le32 sq_cur_sge_blk_addr drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2976:38: got unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2991:37: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 rx_sq_cur_blk_addr @@ got unsignrestricted __le32 rx_sq_cur_blk_addr @@ drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2991:37: expected restricted __le32 rx_sq_cur_blk_addr drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2991:37: got unsigned int <noident> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3391:28: sparse: incorrect type in assignment (different base types) @@ expected unsigned char rnr_retry @@ got d char rnr_retry @@ drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3391:28: expected unsigned char rnr_retry drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3391:28: got restricted __le32 rq_rnr_timer drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3548:17: sparse: invalid assignment: &= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3548:17: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3548:17: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3548:17: sparse: invalid assignment: |= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3548:17: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3548:17: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3554:17: sparse: invalid assignment: &= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3554:17: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3554:17: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3554:17: sparse: invalid assignment: |= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3554:17: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3554:17: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3557:17: sparse: invalid assignment: &= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3557:17: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3557:17: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3557:17: sparse: invalid assignment: |= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3557:17: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3557:17: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3564:9: sparse: invalid assignment: &= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3564:9: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3564:9: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3564:9: sparse: invalid assignment: |= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3564:9: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3564:9: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3568:28: sparse: incorrect type in argument 1 (different base types) @@ expected restricted __be32 @@ got 2 @@ drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3568:28: expected restricted __be32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3568:28: got unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3579:20: sparse: cast to restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3610:20: sparse: cast to restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3647:15: sparse: cast to restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3681:15: sparse: cast to restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3737:17: sparse: cast to restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3756:30: sparse: cast to restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3855:20: sparse: cast to restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3874:23: sparse: cast to restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3922:13: sparse: cast to restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3925:17: sparse: invalid assignment: &= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3925:17: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3925:17: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3925:17: sparse: invalid assignment: |= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3925:17: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3925:17: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3928:17: sparse: invalid assignment: &= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3928:17: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3928:17: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3928:17: sparse: invalid assignment: |= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3928:17: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3928:17: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3932:20: sparse: cast to restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3935:17: sparse: invalid assignment: &= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3935:17: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3935:17: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3935:17: sparse: invalid assignment: |= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3935:17: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3935:17: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3938:17: sparse: invalid assignment: &= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3938:17: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3938:17: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3938:17: sparse: invalid assignment: |= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3938:17: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3938:17: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3942:20: sparse: cast to restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3945:17: sparse: invalid assignment: &= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3945:17: left side has type unsigned int drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3945:17: right side has type restricted __le32 drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3945:17: sparse: invalid assignment: |= drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3945:17: left side has type unsigned int vim +2292 drivers/infiniband/hw/hns/hns_roce_hw_v2.c 2176 2177 static void modify_qp_reset_to_init(struct ib_qp *ibqp, 2178 const struct ib_qp_attr *attr, 2179 int attr_mask, 2180 struct hns_roce_v2_qp_context *context, 2181 struct hns_roce_v2_qp_context *qpc_mask) 2182 { 2183 struct hns_roce_qp *hr_qp = to_hr_qp(ibqp); 2184 2185 /* 2186 * In v2 engine, software pass context and context mask to hardware 2187 * when modifying qp. If software need modify some fields in context, 2188 * we should set all bits of the relevant fields in context mask to 2189 * 0 at the same time, else set them to 0x1. 2190 */ 2191 roce_set_field(context->byte_4_sqpn_tst, V2_QPC_BYTE_4_TST_M, 2192 V2_QPC_BYTE_4_TST_S, to_hr_qp_type(hr_qp->ibqp.qp_type)); 2193 roce_set_field(qpc_mask->byte_4_sqpn_tst, V2_QPC_BYTE_4_TST_M, 2194 V2_QPC_BYTE_4_TST_S, 0); 2195 2196 if (ibqp->qp_type == IB_QPT_GSI) 2197 roce_set_field(context->byte_4_sqpn_tst, 2198 V2_QPC_BYTE_4_SGE_SHIFT_M, 2199 V2_QPC_BYTE_4_SGE_SHIFT_S, 2200 ilog2((unsigned int)hr_qp->sge.sge_cnt)); 2201 else 2202 roce_set_field(context->byte_4_sqpn_tst, 2203 V2_QPC_BYTE_4_SGE_SHIFT_M, 2204 V2_QPC_BYTE_4_SGE_SHIFT_S, 2205 hr_qp->sq.max_gs > 2 ? 2206 ilog2((unsigned int)hr_qp->sge.sge_cnt) : 0); 2207 2208 roce_set_field(qpc_mask->byte_4_sqpn_tst, V2_QPC_BYTE_4_SGE_SHIFT_M, 2209 V2_QPC_BYTE_4_SGE_SHIFT_S, 0); 2210 2211 roce_set_field(context->byte_4_sqpn_tst, V2_QPC_BYTE_4_SQPN_M, 2212 V2_QPC_BYTE_4_SQPN_S, hr_qp->qpn); 2213 roce_set_field(qpc_mask->byte_4_sqpn_tst, V2_QPC_BYTE_4_SQPN_M, 2214 V2_QPC_BYTE_4_SQPN_S, 0); 2215 2216 roce_set_field(context->byte_16_buf_ba_pg_sz, V2_QPC_BYTE_16_PD_M, 2217 V2_QPC_BYTE_16_PD_S, to_hr_pd(ibqp->pd)->pdn); 2218 roce_set_field(qpc_mask->byte_16_buf_ba_pg_sz, V2_QPC_BYTE_16_PD_M, 2219 V2_QPC_BYTE_16_PD_S, 0); 2220 2221 roce_set_field(context->byte_20_smac_sgid_idx, V2_QPC_BYTE_20_RQWS_M, 2222 V2_QPC_BYTE_20_RQWS_S, ilog2(hr_qp->rq.max_gs)); 2223 roce_set_field(qpc_mask->byte_20_smac_sgid_idx, V2_QPC_BYTE_20_RQWS_M, 2224 V2_QPC_BYTE_20_RQWS_S, 0); 2225 2226 roce_set_field(context->byte_20_smac_sgid_idx, 2227 V2_QPC_BYTE_20_SQ_SHIFT_M, V2_QPC_BYTE_20_SQ_SHIFT_S, 2228 ilog2((unsigned int)hr_qp->sq.wqe_cnt)); 2229 roce_set_field(qpc_mask->byte_20_smac_sgid_idx, 2230 V2_QPC_BYTE_20_SQ_SHIFT_M, V2_QPC_BYTE_20_SQ_SHIFT_S, 0); 2231 2232 roce_set_field(context->byte_20_smac_sgid_idx, 2233 V2_QPC_BYTE_20_RQ_SHIFT_M, V2_QPC_BYTE_20_RQ_SHIFT_S, 2234 ilog2((unsigned int)hr_qp->rq.wqe_cnt)); 2235 roce_set_field(qpc_mask->byte_20_smac_sgid_idx, 2236 V2_QPC_BYTE_20_RQ_SHIFT_M, V2_QPC_BYTE_20_RQ_SHIFT_S, 0); 2237 2238 /* No VLAN need to set 0xFFF */ 2239 roce_set_field(context->byte_24_mtu_tc, V2_QPC_BYTE_24_VLAN_IDX_M, 2240 V2_QPC_BYTE_24_VLAN_IDX_S, 0xfff); 2241 roce_set_field(qpc_mask->byte_24_mtu_tc, V2_QPC_BYTE_24_VLAN_IDX_M, 2242 V2_QPC_BYTE_24_VLAN_IDX_S, 0); 2243 2244 /* 2245 * Set some fields in context to zero, Because the default values 2246 * of all fields in context are zero, we need not set them to 0 again. 2247 * but we should set the relevant fields of context mask to 0. 2248 */ 2249 roce_set_bit(qpc_mask->byte_56_dqpn_err, V2_QPC_BYTE_56_SQ_TX_ERR_S, 0); 2250 roce_set_bit(qpc_mask->byte_56_dqpn_err, V2_QPC_BYTE_56_SQ_RX_ERR_S, 0); 2251 roce_set_bit(qpc_mask->byte_56_dqpn_err, V2_QPC_BYTE_56_RQ_TX_ERR_S, 0); 2252 roce_set_bit(qpc_mask->byte_56_dqpn_err, V2_QPC_BYTE_56_RQ_RX_ERR_S, 0); 2253 2254 roce_set_field(qpc_mask->byte_60_qpst_mapid, V2_QPC_BYTE_60_MAPID_M, 2255 V2_QPC_BYTE_60_MAPID_S, 0); 2256 2257 roce_set_bit(qpc_mask->byte_60_qpst_mapid, 2258 V2_QPC_BYTE_60_INNER_MAP_IND_S, 0); 2259 roce_set_bit(qpc_mask->byte_60_qpst_mapid, V2_QPC_BYTE_60_SQ_MAP_IND_S, 2260 0); 2261 roce_set_bit(qpc_mask->byte_60_qpst_mapid, V2_QPC_BYTE_60_RQ_MAP_IND_S, 2262 0); 2263 roce_set_bit(qpc_mask->byte_60_qpst_mapid, V2_QPC_BYTE_60_EXT_MAP_IND_S, 2264 0); 2265 roce_set_bit(qpc_mask->byte_60_qpst_mapid, V2_QPC_BYTE_60_SQ_RLS_IND_S, 2266 0); 2267 roce_set_bit(qpc_mask->byte_60_qpst_mapid, V2_QPC_BYTE_60_SQ_EXT_IND_S, 2268 0); 2269 roce_set_bit(qpc_mask->byte_28_at_fl, V2_QPC_BYTE_28_CNP_TX_FLAG_S, 0); 2270 roce_set_bit(qpc_mask->byte_28_at_fl, V2_QPC_BYTE_28_CE_FLAG_S, 0); 2271 2272 if (attr_mask & IB_QP_QKEY) { 2273 context->qkey_xrcd = attr->qkey; 2274 qpc_mask->qkey_xrcd = 0; 2275 hr_qp->qkey = attr->qkey; 2276 } 2277 2278 if (hr_qp->rdb_en) { 2279 roce_set_bit(context->byte_68_rq_db, 2280 V2_QPC_BYTE_68_RQ_RECORD_EN_S, 1); 2281 roce_set_bit(qpc_mask->byte_68_rq_db, 2282 V2_QPC_BYTE_68_RQ_RECORD_EN_S, 0); 2283 } 2284 2285 roce_set_field(context->byte_68_rq_db, 2286 V2_QPC_BYTE_68_RQ_DB_RECORD_ADDR_M, 2287 V2_QPC_BYTE_68_RQ_DB_RECORD_ADDR_S, 2288 ((u32)hr_qp->rdb.dma) >> 1); 2289 roce_set_field(qpc_mask->byte_68_rq_db, 2290 V2_QPC_BYTE_68_RQ_DB_RECORD_ADDR_M, 2291 V2_QPC_BYTE_68_RQ_DB_RECORD_ADDR_S, 0); > 2292 context->rq_db_record_addr = hr_qp->rdb.dma >> 32; 2293 qpc_mask->rq_db_record_addr = 0; 2294 2295 roce_set_bit(context->byte_76_srqn_op_en, V2_QPC_BYTE_76_RQIE_S, 1); 2296 roce_set_bit(qpc_mask->byte_76_srqn_op_en, V2_QPC_BYTE_76_RQIE_S, 0); 2297 2298 roce_set_field(context->byte_80_rnr_rx_cqn, V2_QPC_BYTE_80_RX_CQN_M, 2299 V2_QPC_BYTE_80_RX_CQN_S, to_hr_cq(ibqp->recv_cq)->cqn); 2300 roce_set_field(qpc_mask->byte_80_rnr_rx_cqn, V2_QPC_BYTE_80_RX_CQN_M, 2301 V2_QPC_BYTE_80_RX_CQN_S, 0); 2302 if (ibqp->srq) { 2303 roce_set_field(context->byte_76_srqn_op_en, 2304 V2_QPC_BYTE_76_SRQN_M, V2_QPC_BYTE_76_SRQN_S, 2305 to_hr_srq(ibqp->srq)->srqn); 2306 roce_set_field(qpc_mask->byte_76_srqn_op_en, 2307 V2_QPC_BYTE_76_SRQN_M, V2_QPC_BYTE_76_SRQN_S, 0); 2308 roce_set_bit(context->byte_76_srqn_op_en, 2309 V2_QPC_BYTE_76_SRQ_EN_S, 1); 2310 roce_set_bit(qpc_mask->byte_76_srqn_op_en, 2311 V2_QPC_BYTE_76_SRQ_EN_S, 0); 2312 } 2313 2314 roce_set_field(qpc_mask->byte_84_rq_ci_pi, 2315 V2_QPC_BYTE_84_RQ_PRODUCER_IDX_M, 2316 V2_QPC_BYTE_84_RQ_PRODUCER_IDX_S, 0); 2317 roce_set_field(qpc_mask->byte_84_rq_ci_pi, 2318 V2_QPC_BYTE_84_RQ_CONSUMER_IDX_M, 2319 V2_QPC_BYTE_84_RQ_CONSUMER_IDX_S, 0); 2320 2321 roce_set_field(qpc_mask->byte_92_srq_info, V2_QPC_BYTE_92_SRQ_INFO_M, 2322 V2_QPC_BYTE_92_SRQ_INFO_S, 0); 2323 2324 roce_set_field(qpc_mask->byte_96_rx_reqmsn, V2_QPC_BYTE_96_RX_REQ_MSN_M, 2325 V2_QPC_BYTE_96_RX_REQ_MSN_S, 0); 2326 2327 roce_set_field(qpc_mask->byte_104_rq_sge, 2328 V2_QPC_BYTE_104_RQ_CUR_WQE_SGE_NUM_M, 2329 V2_QPC_BYTE_104_RQ_CUR_WQE_SGE_NUM_S, 0); 2330 2331 roce_set_bit(qpc_mask->byte_108_rx_reqepsn, 2332 V2_QPC_BYTE_108_RX_REQ_PSN_ERR_S, 0); 2333 roce_set_field(qpc_mask->byte_108_rx_reqepsn, 2334 V2_QPC_BYTE_108_RX_REQ_LAST_OPTYPE_M, 2335 V2_QPC_BYTE_108_RX_REQ_LAST_OPTYPE_S, 0); 2336 roce_set_bit(qpc_mask->byte_108_rx_reqepsn, 2337 V2_QPC_BYTE_108_RX_REQ_RNR_S, 0); 2338 2339 qpc_mask->rq_rnr_timer = 0; 2340 qpc_mask->rx_msg_len = 0; 2341 qpc_mask->rx_rkey_pkt_info = 0; 2342 qpc_mask->rx_va = 0; 2343 2344 roce_set_field(qpc_mask->byte_132_trrl, V2_QPC_BYTE_132_TRRL_HEAD_MAX_M, 2345 V2_QPC_BYTE_132_TRRL_HEAD_MAX_S, 0); 2346 roce_set_field(qpc_mask->byte_132_trrl, V2_QPC_BYTE_132_TRRL_TAIL_MAX_M, 2347 V2_QPC_BYTE_132_TRRL_TAIL_MAX_S, 0); 2348 2349 roce_set_bit(qpc_mask->byte_140_raq, V2_QPC_BYTE_140_RSVD_RAQ_MAP_S, 0); 2350 roce_set_field(qpc_mask->byte_140_raq, V2_QPC_BYTE_140_RAQ_TRRL_HEAD_M, 2351 V2_QPC_BYTE_140_RAQ_TRRL_HEAD_S, 0); 2352 roce_set_field(qpc_mask->byte_140_raq, V2_QPC_BYTE_140_RAQ_TRRL_TAIL_M, 2353 V2_QPC_BYTE_140_RAQ_TRRL_TAIL_S, 0); 2354 2355 roce_set_field(qpc_mask->byte_144_raq, 2356 V2_QPC_BYTE_144_RAQ_RTY_INI_PSN_M, 2357 V2_QPC_BYTE_144_RAQ_RTY_INI_PSN_S, 0); 2358 roce_set_bit(qpc_mask->byte_144_raq, V2_QPC_BYTE_144_RAQ_RTY_INI_IND_S, 2359 0); 2360 roce_set_field(qpc_mask->byte_144_raq, V2_QPC_BYTE_144_RAQ_CREDIT_M, 2361 V2_QPC_BYTE_144_RAQ_CREDIT_S, 0); 2362 roce_set_bit(qpc_mask->byte_144_raq, V2_QPC_BYTE_144_RESP_RTY_FLG_S, 0); 2363 2364 roce_set_field(qpc_mask->byte_148_raq, V2_QPC_BYTE_148_RQ_MSN_M, 2365 V2_QPC_BYTE_148_RQ_MSN_S, 0); 2366 roce_set_field(qpc_mask->byte_148_raq, V2_QPC_BYTE_148_RAQ_SYNDROME_M, 2367 V2_QPC_BYTE_148_RAQ_SYNDROME_S, 0); 2368 2369 roce_set_field(qpc_mask->byte_152_raq, V2_QPC_BYTE_152_RAQ_PSN_M, 2370 V2_QPC_BYTE_152_RAQ_PSN_S, 0); 2371 roce_set_field(qpc_mask->byte_152_raq, 2372 V2_QPC_BYTE_152_RAQ_TRRL_RTY_HEAD_M, 2373 V2_QPC_BYTE_152_RAQ_TRRL_RTY_HEAD_S, 0); 2374 2375 roce_set_field(qpc_mask->byte_156_raq, V2_QPC_BYTE_156_RAQ_USE_PKTN_M, 2376 V2_QPC_BYTE_156_RAQ_USE_PKTN_S, 0); 2377 2378 roce_set_field(qpc_mask->byte_160_sq_ci_pi, 2379 V2_QPC_BYTE_160_SQ_PRODUCER_IDX_M, 2380 V2_QPC_BYTE_160_SQ_PRODUCER_IDX_S, 0); 2381 roce_set_field(qpc_mask->byte_160_sq_ci_pi, 2382 V2_QPC_BYTE_160_SQ_CONSUMER_IDX_M, 2383 V2_QPC_BYTE_160_SQ_CONSUMER_IDX_S, 0); 2384 2385 roce_set_field(context->byte_168_irrl_idx, 2386 V2_QPC_BYTE_168_SQ_SHIFT_BAK_M, 2387 V2_QPC_BYTE_168_SQ_SHIFT_BAK_S, 2388 ilog2((unsigned int)hr_qp->sq.wqe_cnt)); 2389 roce_set_field(qpc_mask->byte_168_irrl_idx, 2390 V2_QPC_BYTE_168_SQ_SHIFT_BAK_M, 2391 V2_QPC_BYTE_168_SQ_SHIFT_BAK_S, 0); 2392 2393 roce_set_bit(qpc_mask->byte_168_irrl_idx, 2394 V2_QPC_BYTE_168_MSG_RTY_LP_FLG_S, 0); 2395 roce_set_bit(qpc_mask->byte_168_irrl_idx, 2396 V2_QPC_BYTE_168_SQ_INVLD_FLG_S, 0); 2397 roce_set_field(qpc_mask->byte_168_irrl_idx, 2398 V2_QPC_BYTE_168_IRRL_IDX_LSB_M, 2399 V2_QPC_BYTE_168_IRRL_IDX_LSB_S, 0); 2400 2401 roce_set_field(context->byte_172_sq_psn, V2_QPC_BYTE_172_ACK_REQ_FREQ_M, 2402 V2_QPC_BYTE_172_ACK_REQ_FREQ_S, 4); 2403 roce_set_field(qpc_mask->byte_172_sq_psn, 2404 V2_QPC_BYTE_172_ACK_REQ_FREQ_M, 2405 V2_QPC_BYTE_172_ACK_REQ_FREQ_S, 0); 2406 2407 roce_set_bit(qpc_mask->byte_172_sq_psn, V2_QPC_BYTE_172_MSG_RNR_FLG_S, 2408 0); 2409 2410 roce_set_field(qpc_mask->byte_176_msg_pktn, 2411 V2_QPC_BYTE_176_MSG_USE_PKTN_M, 2412 V2_QPC_BYTE_176_MSG_USE_PKTN_S, 0); 2413 roce_set_field(qpc_mask->byte_176_msg_pktn, 2414 V2_QPC_BYTE_176_IRRL_HEAD_PRE_M, 2415 V2_QPC_BYTE_176_IRRL_HEAD_PRE_S, 0); 2416 2417 roce_set_field(qpc_mask->byte_184_irrl_idx, 2418 V2_QPC_BYTE_184_IRRL_IDX_MSB_M, 2419 V2_QPC_BYTE_184_IRRL_IDX_MSB_S, 0); 2420 2421 qpc_mask->cur_sge_offset = 0; 2422 2423 roce_set_field(qpc_mask->byte_192_ext_sge, 2424 V2_QPC_BYTE_192_CUR_SGE_IDX_M, 2425 V2_QPC_BYTE_192_CUR_SGE_IDX_S, 0); 2426 roce_set_field(qpc_mask->byte_192_ext_sge, 2427 V2_QPC_BYTE_192_EXT_SGE_NUM_LEFT_M, 2428 V2_QPC_BYTE_192_EXT_SGE_NUM_LEFT_S, 0); 2429 2430 roce_set_field(qpc_mask->byte_196_sq_psn, V2_QPC_BYTE_196_IRRL_HEAD_M, 2431 V2_QPC_BYTE_196_IRRL_HEAD_S, 0); 2432 2433 roce_set_field(qpc_mask->byte_200_sq_max, V2_QPC_BYTE_200_SQ_MAX_IDX_M, 2434 V2_QPC_BYTE_200_SQ_MAX_IDX_S, 0); 2435 roce_set_field(qpc_mask->byte_200_sq_max, 2436 V2_QPC_BYTE_200_LCL_OPERATED_CNT_M, 2437 V2_QPC_BYTE_200_LCL_OPERATED_CNT_S, 0); 2438 2439 roce_set_bit(qpc_mask->byte_208_irrl, V2_QPC_BYTE_208_PKT_RNR_FLG_S, 0); 2440 roce_set_bit(qpc_mask->byte_208_irrl, V2_QPC_BYTE_208_PKT_RTY_FLG_S, 0); 2441 2442 roce_set_field(qpc_mask->byte_212_lsn, V2_QPC_BYTE_212_CHECK_FLG_M, 2443 V2_QPC_BYTE_212_CHECK_FLG_S, 0); 2444 2445 qpc_mask->sq_timer = 0; 2446 2447 roce_set_field(qpc_mask->byte_220_retry_psn_msn, 2448 V2_QPC_BYTE_220_RETRY_MSG_MSN_M, 2449 V2_QPC_BYTE_220_RETRY_MSG_MSN_S, 0); 2450 roce_set_field(qpc_mask->byte_232_irrl_sge, 2451 V2_QPC_BYTE_232_IRRL_SGE_IDX_M, 2452 V2_QPC_BYTE_232_IRRL_SGE_IDX_S, 0); 2453 2454 qpc_mask->irrl_cur_sge_offset = 0; 2455 2456 roce_set_field(qpc_mask->byte_240_irrl_tail, 2457 V2_QPC_BYTE_240_IRRL_TAIL_REAL_M, 2458 V2_QPC_BYTE_240_IRRL_TAIL_REAL_S, 0); 2459 roce_set_field(qpc_mask->byte_240_irrl_tail, 2460 V2_QPC_BYTE_240_IRRL_TAIL_RD_M, 2461 V2_QPC_BYTE_240_IRRL_TAIL_RD_S, 0); 2462 roce_set_field(qpc_mask->byte_240_irrl_tail, 2463 V2_QPC_BYTE_240_RX_ACK_MSN_M, 2464 V2_QPC_BYTE_240_RX_ACK_MSN_S, 0); 2465 2466 roce_set_field(qpc_mask->byte_248_ack_psn, V2_QPC_BYTE_248_IRRL_PSN_M, 2467 V2_QPC_BYTE_248_IRRL_PSN_S, 0); 2468 roce_set_bit(qpc_mask->byte_248_ack_psn, V2_QPC_BYTE_248_ACK_PSN_ERR_S, 2469 0); 2470 roce_set_field(qpc_mask->byte_248_ack_psn, 2471 V2_QPC_BYTE_248_ACK_LAST_OPTYPE_M, 2472 V2_QPC_BYTE_248_ACK_LAST_OPTYPE_S, 0); 2473 roce_set_bit(qpc_mask->byte_248_ack_psn, V2_QPC_BYTE_248_IRRL_PSN_VLD_S, 2474 0); 2475 roce_set_bit(qpc_mask->byte_248_ack_psn, 2476 V2_QPC_BYTE_248_RNR_RETRY_FLAG_S, 0); 2477 roce_set_bit(qpc_mask->byte_248_ack_psn, V2_QPC_BYTE_248_CQ_ERR_IND_S, 2478 0); 2479 2480 hr_qp->access_flags = attr->qp_access_flags; 2481 hr_qp->pkey_index = attr->pkey_index; 2482 roce_set_field(context->byte_252_err_txcqn, V2_QPC_BYTE_252_TX_CQN_M, 2483 V2_QPC_BYTE_252_TX_CQN_S, to_hr_cq(ibqp->send_cq)->cqn); 2484 roce_set_field(qpc_mask->byte_252_err_txcqn, V2_QPC_BYTE_252_TX_CQN_M, 2485 V2_QPC_BYTE_252_TX_CQN_S, 0); 2486 2487 roce_set_field(qpc_mask->byte_252_err_txcqn, V2_QPC_BYTE_252_ERR_TYPE_M, 2488 V2_QPC_BYTE_252_ERR_TYPE_S, 0); 2489 2490 roce_set_field(qpc_mask->byte_256_sqflush_rqcqe, 2491 V2_QPC_BYTE_256_RQ_CQE_IDX_M, 2492 V2_QPC_BYTE_256_RQ_CQE_IDX_S, 0); 2493 roce_set_field(qpc_mask->byte_256_sqflush_rqcqe, 2494 V2_QPC_BYTE_256_SQ_FLUSH_IDX_M, 2495 V2_QPC_BYTE_256_SQ_FLUSH_IDX_S, 0); 2496 } 2497 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html