Hi Rui, I love your patch! Perhaps something to improve: [auto build test WARNING on usb/usb-testing] [also build test WARNING on robh/for-next v5.12 next-20210504] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Rui-Miguel-Silva/usb-isp1760-extend-support-for-isp1763/20210504-182126 base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-testing config: h8300-randconfig-s031-20210504 (attached as .config) compiler: h8300-linux-gcc (GCC) 9.3.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.3-341-g8af24329-dirty # https://github.com/0day-ci/linux/commit/e20d3193f1d1eef8bfdf1eb6a4001a916d4c463c git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Rui-Miguel-Silva/usb-isp1760-extend-support-for-isp1763/20210504-182126 git checkout e20d3193f1d1eef8bfdf1eb6a4001a916d4c463c # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' W=1 ARCH=h8300 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot sparse warnings: (new ones prefixed by >>) drivers/usb/isp1760/isp1760-hcd.c:300:32: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:300:32: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:300:32: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:300:32: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:300:32: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:300:32: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c: note: in included file (through include/linux/io.h, include/linux/irq.h, include/asm-generic/hardirq.h, ...): arch/h8300/include/asm/io.h:26:18: sparse: sparse: cast removes address space '__iomem' of expression drivers/usb/isp1760/isp1760-hcd.c:321:23: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:321:23: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:321:23: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:321:23: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:321:23: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:321:23: sparse: sparse: cast to restricted __le32 arch/h8300/include/asm/io.h:26:18: sparse: sparse: cast removes address space '__iomem' of expression drivers/usb/isp1760/isp1760-hcd.c:397:38: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [usertype] b @@ got restricted __le32 [usertype] @@ drivers/usb/isp1760/isp1760-hcd.c:397:38: sparse: expected unsigned int [usertype] b drivers/usb/isp1760/isp1760-hcd.c:397:38: sparse: got restricted __le32 [usertype] drivers/usb/isp1760/isp1760-hcd.c:418:30: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned int [usertype] b @@ got restricted __le32 [usertype] @@ drivers/usb/isp1760/isp1760-hcd.c:418:30: sparse: expected unsigned int [usertype] b drivers/usb/isp1760/isp1760-hcd.c:418:30: sparse: got restricted __le32 [usertype] drivers/usb/isp1760/isp1760-hcd.c:487:20: sparse: sparse: cast to restricted __le32 >> drivers/usb/isp1760/isp1760-hcd.c:487:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:487:20: sparse: sparse: cast to restricted __le32 >> drivers/usb/isp1760/isp1760-hcd.c:487:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:487:20: sparse: sparse: cast to restricted __le32 >> drivers/usb/isp1760/isp1760-hcd.c:487:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:487:20: sparse: sparse: cast to restricted __le32 >> drivers/usb/isp1760/isp1760-hcd.c:487:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:487:20: sparse: sparse: cast to restricted __le32 >> drivers/usb/isp1760/isp1760-hcd.c:487:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:487:20: sparse: sparse: cast to restricted __le32 >> drivers/usb/isp1760/isp1760-hcd.c:487:20: sparse: sparse: cast from restricted __dw >> drivers/usb/isp1760/isp1760-hcd.c:487:18: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __dw [usertype] dw0 @@ got unsigned int @@ drivers/usb/isp1760/isp1760-hcd.c:487:18: sparse: expected restricted __dw [usertype] dw0 drivers/usb/isp1760/isp1760-hcd.c:487:18: sparse: got unsigned int drivers/usb/isp1760/isp1760-hcd.c:488:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:488:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:488:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:488:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:488:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:488:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:488:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:488:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:488:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:488:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:488:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:488:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:488:18: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __dw [usertype] dw1 @@ got unsigned int @@ drivers/usb/isp1760/isp1760-hcd.c:488:18: sparse: expected restricted __dw [usertype] dw1 drivers/usb/isp1760/isp1760-hcd.c:488:18: sparse: got unsigned int drivers/usb/isp1760/isp1760-hcd.c:489:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:489:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:489:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:489:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:489:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:489:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:489:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:489:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:489:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:489:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:489:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:489:20: sparse: sparse: cast from restricted __dw >> drivers/usb/isp1760/isp1760-hcd.c:489:18: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __dw [usertype] dw2 @@ got unsigned int @@ drivers/usb/isp1760/isp1760-hcd.c:489:18: sparse: expected restricted __dw [usertype] dw2 drivers/usb/isp1760/isp1760-hcd.c:489:18: sparse: got unsigned int drivers/usb/isp1760/isp1760-hcd.c:490:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:490:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:490:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:490:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:490:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:490:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:490:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:490:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:490:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:490:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:490:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:490:20: sparse: sparse: cast from restricted __dw >> drivers/usb/isp1760/isp1760-hcd.c:490:18: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __dw [usertype] dw3 @@ got unsigned int @@ drivers/usb/isp1760/isp1760-hcd.c:490:18: sparse: expected restricted __dw [usertype] dw3 drivers/usb/isp1760/isp1760-hcd.c:490:18: sparse: got unsigned int drivers/usb/isp1760/isp1760-hcd.c:491:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:491:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:491:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:491:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:491:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:491:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:491:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:491:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:491:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:491:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:491:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:491:20: sparse: sparse: cast from restricted __dw >> drivers/usb/isp1760/isp1760-hcd.c:491:18: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __dw [usertype] dw4 @@ got unsigned int @@ drivers/usb/isp1760/isp1760-hcd.c:491:18: sparse: expected restricted __dw [usertype] dw4 drivers/usb/isp1760/isp1760-hcd.c:491:18: sparse: got unsigned int drivers/usb/isp1760/isp1760-hcd.c:492:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:492:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:492:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:492:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:492:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:492:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:492:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:492:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:492:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:492:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:492:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:492:20: sparse: sparse: cast from restricted __dw >> drivers/usb/isp1760/isp1760-hcd.c:492:18: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __dw [usertype] dw5 @@ got unsigned int @@ drivers/usb/isp1760/isp1760-hcd.c:492:18: sparse: expected restricted __dw [usertype] dw5 drivers/usb/isp1760/isp1760-hcd.c:492:18: sparse: got unsigned int drivers/usb/isp1760/isp1760-hcd.c:493:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:493:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:493:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:493:20: sparse: sparse: cast from restricted __dw drivers/usb/isp1760/isp1760-hcd.c:493:20: sparse: sparse: cast to restricted __le32 drivers/usb/isp1760/isp1760-hcd.c:493:20: sparse: sparse: too many warnings vim +487 drivers/usb/isp1760/isp1760-hcd.c 478 479 static void isp1763_ptd_read(struct usb_hcd *hcd, u32 ptd_offset, u32 slot, 480 struct ptd *ptd) 481 { 482 u16 src_offset = ptd_offset + slot * sizeof(*ptd); 483 struct ptd le32_ptd; 484 485 isp1763_mem_read(hcd, src_offset, (u16 *)&le32_ptd, sizeof(le32_ptd)); 486 /* Normalize the data obtained */ > 487 ptd->dw0 = le32_to_cpu(le32_ptd.dw0); 488 ptd->dw1 = le32_to_cpu(le32_ptd.dw1); > 489 ptd->dw2 = le32_to_cpu(le32_ptd.dw2); > 490 ptd->dw3 = le32_to_cpu(le32_ptd.dw3); > 491 ptd->dw4 = le32_to_cpu(le32_ptd.dw4); > 492 ptd->dw5 = le32_to_cpu(le32_ptd.dw5); 493 ptd->dw6 = le32_to_cpu(le32_ptd.dw6); 494 ptd->dw7 = le32_to_cpu(le32_ptd.dw7); 495 } 496 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org