Hi Nitesh, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on next-20220422] [cannot apply to axboe-block/for-next device-mapper-dm/for-next linus/master v5.18-rc4 v5.18-rc3 v5.18-rc2 v5.18-rc4] [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/intel-lab-lkp/linux/commits/Nitesh-Shetty/block-Introduce-queue-limits-for-copy-offload-support/20220426-201825 base: e7d6987e09a328d4a949701db40ef63fbb970670 config: s390-randconfig-s032-20220427 (https://download.01.org/0day-ci/archive/20220428/202204282136.kqIaq8aK-lkp@xxxxxxxxx/config) compiler: s390-linux-gcc (GCC) 11.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.4-dirty # https://github.com/intel-lab-lkp/linux/commit/e029014185aff1d7c8facf6e19447487c6ce2b93 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Nitesh-Shetty/block-Introduce-queue-limits-for-copy-offload-support/20220426-201825 git checkout e029014185aff1d7c8facf6e19447487c6ce2b93 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=s390 SHELL=/bin/bash drivers/md/ drivers/nvme/host/ drivers/nvme/target/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@xxxxxxxxx> sparse warnings: (new ones prefixed by >>) >> drivers/nvme/host/core.c:803:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] dspec @@ got restricted __le32 [usertype] @@ drivers/nvme/host/core.c:803:26: sparse: expected restricted __le16 [usertype] dspec drivers/nvme/host/core.c:803:26: sparse: got restricted __le32 [usertype] vim +803 drivers/nvme/host/core.c 739 740 static inline blk_status_t nvme_setup_copy_write(struct nvme_ns *ns, 741 struct request *req, struct nvme_command *cmnd) 742 { 743 struct nvme_ctrl *ctrl = ns->ctrl; 744 struct nvme_copy_range *range = NULL; 745 struct bio *bio = req->bio; 746 struct nvme_copy_token *token = bvec_kmap_local(&bio->bi_io_vec[0]); 747 sector_t src_sector, dst_sector, n_sectors; 748 u64 src_lba, dst_lba, n_lba; 749 unsigned short nr_range = 1; 750 u16 control = 0; 751 u32 dsmgmt = 0; 752 753 if (unlikely(memcmp(token->subsys, "nvme", 4))) 754 return BLK_STS_NOTSUPP; 755 if (unlikely(token->ns != ns)) 756 return BLK_STS_NOTSUPP; 757 758 src_sector = token->src_sector; 759 dst_sector = bio->bi_iter.bi_sector; 760 n_sectors = token->sectors; 761 if (WARN_ON(n_sectors != bio->bi_iter.bi_size >> 9)) 762 return BLK_STS_NOTSUPP; 763 764 src_lba = nvme_sect_to_lba(ns, src_sector); 765 dst_lba = nvme_sect_to_lba(ns, dst_sector); 766 n_lba = nvme_sect_to_lba(ns, n_sectors); 767 768 if (unlikely(nvme_lba_to_sect(ns, src_lba) != src_sector) || 769 unlikely(nvme_lba_to_sect(ns, dst_lba) != dst_sector) || 770 unlikely(nvme_lba_to_sect(ns, n_lba) != n_sectors)) 771 return BLK_STS_NOTSUPP; 772 773 if (WARN_ON(!n_lba)) 774 return BLK_STS_NOTSUPP; 775 776 if (req->cmd_flags & REQ_FUA) 777 control |= NVME_RW_FUA; 778 779 if (req->cmd_flags & REQ_FAILFAST_DEV) 780 control |= NVME_RW_LR; 781 782 memset(cmnd, 0, sizeof(*cmnd)); 783 cmnd->copy.opcode = nvme_cmd_copy; 784 cmnd->copy.nsid = cpu_to_le32(ns->head->ns_id); 785 cmnd->copy.sdlba = cpu_to_le64(dst_lba); 786 787 range = kmalloc_array(nr_range, sizeof(*range), 788 GFP_ATOMIC | __GFP_NOWARN); 789 if (!range) 790 return BLK_STS_RESOURCE; 791 792 range[0].slba = cpu_to_le64(src_lba); 793 range[0].nlb = cpu_to_le16(n_lba - 1); 794 795 cmnd->copy.nr_range = 0; 796 797 req->special_vec.bv_page = virt_to_page(range); 798 req->special_vec.bv_offset = offset_in_page(range); 799 req->special_vec.bv_len = sizeof(*range) * nr_range; 800 req->rq_flags |= RQF_SPECIAL_PAYLOAD; 801 802 cmnd->copy.control = cpu_to_le16(control); > 803 cmnd->copy.dspec = cpu_to_le32(dsmgmt); 804 805 return BLK_STS_OK; 806 } 807 -- 0-DAY CI Kernel Test Service https://01.org/lkp