Hi Huacai, First bad commit (maybe != root cause): tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 041fae9c105ae342a4245cf1e0dc56a23fbb9d3c commit: 57fc7323a8e7c2e7c1d5795ab63cb3ffea3cfdfb LoongArch: Add PCI controller support date: 4 months ago config: loongarch-randconfig-s031-20221215 compiler: loongarch64-linux-gcc (GCC) 12.1.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # apt-get install sparse # sparse version: v0.6.4-39-gce1a6720-dirty # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=57fc7323a8e7c2e7c1d5795ab63cb3ffea3cfdfb git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout 57fc7323a8e7c2e7c1d5795ab63cb3ffea3cfdfb # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=loongarch SHELL=/bin/bash drivers/infiniband/hw/qedr/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot sparse warnings: (new ones prefixed by >>) >> drivers/infiniband/hw/qedr/qedr_roce_cm.c:113:17: sparse: sparse: cast to restricted __be32 >> drivers/infiniband/hw/qedr/qedr_roce_cm.c:115:17: sparse: sparse: cast to restricted __be16 >> drivers/infiniband/hw/qedr/qedr_roce_cm.c:448:23: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __be16 [usertype] pkey @@ got int @@ drivers/infiniband/hw/qedr/qedr_roce_cm.c:448:23: sparse: expected restricted __be16 [usertype] pkey drivers/infiniband/hw/qedr/qedr_roce_cm.c:448:23: sparse: got int >> drivers/infiniband/hw/qedr/qedr_roce_cm.c:460:37: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __be32 [usertype] flow_label @@ got unsigned int const [usertype] flow_label @@ drivers/infiniband/hw/qedr/qedr_roce_cm.c:460:37: sparse: expected restricted __be32 [usertype] flow_label drivers/infiniband/hw/qedr/qedr_roce_cm.c:460:37: sparse: got unsigned int const [usertype] flow_label >> drivers/infiniband/hw/qedr/qedr_roce_cm.c:470:30: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned char [usertype] tos @@ got restricted __be32 [usertype] @@ drivers/infiniband/hw/qedr/qedr_roce_cm.c:470:30: sparse: expected unsigned char [usertype] tos drivers/infiniband/hw/qedr/qedr_roce_cm.c:470:30: sparse: got restricted __be32 [usertype] >> drivers/infiniband/hw/qedr/qedr_roce_cm.c:475:32: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __be32 [usertype] saddr @@ got unsigned int [assigned] [usertype] ipv4_addr @@ drivers/infiniband/hw/qedr/qedr_roce_cm.c:475:32: sparse: expected restricted __be32 [usertype] saddr drivers/infiniband/hw/qedr/qedr_roce_cm.c:475:32: sparse: got unsigned int [assigned] [usertype] ipv4_addr >> drivers/infiniband/hw/qedr/qedr_roce_cm.c:477:32: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __be32 [usertype] daddr @@ got unsigned int [assigned] [usertype] ipv4_addr @@ drivers/infiniband/hw/qedr/qedr_roce_cm.c:477:32: sparse: expected restricted __be32 [usertype] daddr drivers/infiniband/hw/qedr/qedr_roce_cm.c:477:32: sparse: got unsigned int [assigned] [usertype] ipv4_addr -- >> drivers/infiniband/hw/qedr/main.c:245:30: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __be64 [usertype] node_guid @@ got unsigned long long [usertype] node_guid @@ drivers/infiniband/hw/qedr/main.c:245:30: sparse: expected restricted __be64 [usertype] node_guid drivers/infiniband/hw/qedr/main.c:245:30: sparse: got unsigned long long [usertype] node_guid >> drivers/infiniband/hw/qedr/main.c:447:51: sparse: sparse: cast from restricted __le32 >> drivers/infiniband/hw/qedr/main.c:447:51: sparse: sparse: restricted __le32 degrades to integer drivers/infiniband/hw/qedr/main.c:643:31: sparse: sparse: cast from restricted __le32 drivers/infiniband/hw/qedr/main.c:643:74: sparse: sparse: restricted __le32 degrades to integer -- >> drivers/infiniband/hw/qedr/verbs.c:127:30: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __be64 [usertype] sys_image_guid @@ got unsigned long long [usertype] sys_image_guid @@ drivers/infiniband/hw/qedr/verbs.c:127:30: sparse: expected restricted __be64 [usertype] sys_image_guid drivers/infiniband/hw/qedr/verbs.c:127:30: sparse: got unsigned long long [usertype] sys_image_guid >> drivers/infiniband/hw/qedr/verbs.c:1015:34: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] icid @@ got unsigned short [usertype] icid @@ drivers/infiniband/hw/qedr/verbs.c:1015:34: sparse: expected restricted __le16 [usertype] icid drivers/infiniband/hw/qedr/verbs.c:1015:34: sparse: got unsigned short [usertype] icid >> drivers/infiniband/hw/qedr/verbs.c:1400:42: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] icid @@ got int @@ drivers/infiniband/hw/qedr/verbs.c:1400:42: sparse: expected restricted __le16 [usertype] icid drivers/infiniband/hw/qedr/verbs.c:1400:42: sparse: got int drivers/infiniband/hw/qedr/verbs.c:1410:42: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] icid @@ got unsigned short [usertype] icid @@ drivers/infiniband/hw/qedr/verbs.c:1410:42: sparse: expected restricted __le16 [usertype] icid drivers/infiniband/hw/qedr/verbs.c:1410:42: sparse: got unsigned short [usertype] icid drivers/infiniband/hw/qedr/verbs.c:1990:34: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] icid @@ got unsigned short [usertype] icid @@ drivers/infiniband/hw/qedr/verbs.c:1990:34: sparse: expected restricted __le16 [usertype] icid drivers/infiniband/hw/qedr/verbs.c:1990:34: sparse: got unsigned short [usertype] icid drivers/infiniband/hw/qedr/verbs.c:2001:34: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] icid @@ got unsigned short [usertype] icid @@ drivers/infiniband/hw/qedr/verbs.c:2001:34: sparse: expected restricted __le16 [usertype] icid drivers/infiniband/hw/qedr/verbs.c:2001:34: sparse: got unsigned short [usertype] icid drivers/infiniband/hw/qedr/verbs.c:2004:41: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] icid @@ got unsigned short [usertype] icid @@ drivers/infiniband/hw/qedr/verbs.c:2004:41: sparse: expected restricted __le16 [usertype] icid drivers/infiniband/hw/qedr/verbs.c:2004:41: sparse: got unsigned short [usertype] icid >> drivers/infiniband/hw/qedr/verbs.c:2005:42: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] value @@ got unsigned long @@ drivers/infiniband/hw/qedr/verbs.c:2005:42: sparse: expected restricted __le16 [usertype] value drivers/infiniband/hw/qedr/verbs.c:2005:42: sparse: got unsigned long >> drivers/infiniband/hw/qedr/verbs.c:3275:22: sparse: sparse: cast from restricted __le64 >> drivers/infiniband/hw/qedr/verbs.c:3275:20: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] @@ got restricted __be64 [usertype] @@ drivers/infiniband/hw/qedr/verbs.c:3275:20: sparse: expected unsigned long long [usertype] drivers/infiniband/hw/qedr/verbs.c:3275:20: sparse: got restricted __be64 [usertype] >> drivers/infiniband/hw/qedr/verbs.c:3435:24: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] hi @@ got unsigned int [usertype] @@ drivers/infiniband/hw/qedr/verbs.c:3435:24: sparse: expected restricted __le32 [usertype] hi drivers/infiniband/hw/qedr/verbs.c:3435:24: sparse: got unsigned int [usertype] >> drivers/infiniband/hw/qedr/verbs.c:3436:24: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] lo @@ got unsigned int [usertype] @@ drivers/infiniband/hw/qedr/verbs.c:3436:24: sparse: expected restricted __le32 [usertype] lo drivers/infiniband/hw/qedr/verbs.c:3436:24: sparse: got unsigned int [usertype] >> drivers/infiniband/hw/qedr/verbs.c:3437:22: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] l_key @@ got unsigned int const [usertype] key @@ drivers/infiniband/hw/qedr/verbs.c:3437:22: sparse: expected restricted __le32 [usertype] l_key drivers/infiniband/hw/qedr/verbs.c:3437:22: sparse: got unsigned int const [usertype] key >> drivers/infiniband/hw/qedr/verbs.c:3456:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] length_lo @@ got unsigned long long [usertype] length @@ drivers/infiniband/hw/qedr/verbs.c:3456:26: sparse: expected restricted __le32 [usertype] length_lo drivers/infiniband/hw/qedr/verbs.c:3456:26: sparse: got unsigned long long [usertype] length drivers/infiniband/hw/qedr/verbs.c:3457:28: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] hi @@ got unsigned int [usertype] @@ drivers/infiniband/hw/qedr/verbs.c:3457:28: sparse: expected restricted __le32 [usertype] hi drivers/infiniband/hw/qedr/verbs.c:3457:28: sparse: got unsigned int [usertype] drivers/infiniband/hw/qedr/verbs.c:3458:28: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] lo @@ got unsigned int [usertype] @@ drivers/infiniband/hw/qedr/verbs.c:3458:28: sparse: expected restricted __le32 [usertype] lo drivers/infiniband/hw/qedr/verbs.c:3458:28: sparse: got unsigned int [usertype] >> drivers/infiniband/hw/qedr/verbs.c:3586:54: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] bytes_len @@ got restricted __le32 [usertype] length @@ drivers/infiniband/hw/qedr/verbs.c:3586:54: sparse: expected unsigned int [usertype] bytes_len drivers/infiniband/hw/qedr/verbs.c:3586:54: sparse: got restricted __le32 [usertype] length drivers/infiniband/hw/qedr/verbs.c:3599:54: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] bytes_len @@ got restricted __le32 [usertype] length @@ drivers/infiniband/hw/qedr/verbs.c:3599:54: sparse: expected unsigned int [usertype] bytes_len drivers/infiniband/hw/qedr/verbs.c:3599:54: sparse: got restricted __le32 [usertype] length drivers/infiniband/hw/qedr/verbs.c:3612:54: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] bytes_len @@ got restricted __le32 [usertype] length @@ drivers/infiniband/hw/qedr/verbs.c:3612:54: sparse: expected unsigned int [usertype] bytes_len drivers/infiniband/hw/qedr/verbs.c:3612:54: sparse: got restricted __le32 [usertype] length >> drivers/infiniband/hw/qedr/verbs.c:3625:34: sparse: sparse: cast from restricted __be32 >> drivers/infiniband/hw/qedr/verbs.c:3625:34: sparse: sparse: cast from restricted __le32 >> drivers/infiniband/hw/qedr/verbs.c:3625:32: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] imm_data @@ got restricted __be32 [usertype] @@ drivers/infiniband/hw/qedr/verbs.c:3625:32: sparse: expected restricted __le32 [usertype] imm_data drivers/infiniband/hw/qedr/verbs.c:3625:32: sparse: got restricted __be32 [usertype] drivers/infiniband/hw/qedr/verbs.c:3632:54: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] bytes_len @@ got restricted __le32 [usertype] length @@ drivers/infiniband/hw/qedr/verbs.c:3632:54: sparse: expected unsigned int [usertype] bytes_len drivers/infiniband/hw/qedr/verbs.c:3632:54: sparse: got restricted __le32 [usertype] length drivers/infiniband/hw/qedr/verbs.c:3645:54: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] bytes_len @@ got restricted __le32 [usertype] length @@ drivers/infiniband/hw/qedr/verbs.c:3645:54: sparse: expected unsigned int [usertype] bytes_len drivers/infiniband/hw/qedr/verbs.c:3645:54: sparse: got restricted __le32 [usertype] length drivers/infiniband/hw/qedr/verbs.c:3662:54: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] bytes_len @@ got restricted __le32 [usertype] length @@ drivers/infiniband/hw/qedr/verbs.c:3662:54: sparse: expected unsigned int [usertype] bytes_len drivers/infiniband/hw/qedr/verbs.c:3662:54: sparse: got restricted __le32 [usertype] length >> drivers/infiniband/hw/qedr/verbs.c:3699:33: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] inv_l_key @@ got unsigned int const [usertype] invalidate_rkey @@ drivers/infiniband/hw/qedr/verbs.c:3699:33: sparse: expected restricted __le32 [usertype] inv_l_key drivers/infiniband/hw/qedr/verbs.c:3699:33: sparse: got unsigned int const [usertype] invalidate_rkey >> drivers/infiniband/hw/qedr/verbs.c:3781:42: sparse: sparse: restricted __le16 degrades to integer drivers/infiniband/hw/qedr/verbs.c:3980:42: sparse: sparse: restricted __le16 degrades to integer drivers/infiniband/hw/qedr/verbs.c:4009:43: sparse: sparse: cast from restricted __le32 >> drivers/infiniband/hw/qedr/verbs.c:4009:43: sparse: sparse: restricted __le32 degrades to integer >> drivers/infiniband/hw/qedr/verbs.c:4105:68: sparse: sparse: incorrect type in argument 6 (different base types) @@ expected unsigned short [usertype] hw_cons @@ got restricted __le16 [usertype] sq_cons @@ drivers/infiniband/hw/qedr/verbs.c:4105:68: sparse: expected unsigned short [usertype] hw_cons drivers/infiniband/hw/qedr/verbs.c:4105:68: sparse: got restricted __le16 [usertype] sq_cons drivers/infiniband/hw/qedr/verbs.c:4113:68: sparse: sparse: incorrect type in argument 6 (different base types) @@ expected unsigned short [usertype] hw_cons @@ got restricted __le16 [usertype] sq_cons @@ drivers/infiniband/hw/qedr/verbs.c:4113:68: sparse: expected unsigned short [usertype] hw_cons drivers/infiniband/hw/qedr/verbs.c:4113:68: sparse: got restricted __le16 [usertype] sq_cons drivers/infiniband/hw/qedr/verbs.c:4120:38: sparse: sparse: restricted __le16 degrades to integer drivers/infiniband/hw/qedr/verbs.c:4193:67: sparse: sparse: incorrect type in argument 6 (different base types) @@ expected unsigned short [usertype] hw_cons @@ got restricted __le16 [usertype] sq_cons @@ drivers/infiniband/hw/qedr/verbs.c:4193:67: sparse: expected unsigned short [usertype] hw_cons drivers/infiniband/hw/qedr/verbs.c:4193:67: sparse: got restricted __le16 [usertype] sq_cons >> drivers/infiniband/hw/qedr/verbs.c:4378:46: sparse: sparse: incorrect type in argument 5 (different base types) @@ expected unsigned short [usertype] hw_cons @@ got restricted __le16 [usertype] rq_cons_or_srq_id @@ drivers/infiniband/hw/qedr/verbs.c:4378:46: sparse: expected unsigned short [usertype] hw_cons drivers/infiniband/hw/qedr/verbs.c:4378:46: sparse: got restricted __le16 [usertype] rq_cons_or_srq_id drivers/infiniband/hw/qedr/verbs.c: note: in included file (through arch/loongarch/include/asm/io.h, arch/loongarch/include/asm/pgtable.h, arch/loongarch/include/asm/uaccess.h, ...): include/asm-generic/io.h:236:22: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned long long [usertype] value @@ got restricted __le64 [usertype] @@ include/asm-generic/io.h:236:22: sparse: expected unsigned long long [usertype] value include/asm-generic/io.h:236:22: sparse: got restricted __le64 [usertype] >> drivers/infiniband/hw/qedr/verbs.c:1180:45: sparse: sparse: cast to restricted __be32 drivers/infiniband/hw/qedr/verbs.c:1181:45: sparse: sparse: cast to restricted __be32 >> drivers/infiniband/hw/qedr/verbs.c:4240:33: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __be32 [usertype] imm_data @@ got unsigned int [usertype] @@ drivers/infiniband/hw/qedr/verbs.c:4240:33: sparse: expected restricted __be32 [usertype] imm_data drivers/infiniband/hw/qedr/verbs.c:4240:33: sparse: got unsigned int [usertype] vim +113 drivers/infiniband/hw/qedr/qedr_roce_cm.c 048867793046e6b drivers/infiniband/hw/qedr/qedr_cm.c Ram Amrani 2016-10-10 95 0089985e2505773 drivers/infiniband/hw/qedr/qedr_roce_cm.c Bart Van Assche 2017-10-11 96 static void qedr_ll2_complete_rx_packet(void *cxt, 0518c12f1f79dc2 drivers/infiniband/hw/qedr/qedr_cm.c Michal Kalderon 2017-06-09 97 struct qed_ll2_comp_rx_data *data) 048867793046e6b drivers/infiniband/hw/qedr/qedr_cm.c Ram Amrani 2016-10-10 98 { 0518c12f1f79dc2 drivers/infiniband/hw/qedr/qedr_cm.c Michal Kalderon 2017-06-09 99 struct qedr_dev *dev = (struct qedr_dev *)cxt; 048867793046e6b drivers/infiniband/hw/qedr/qedr_cm.c Ram Amrani 2016-10-10 100 struct qedr_cq *cq = dev->gsi_rqcq; 048867793046e6b drivers/infiniband/hw/qedr/qedr_cm.c Ram Amrani 2016-10-10 101 struct qedr_qp *qp = dev->gsi_qp; 048867793046e6b drivers/infiniband/hw/qedr/qedr_cm.c Ram Amrani 2016-10-10 102 unsigned long flags; 048867793046e6b drivers/infiniband/hw/qedr/qedr_cm.c Ram Amrani 2016-10-10 103 048867793046e6b drivers/infiniband/hw/qedr/qedr_cm.c Ram Amrani 2016-10-10 104 spin_lock_irqsave(&qp->q_lock, flags); 048867793046e6b drivers/infiniband/hw/qedr/qedr_cm.c Ram Amrani 2016-10-10 105 0518c12f1f79dc2 drivers/infiniband/hw/qedr/qedr_cm.c Michal Kalderon 2017-06-09 106 qp->rqe_wr_id[qp->rq.gsi_cons].rc = data->u.data_length_error ? 0518c12f1f79dc2 drivers/infiniband/hw/qedr/qedr_cm.c Michal Kalderon 2017-06-09 107 -EINVAL : 0; efe63c220e57ce7 drivers/infiniband/hw/qedr/qedr_cm.c Amrani, Ram 2017-10-03 108 qp->rqe_wr_id[qp->rq.gsi_cons].vlan = data->vlan; 0518c12f1f79dc2 drivers/infiniband/hw/qedr/qedr_cm.c Michal Kalderon 2017-06-09 109 /* note: length stands for data length i.e. GRH is excluded */ 0518c12f1f79dc2 drivers/infiniband/hw/qedr/qedr_cm.c Michal Kalderon 2017-06-09 110 qp->rqe_wr_id[qp->rq.gsi_cons].sg_list[0].length = 0518c12f1f79dc2 drivers/infiniband/hw/qedr/qedr_cm.c Michal Kalderon 2017-06-09 111 data->length.data_length; 0518c12f1f79dc2 drivers/infiniband/hw/qedr/qedr_cm.c Michal Kalderon 2017-06-09 112 *((u32 *)&qp->rqe_wr_id[qp->rq.gsi_cons].smac[0]) = 0518c12f1f79dc2 drivers/infiniband/hw/qedr/qedr_cm.c Michal Kalderon 2017-06-09 @113 ntohl(data->opaque_data_0); 0518c12f1f79dc2 drivers/infiniband/hw/qedr/qedr_cm.c Michal Kalderon 2017-06-09 114 *((u16 *)&qp->rqe_wr_id[qp->rq.gsi_cons].smac[4]) = 0518c12f1f79dc2 drivers/infiniband/hw/qedr/qedr_cm.c Michal Kalderon 2017-06-09 @115 ntohs((u16)data->opaque_data_1); 048867793046e6b drivers/infiniband/hw/qedr/qedr_cm.c Ram Amrani 2016-10-10 116 048867793046e6b drivers/infiniband/hw/qedr/qedr_cm.c Ram Amrani 2016-10-10 117 qedr_inc_sw_gsi_cons(&qp->rq); 048867793046e6b drivers/infiniband/hw/qedr/qedr_cm.c Ram Amrani 2016-10-10 118 048867793046e6b drivers/infiniband/hw/qedr/qedr_cm.c Ram Amrani 2016-10-10 119 spin_unlock_irqrestore(&qp->q_lock, flags); 048867793046e6b drivers/infiniband/hw/qedr/qedr_cm.c Ram Amrani 2016-10-10 120 91bff997db2ec04 drivers/infiniband/hw/qedr/qedr_cm.c Ram Amrani 2017-01-24 121 if (cq->ibcq.comp_handler) 048867793046e6b drivers/infiniband/hw/qedr/qedr_cm.c Ram Amrani 2016-10-10 122 (*cq->ibcq.comp_handler) (&cq->ibcq, cq->ibcq.cq_context); 048867793046e6b drivers/infiniband/hw/qedr/qedr_cm.c Ram Amrani 2016-10-10 123 } 048867793046e6b drivers/infiniband/hw/qedr/qedr_cm.c Ram Amrani 2016-10-10 124 :::::: The code at line 113 was first introduced by commit :::::: 0518c12f1f79dc2f2020836974c577404e42ae89 qed*: LL2 callback operations :::::: TO: Michal Kalderon :::::: CC: David S. Miller -- 0-DAY CI Kernel Test Service https://01.org/lkp