在 2018/7/4 5:49, Jason Gunthorpe 写道: > Lijun, > > I thought you already sent a sparse cleanup for this driver? It > certainly looks wrong to bitshit and mask a le marked value. > > I think you'll need to resend this series with the sparse warnings > fixed. > > Thanks, > Jason > OK, Maybe our private branch miss the check。 I will do it and must check by sparse in our private branch after this。 > On Tue, Jul 03, 2018 at 06:52:39PM +0800, kbuild test robot wrote: >> Hi Lijun, >> >> I love your patch! Perhaps something to improve: >> >> [auto build test WARNING on rdma/for-next] >> [also build test WARNING on v4.18-rc3 next-20180702] >> [cannot apply to linus/master linux-sof-driver/master] >> [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/Lijun-Ou/Four-cmd-queues-support-for-hip08/20180703-104144 >> base: https://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma.git for-next >> 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:522:37: sparse: incorrect type in argument 1 (different base types) @@ expected restricted __be32 [usertype] *val @@ got restricted __be32 [usertype] *val @@ >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:522:37: expected restricted __be32 [usertype] *val >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:522:37: got restricted __le32 [usertype] *<noident> >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:843:18: sparse: restricted __le16 degrades to integer >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:860:34: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [unsigned] [usertype] desc_ret @@ got short [unsigned] [usertype] desc_ret @@ >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:860:34: expected unsigned short [unsigned] [usertype] desc_ret >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:860:34: got restricted __le16 [usertype] retval >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:899:26: sparse: cast to restricted __le32 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:899:26: sparse: cast from restricted __le16 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:900:29: sparse: cast to restricted __le32 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:900:29: sparse: cast from restricted __le16 >>>> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1272:44: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] base_addr_l @@ got __le32 [usertype] base_addr_l @@ >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1272:44: expected restricted __le32 [usertype] base_addr_l >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1272:44: got unsigned long long >>>> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1273:44: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] base_addr_h @@ got __le32 [usertype] base_addr_h @@ >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1273:44: expected restricted __le32 [usertype] base_addr_h >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1273:44: got unsigned long long >>>> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1283:42: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] head_ba_l @@ got unsignrestricted __le32 [usertype] head_ba_l @@ >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1283:42: expected restricted __le32 [usertype] head_ba_l >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1283:42: got unsigned int [unsigned] [usertype] blk_ba0 >>>> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1284:49: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] head_ba_h_nxtptr @@ got unsignrestricted __le32 [usertype] head_ba_h_nxtptr @@ >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1284:49: expected restricted __le32 [usertype] head_ba_h_nxtptr >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1284:49: got unsigned int [unsigned] [usertype] blk_ba1_nxt_ptr >>>> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1289:42: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] tail_ba_l @@ got unsignrestricted __le32 [usertype] tail_ba_l @@ >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1289:42: expected restricted __le32 [usertype] tail_ba_l >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1289:42: got unsigned int [unsigned] [usertype] blk_ba0 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1335:18: sparse: expression using sizeof(void) >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1335:18: sparse: expression using sizeof(void) >> include/linux/slab.h:631:13: sparse: undefined identifier '__builtin_mul_overflow' >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1465:9: sparse: invalid assignment: &= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1465:9: sparse: invalid assignment: |= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1467:9: sparse: invalid assignment: &= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1467:9: sparse: invalid assignment: |= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1469:9: sparse: invalid assignment: &= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1469:9: sparse: invalid assignment: |= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1471:9: sparse: invalid assignment: &= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1471:9: sparse: invalid assignment: |= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1551:9: sparse: invalid assignment: &= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1551:9: sparse: invalid assignment: |= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1572:9: sparse: invalid assignment: &= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1572:9: sparse: invalid assignment: |= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1604:39: sparse: cast from restricted __le32 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1618:39: sparse: cast from restricted __le32 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1624:36: sparse: cast from restricted __le32 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1641:38: sparse: cast from restricted __le32 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1667:36: sparse: cast from restricted __le32 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1679:38: sparse: cast from restricted __le32 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1726:33: sparse: cast from restricted __le32 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1833:38: sparse: cast from restricted __le32 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1838:38: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] cqe_cur_blk_addr @@ got unsignrestricted __le32 [usertype] cqe_cur_blk_addr @@ >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1840:33: sparse: cast from restricted __le32 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1842:9: sparse: cast from restricted __le32 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1851:38: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] cqe_nxt_blk_addr @@ got unsignrestricted __le32 [usertype] cqe_nxt_blk_addr @@ >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1852:9: sparse: cast from restricted __le32 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1865:28: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] cqe_ba @@ got unsignrestricted __le32 [usertype] cqe_ba @@ >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1878:36: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] db_record_addr @@ got __le32 [usertype] db_record_addr @@ >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1906:9: sparse: invalid assignment: &= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1906:9: sparse: invalid assignment: |= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1908:9: sparse: invalid assignment: &= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1908:9: sparse: invalid assignment: |= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1910:9: sparse: invalid assignment: &= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1910:9: sparse: invalid assignment: |= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1913:9: sparse: invalid assignment: &= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1913:9: sparse: invalid assignment: |= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1915:9: sparse: invalid assignment: &= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1915:9: sparse: invalid assignment: |= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1918:28: sparse: incorrect type in argument 1 (different base types) @@ expected restricted __be32 [usertype] *val @@ got 2 [usertype] *val @@ >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1942:24: sparse: expression using sizeof(void) >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:1942:24: sparse: expression using sizeof(void) >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2513:36: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] qkey_xrcd @@ got unsigned intrestricted __le32 [usertype] qkey_xrcd @@ >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2532:36: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] rq_db_record_addr @@ got __le32 [usertype] rq_db_record_addr @@ >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2845:36: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] qkey_xrcd @@ got unsigned intrestricted __le32 [usertype] qkey_xrcd @@ >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2920:29: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] wqe_sge_ba @@ got unsignrestricted __le32 [usertype] wqe_sge_ba @@ >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2983:34: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] rq_cur_blk_addr @@ got unsignrestricted __le32 [usertype] rq_cur_blk_addr @@ >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:2996:34: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] rq_nxt_blk_addr @@ got unsignrestricted __le32 [usertype] rq_nxt_blk_addr @@ >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3020:26: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] trrl_ba @@ got unsignrestricted __le32 [usertype] trrl_ba @@ >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3028:26: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] irrl_ba @@ got unsignrestricted __le32 [usertype] irrl_ba @@ >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3039:9: sparse: cast from restricted __le32 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3207:34: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] sq_cur_blk_addr @@ got unsignrestricted __le32 [usertype] sq_cur_blk_addr @@ >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3218:38: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] sq_cur_sge_blk_addr @@ got [usertype] sq_cur_sge_blk_addr @@ >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3233:37: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] rx_sq_cur_blk_addr @@ got unsignrestricted __le32 [usertype] rx_sq_cur_blk_addr @@ >> include/linux/slab.h:631:13: sparse: not a function <noident> >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3634:28: sparse: incorrect type in assignment (different base types) @@ expected unsigned char [unsigned] [usertype] rnr_retry @@ got d char [unsigned] [usertype] rnr_retry @@ >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3634:28: expected unsigned char [unsigned] [usertype] rnr_retry >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3634:28: got restricted __le32 [usertype] rq_rnr_timer >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3793:17: sparse: invalid assignment: &= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3793:17: left side has type unsigned int >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3793:17: right side has type restricted __le32 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3793:17: sparse: invalid assignment: |= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3793:17: left side has type unsigned int >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3793:17: right side has type restricted __le32 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3799:17: sparse: invalid assignment: &= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3799:17: left side has type unsigned int >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3799:17: right side has type restricted __le32 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3799:17: sparse: invalid assignment: |= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3799:17: left side has type unsigned int >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3799:17: right side has type restricted __le32 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3802:17: sparse: invalid assignment: &= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3802:17: left side has type unsigned int >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3802:17: right side has type restricted __le32 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3802:17: sparse: invalid assignment: |= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3802:17: left side has type unsigned int >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3802:17: right side has type restricted __le32 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3809:9: sparse: invalid assignment: &= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3809:9: left side has type unsigned int >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3809:9: right side has type restricted __le32 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3809:9: sparse: invalid assignment: |= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3809:9: left side has type unsigned int >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3809:9: right side has type restricted __le32 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3813:28: sparse: incorrect type in argument 1 (different base types) @@ expected restricted __be32 [usertype] *val @@ got 2 [usertype] *val @@ >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3813:28: expected restricted __be32 [usertype] *val >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3813:28: got unsigned int *<noident> >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3824:20: 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:3892:15: sparse: cast to restricted __le32 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3926:15: sparse: cast to restricted __le32 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:3982:17: sparse: cast to restricted __le32 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:4001:30: sparse: cast to restricted __le32 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:4100:20: sparse: cast to restricted __le32 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:4119:23: sparse: cast to restricted __le32 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:4167:13: sparse: cast to restricted __le32 >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:4170:17: sparse: invalid assignment: &= >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:4170:17: left side has type unsigned int >> drivers/infiniband/hw/hns/hns_roce_hw_v2.c:4170:17: right side has type restricted __le32 >> >> vim +1272 drivers/infiniband/hw/hns/hns_roce_hw_v2.c >> >> 1233 >> 1234 static int hns_roce_config_link_table(struct hns_roce_dev *hr_dev, >> 1235 enum hns_roce_link_table_type type) >> 1236 { >> 1237 struct hns_roce_cmq_desc desc[2]; >> 1238 struct hns_roce_cfg_llm_a *req_a = >> 1239 (struct hns_roce_cfg_llm_a *)desc[0].data; >> 1240 struct hns_roce_cfg_llm_b *req_b = >> 1241 (struct hns_roce_cfg_llm_b *)desc[1].data; >> 1242 struct hns_roce_v2_priv *priv = hr_dev->priv; >> 1243 struct hns_roce_link_table *link_tbl; >> 1244 struct hns_roce_link_table_entry *entry; >> 1245 enum hns_roce_opcode_type opcode; >> 1246 u32 page_num; >> 1247 int i; >> 1248 >> 1249 switch (type) { >> 1250 case TSQ_LINK_TABLE: >> 1251 link_tbl = &priv->tsq; >> 1252 opcode = HNS_ROCE_OPC_CFG_EXT_LLM; >> 1253 break; >> 1254 default: >> 1255 return -EINVAL; >> 1256 } >> 1257 >> 1258 page_num = link_tbl->npages; >> 1259 entry = link_tbl->table.buf; >> 1260 memset(req_a, 0, sizeof(*req_a)); >> 1261 memset(req_b, 0, sizeof(*req_b)); >> 1262 >> 1263 for (i = 0; i < 2; i++) { >> 1264 hns_roce_cmq_setup_basic_desc(&desc[i], opcode, false); >> 1265 >> 1266 if (i == 0) >> 1267 desc[i].flag |= cpu_to_le16(HNS_ROCE_CMD_FLAG_NEXT); >> 1268 else >> 1269 desc[i].flag &= ~cpu_to_le16(HNS_ROCE_CMD_FLAG_NEXT); >> 1270 >> 1271 if (i == 0) { >>> 1272 req_a->base_addr_l = link_tbl->table.map & 0xffffffff; >>> 1273 req_a->base_addr_h = (link_tbl->table.map >> 32) & >> 1274 0xffffffff; >> 1275 roce_set_field(req_a->depth_pgsz_init_en, >> 1276 CFG_LLM_QUE_DEPTH_M, >> 1277 CFG_LLM_QUE_DEPTH_S, >> 1278 link_tbl->npages); >> 1279 roce_set_field(req_a->depth_pgsz_init_en, >> 1280 CFG_LLM_QUE_PGSZ_M, >> 1281 CFG_LLM_QUE_PGSZ_S, >> 1282 link_tbl->pg_sz); >>> 1283 req_a->head_ba_l = entry[0].blk_ba0; >>> 1284 req_a->head_ba_h_nxtptr = entry[0].blk_ba1_nxt_ptr; >> 1285 roce_set_field(req_a->head_ptr, >> 1286 CFG_LLM_HEAD_PTR_M, >> 1287 CFG_LLM_HEAD_PTR_S, 0); >> 1288 } else { >>> 1289 req_b->tail_ba_l = entry[page_num - 1].blk_ba0; >> 1290 roce_set_field(req_b->tail_ba_h, >> 1291 CFG_LLM_TAIL_BA_H_M, >> 1292 CFG_LLM_TAIL_BA_H_S, >> 1293 entry[page_num - 1].blk_ba1_nxt_ptr & >> 1294 HNS_ROCE_LINK_TABLE_BA1_M); >> 1295 roce_set_field(req_b->tail_ptr, >> 1296 CFG_LLM_TAIL_PTR_M, >> 1297 CFG_LLM_TAIL_PTR_S, >> 1298 (entry[page_num - 2].blk_ba1_nxt_ptr & >> 1299 HNS_ROCE_LINK_TABLE_NXT_PTR_M) >> >> 1300 HNS_ROCE_LINK_TABLE_NXT_PTR_S); >> 1301 } >> 1302 } >> 1303 roce_set_field(req_a->depth_pgsz_init_en, >> 1304 CFG_LLM_INIT_EN_M, CFG_LLM_INIT_EN_S, 1); >> 1305 >> 1306 return hns_roce_cmq_send(hr_dev, desc, 2); >> 1307 } >> 1308 >> >> 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 > > . > -- 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